时间: 2024-12-21 05:51:21 作者: 智能座舱域产品
嵌入式工程师在做串口通讯调试作业的时分,会经常用到I2C、SPI、UART这3条总线C、SPI、UART这三种通讯总线在嵌入式范畴很常见,现在干流的SOC芯片都内置了这三种总线的操控器,各种Sensor、Touch、蓝牙模块、WIFI模块等也都兼容这三种通讯协议的1种以上。那么这三条通讯总线有啥不一样的差异呢?工业物联网无线通讯专业厂商为您逐个细说——
I2C:半双工、同步、串行传输,物理上只要两根线(SDA/SCL);传输数据有必要8位8位的传输。
1.在SCL线为高电平时,主机经过将SDA线从高电平切换到低电平来发动总线.主机向总线发送要与之通讯的从机的7位或10位地址,以及读/写位;
3.每个从机将主机发送的地址与其自己的地址作比较。假如地址匹配,则从机经过将SDA线拉低一位回来一个ACK位。假如主机的地址与从机的地址不匹配,则从机将SDA线.主机发送或接纳数据帧;
5.传输完每个数据帧后,接纳设备将另一个ACK位回来给发送方,以承认已成功接纳到该帧;
6.随后主机将SCL切换为高电平,然后再将SDA切换为高电平,然后向从机发送中止条件。
SPI:全双工、同步、串行传输,收发独立,传输速率高,可是没有指定的流操控,没有应对机制承认是否接纳到数据。物理上4根线(CLK/SDI/SDO/CS),由于是全双工,而且不需要寻址,所以速度要比I2C快,可是占用的物理线C多;通讯时能够一位一位的传输数据。
UART:全双工、异步、串行传输,收发独立,UART总线并没有时钟线,所以要提早约好对应的波特率,传输速度较慢,物理上4根线(VCC/TX/RX/GND),尽管速度慢,可是可用于不同主机间的通讯,一般用于debug调试非常快捷;传输时数据位能够5、6、7、8位。
1.发送UART从数据总线.发送UART将开始位、奇偶校验位和中止位添加到数据帧;3.整个数据包从发送UART串行发送到接纳UART。接纳UART以预先装备的波特率对数据线.接纳UART丢掉数据帧中的开始位、奇偶校验位和中止位;
5.接纳UART将串行数据转换回并行数据,并将其传输到接纳端的数据总线。
半双工:数据能够在两个方向上进行传输,可是同一时间,只允许数据在一个方向上传输,相当于单工通讯的分时复用。
同步通讯要求发收两边具有同频同相的同步时钟信号(一般共用一个时钟),同步通讯功率高。
异步通讯的收发两边没有同步时钟,比方UART,收发两边仅仅是约好,你依照什么样的速率发,而我也依照这样的速率去接纳,这样假如速度越快,那么信号宽度越窄,差错就越大,所以异步通讯功率较低。综上所述,工业物联网无线通讯专业厂商要说的是I2C、SPI、UART这三条总线在通讯速度上,SPI最快,UART最慢;通讯间隔上,I2C和SPI一般用于片上通讯,而UART一般用于设备间通讯,比方PC机和咱们要调试的产品设备。