SPI、I2C和UART是三种常用的通信协议,属于不同设备之间进行数据传输。那三者之间又有何不同呢?
首先我们要搞清楚几个名词:同步和异步、串行和并行、全双工半双工和单工。
1、什么是同步和异步?
2、什么是串行和并行?
3、什么是单工、半双工和全双工?
理解了上面三对概念,我们进入正文,先看图:
名称 | 硬件连接 | 总线速度 | 传输方式 | 适用场景 |
SPI | 4线制(SCLK、MOSI、MISO、CS) | MHz | 同步串行全双工 | 适用于需要高速、实时性要求高的场合,如显示器、音频编解码器、ADC/DAC转换器等 |
I2C | 2线制(SDA、SCL) | KHz | 同步串行半双工 | 器件接口,是在一块板子上芯片之间的通信 |
UART | 2线制(TX、RX) | 115200bps | 异步串行全双工 | 设备间接口,更多用于两台设备之间传输数据 |
另外,传输距离和通信速率成反比关系。
UART 通用串行异步收发器串口,UART是串行异步通信接口,它包括RS232、RS499、RS423、RS422和RS485等接口规范和 标准规范,即UART是串行异步通信口的总称。
在工作中我用到RS232和RS485比较多。