SPI UART区别是什么

一般设备和设备之间的通讯,无非就是发送数据和接收数据,问题就在这里,不考虑两条电源线的情况下要多少根线来收发数据?这里Motorola公司就提出一种方案:1.SPI--Serial Peripheral Interface串行外围设备接口,是一种三线同步总线,即由1根发送线+1根接收线+1根时钟线(数据传送时序控制线)构成,由于发送和接收线是独立的,所以发送和接收可以同时进行。注:时钟线,简单来说,就是用来决定数据什么时候发送和什么时候不发送的,这样是为了两设备之间的同步数据传输,也可以说是数据传送指令线。2.UART(Universal Asynchronous Receiver Transmitter:通用异步收发器,也就是人们常说的串口。它其实就是SPI的基础上少了时钟线构成的,即由1根发送线+1根接收线构成。没有时钟线,那它怎么保证数据传送的同步性和准确性呢?这时就规定了,发送端的设备和接收端的设备发送数据和接收数据的速度必须保证相同。怎么个相同法,人们规定这个速度叫做波特率,即串口一旦工作,发送端就会按照事前设计好的波特率来发送数据,接收端也是按这个波特率来接收数据,这样就实现同步了,所以串口比较复杂,因为它需要一个波特率发生器为它提供波特率。3.I2C--INTER-IC(INTER IC BUS:意为IC之间总线)串行总线的缩写,是PHILIPS公司推出的芯片间串行传输总线。串行总线是相对于并行总线来说的,我们玩单片机经常用到P0口来做多设备通讯的数据总线,一个8位并行数据总线,这里的串行总线即是相对这个说的。IIC由1根串行数据线(SDA)+1根串行时钟线(SCL)构成,实现了双工的同步数据传输(双向传输)。有人会凝问,一根线作为总线就算了,但是它怎么实现双向传输数据呢?你可别忘了,它还有一根时钟线,作用同spi的时钟线。所以总结一下,数据传输说白了就两种方式:有时钟线和无时钟线。至于是1根串行的数据线还是2根独立收发的数据线,就看实际场合的应用了,一根串行数据传送数据的缺点很明显,不能同时收发造就了它的不灵活性和速度慢的缺点,而有时钟线的缺点就是线多,所以IIC就是为了减少线的数量的情况下诞生的产物。无时钟线的缺点就是同步同题,两个设备使用uart通讯之前一定要设置好一致的波特率。所以不难看出,uart就是以上所有缺点中最好的选择,只要事先设置好一致的波特率,那么以后的通讯只需2条线,并且这时就具有SPI的优点(双向同步)又有IIC的优点(线少),以上就是我个人的理解,如有误的地方请友好指出。