AVR串行通信接口USART\SPI\TWI学习笔记,终于略懂一二了!

USART\I2C\SPI的比较

1.USART有独立的发送器和接收器,支持同步或者异步全双工通信,有TXD,RXD,XCK三条线。 I2C总线不是全双工,2根线SCL SDA。SPI总线实现全双工,4根线SCK CS MOSI MISO, SPI在硬件上支持全双工,但是只有主机发送才能读取数据,从机不能主动发送数据,。

2. USART实现两个设备或一主多从的串口通信,比较灵活。I2C总线是多主机总线,通过SDA上的地址信息来锁定从设备。SPI总线只有一个主设备,主设备通过CS片选来确定从设备,当从设备比较多是,主设备需要多个IO来控制片选信号。

3. 输出时钟的频率为 fosc/(UBRRn+1)。发送器对波特率发生器的输出时钟进行 2、8 或 16 的分频,具体情况取决于工作模式。 。I2C总线传输速度在100kbps-4Mbps。SPI总线传输速度更快,可以达到30Mbps以上。

4. USART总线RXD和TXD在空闲时为高电平。I2C总线空闲状态下SDA SCL都是高电平。SPI总线空闲状态MOSI MISO也都是 SCK是有CPOL决定的

5. I2C总线SCL高电平时SDA下降沿标志传输开始,上升沿标志传输结束。在传输数据位时,SCL为高时,SDA必须保持稳定。SPI总线CS拉低标志传输开始,CS拉高标志传输结束。

6. I2C总线是SCL高电平采样。SPI总线因为是全双工,因此是沿采样,具体要根据CPHA决定。一般情况下master device是SCK的上升沿发送,下降沿采集

7.USART是LSB在前,I2C总线和SPI总线数据传输都是MSB在前,LSB在后

8. USART一般是异步的,也可以是主机时钟也可以是从机时钟。I2C总线和SPI总线时钟都是由主设备产生,并且只在数据传输时发出时钟

9. I2C总线读写时序比较固定统一,设备驱动编写方便。SPI总线不同从设备读写时序差别比较大,因此必须根据具体的设备datasheet来实现读写,相对复杂一些。

posted @ 2020-12-01 10:32  胡看穿  阅读(1169)  评论(0)    收藏  举报