ARM裸机开发 笔记

  • 处理器中断处理的过程:中断请求 -> 中断响应 -> 保护现场 -> 中断服务 -> 恢复现场 -> 中断返回。
  • 外部中断请求(IRQ)和快速中断请求(FIQ)的异常向量地址分别为?0x00000018、0x0000001C
  • ARM的31个通用寄存器R0~R15中,程序计数器PC为R15、程序链接寄存器LR为R14、堆栈指针寄存器SP为R13
    • R13(SP,栈指针):R13是栈指针寄存器,用于存储当前栈的地址。它指向当前栈帧的顶部,用于管理函数调用过程中的局部变量和返回地址。
    • R14(LR,链接寄存器):R14是链接寄存器,用于存储函数调用的返回地址。当一个函数调用另一个函数时,R14保存了调用者函数的返回地址,以便在被调用函数执行完毕后返回到正确的位置。
    • R15(PC,程序计数器):R15是程序计数器寄存器,用于存储下一条要执行的指令的地址。它指示了当前正在执行的指令的位置,并在每个指令执行后自动递增,以指向下一条要执行的指令。
  • GPIO(通用输入/输出)口一般具有以下三个寄存器:
    1. 数据寄存器(Data Register):该寄存器用于读取或写入GPIO口的数据。通过读取数据寄存器,可以获取GPIO口当前的输入状态;通过写入数据寄存器,可以控制GPIO口输出的电平状态。
    2. 方向寄存器(Direction Register):该寄存器用于配置GPIO口的方向,即输入还是输出。通过设置方向寄存器的位,可以将相应的GPIO口配置为输入或输出模式。输入模式表示GPIO口用于接收外部信号;输出模式表示GPIO口用于输出信号控制外部设备。
    3. 中断使能寄存器(Interrupt Enable Register):该寄存器用于配置GPIO口的中断使能。通过设置中断使能寄存器的位,可以启用或禁用GPIO口的中断功能。当GPIO口的输入状态发生变化时,如果中断使能位被设置,则会触发相应的中断事件。
  • GPIO的输入输出模式: https://www.eet-china.com/mp/a151867.htmlSTM32的8种GPIO输入输出模式_stm32 gpio输入输出模式及对应的c语言宏-CSDN博客
    输入模式:浮空输入、上拉输入、下拉输入、模拟输入。
    输出模式:开漏输出、推挽输出、开漏复用输出、推挽复用输出。
  • UART、USB、SPI、IIC:
点击查看代码
UART(通用异步收发传输器)、USB(通用串行总线)、SPI(串行外设接口)和 I2C(Inter-Integrated Circuit,又称为IIC)是常见的总线接口标准,用于不同设备之间的数据通信。它们在工作原理、传输速率、通信协议和应用领域上有一些异同点,具体如下:
工作原理:
UART:UART是一种异步串行通信接口,使用单个数据线(TX、RX)进行数据传输。数据通过起始位、数据位、校验位和停止位的组合来表示。
USB:USB是一种同步串行通信接口,使用多个数据线进行数据传输,包括数据线、电源线和地线。USB采用主从设备模式,通过控制传输和批量传输来进行数据交互。
SPI:SPI是一种同步串行通信接口,使用多个数据线进行数据传输,包括一个主设备和一个或多个从设备。SPI通过主设备发起数据传输,并通过时钟信号同步数据传输。
I2C:I2C是一种同步串行通信接口,使用两条数据线(SDA、SCL)进行数据传输。I2C使用开漏极性方式来实现多个设备在同一总线上的通信。
传输速率:
UART:UART的传输速率相对较低,一般在几百位每秒(bps)到数十兆位每秒(Mbps)之间。
USB:USB的传输速率较高,可达到几百 Mbps 或几 Gbps,具体速率取决于USB版本和设备的性能。
SPI:SPI的传输速率相对较高,一般可以达到几百 Kbps 到几十 Mbps 的范围。
I2C:I2C的传输速率较低,一般在几百 Kbps 的范围内。
通信协议:
UART:UART通常使用异步串行通信协议,其中包括数据的起始位、数据位、校验位和停止位。
USB:USB通信采用分组化的同步通信协议,包括控制传输、批量传输、中断传输和等时传输等不同类型。
SPI:SPI通信使用全双工同步传输,通过主设备和从设备之间的数据交互来实现通信。
I2C:I2C通信使用主从模式,通过地址识别和数据交换来实现设备之间的通信。
应用领域:
UART:UART常用于串行通信领域,如串口通信、调试串口、传感器接口等。
USB:USB广泛应用于计算机和外部设备之间的连接,如打印机、键盘、鼠标、存储设备等。
SPI:SPI常用于与外设进行通信,如存储器、显示屏、传感器、芯片等。
I2C:I2C常用于连接集成电路和外部设备,如传感器、实时时钟、存储器等。

SPI Serial Peripheral Interface: 串行,主从关系,有clock,
• Pros: 通信简单, higher transfer rate (I2C), sent receive at the same time
• Cons: use 4 wires, no acknowledgement of data received, no error checking, single master
UART universal asynchronous receiver-transmitter:来自CPU的并行信号转成串行UART进行传输
• Pros: simple (two wires), no clock signal, error checking (parity), structure of the data packet can be changed.
• Cons: size of data frame limited to max. 9 bits, does not support multiple slaves
I2C Inter-Integrated Circuit:
connect multiple slaves to multiple masters, 2 wires,data is transferred in messages, messages are broken up into frames of data,The message also includes start and stop conditions, read/write bits, and ACK/NACK bits between each data frame
• Pros: 2 wires, multiple masters and slaves, transfer confirmation, well used
• Cons: slower data transfer than SPI, limited data frame size (8 bits), more complicated than SPI

  • 什么是异步串行?什么是同步串行?
    异步串行和同步串行是串行通信中的两种传输方式,其主要区别在于数据传输的时钟信号的同步方式。

    • 异步串行(Asynchronous Serial)是一种串行通信方式,其中数据传输不依赖于预先定义的时钟信号。在异步串行通信中,每个数据帧的开始和结束由起始位和停止位标识,数据位之间的时间间隔是可变的。发送端和接收端之间的数据传输通过启动和停止位的检测来同步。
      异步串行通信常用于较低速率的数据传输,如串口通信。它的优点是简单、灵活,并且对时钟的稳定性要求较低。但由于数据的同步需要依赖起始位和停止位的检测,因此在高速传输和长距离传输的情况下,可能会受到噪声和时钟漂移的影响。
    • 同步串行(Synchronous Serial)是一种串行通信方式,其中数据传输依赖于预先定义的时钟信号。在同步串行通信中,数据位的传输和时钟信号是相互关联的,发送端和接收端根据共享的时钟信号来进行数据的传输和接收。
      同步串行通信常用于较高速率的数据传输,如SPI和I2C。它的优点是在高速传输和长距离传输时具有较好的稳定性和可靠性,因为数据的传输和接收是在事先确定的时钟信号的同步下进行的。然而,同步串行通信在硬件上要求更复杂,发送端和接收端之间需要共享时钟信号,并且要求时钟信号的频率和相位保持一致。
  • UART一帧可以传5/6/7/8位,IIC必须是8位,SPI可以8/16位。

  • DMA(Direct Memory Access,直接内存访问)是一种计算机系统中用于实现高速数据传输的技术。它允许外部设备(如网络适配器、硬盘控制器等)直接访问主存储器,而不需要CPU的干预,从而提高数据传输的效率和性能。

posted @ 2023-07-06 21:11  哎呦丶不错哦  阅读(57)  评论(0)    收藏  举报