1. UART(Universal Asynchronous Receiver/Transmitter)
工作原理:
- 异步通信:UART不需要时钟信号来同步发送和接收数据,而是使用起始位、数据位、奇偶校验位和停止位来同步数据传输。
- 数据帧结构:典型的数据帧包括一个起始位(低电平)、5-9个数据位、一个可选的奇偶校验位和一个或多个停止位(高电平)。
- 全双工通信:可以同时发送和接收数据。
时序图:
| Start | Data Bits | Parity | Stop |
|-------|-----------|--------|------|
| 0 | 1100101 | 1 | 1 |
使用方法:
- 配置波特率:发送和接收双方需要配置相同的波特率(例如9600, 115200等)。
- 数据帧格式:确保双方使用相同的数据帧格式(数据位数、奇偶校验和停止位数)。
- 连接:将发送端的TX连接到接收端的RX,接收端的TX连接到发送端的RX,并确保共地。
2. SPI(Serial Peripheral Interface)
工作原理:
- 同步通信:SPI使用主从架构和时钟信号进行同步数据传输。
- 四线制:包含MOSI(主输出从输入)、MISO(主输入从输出)、SCLK(时钟)和SS(从选择)。
- 全双工通信:可以同时发送和接收数据。
时序图:
| SCLK | --^--^--^--^--^--^--^--^-- |
| MOSI | 1 0 1 0 1 1 0 0 |
| MISO | 0 1 0 1 0 0 1 1 |
使用方法:
- 配置时钟极性和相位:主设备和从设备需要配置相同的时钟极性(CPOL)和相位(CPHA)。
- 选择从设备:通过拉低相应的SS引脚选择具体的从设备。
- 数据传输:主设备通过MOSI发送数据,同时从MISO接收数据。
3. I2C(Inter-Integrated Circuit)
工作原理:
- 同步通信:I2C使用主从架构和时钟信号进行同步数据传输。
- 双线制:包含SDA(数据线)和SCL(时钟线)。
- 地址识别:每个从设备有唯一的地址,主设备通过地址识别从设备。
- 半双工通信:发送和接收数据要分开进行。
时序图:
| SCL | --^--^--^--^--^--^--^--^-- |
| SDA | --|--|--|--|--|--|--|--|-- |
| Addr| 1 0 1 0 0 1 1 0 |
| Data| 1 1 0 0 1 0 1 1 |
使用方法:
- 配置地址:确保每个从设备有唯一的地址。
- 启动和停止条件:使用起始条件(SDA从高到低,SCL高)和停止条件(SDA从低到高,SCL高)来控制数据传输。
- 数据传输:主设备发送从设备地址,确认后开始数据传输。
4. CAN(Controller Area Network)
工作原理:
- 多主通信:CAN允许多个设备同时发送和接收数据。
- 差分信号:使用CAN_H和CAN_L进行差分信号传输,提高抗干扰能力。
- 消息优先级:通过消息ID确定优先级,ID越小优先级越高。
- 半双工通信:发送和接收数据要分开进行。
时序图:
| CAN_H | --^--^--^--^--^--^--^--^-- |
| CAN_L | --v--v--v--v--v--v--v--v-- |
| Data | 1 0 1 0 1 1