SPI偷办、I2C、UART三種串行總線協議的區(qū)別
第一個區(qū)別當然是名字:
SPI(Serial Peripheral Interface:串行外設接口);
I2C(INTER IC BUS)
UART(Universal Asynchronous Receiver Transmitter:通用異步收發(fā)器)
第二澄港,區(qū)別在電氣信號線上:
SPI總線由三條信號線組成:串行時鐘(SCLK)椒涯、串行數據輸出(SDO)、串行數據輸入(SDI)回梧。SPI總線可以實現 多個SPI設備互相連接废岂。提供SPI串行時鐘的SPI設備為SPI主機或主設備(Master),其他設備為SPI從機或從設備(Slave)漂辐。主從設備間可以實現全雙工通信泪喊,當有多個從設備時,還可以增加一條從設備選擇線髓涯。
如果用通用IO口模擬SPI總線,必須要有一個輸出口(SDO)纬纪,一個輸入口(SDI)蚓再,另一個口則視實現的設備類型而定,如果要實現主從設備包各,則需輸入輸出口摘仅,若只實現主設備,則需輸出口即可问畅,若只實現從設備娃属,則只需輸入口即可。
I2C總線是雙向护姆、兩線(SCL矾端、SDA)、串行卵皂、多主控(mulTI-master)接口標準秩铆,具有總線仲裁機制,非常適合在器件之間進行近距離、非經常性的數據通信殴玛。在它的協議體系中捅膘,傳輸數據時都會帶上目的設備的設備地址,因此可以實現設備組網滚粟。
如果用通用IO口模擬I2C總線寻仗,并實現雙向傳輸,則需一個輸入輸出口(SDA)凡壤,另外還需一個輸出口(SCL)愧沟。(注:I2C資料了解得比較少,這里的描述可能很不完備)
UART總線是異步串口鲤遥,因此一般比前兩種同步串口的結構要復雜很多,一般由波特率產生器(產生的波特率等于傳輸波特率的16倍)林艘、UART接收器盖奈、UART發(fā)送器組成,硬件上由兩根線狐援,一根用于發(fā)送钢坦,一根用于接收。
顯然啥酱,如果用通用IO口模擬UART總線爹凹,則需一個輸入口,一個輸出口镶殷。
第三SPI和UART可以實現全雙工禾酱,但I2C不行;
wudanyu:I2C線更少绘趋,我覺得比UART颤陶、SPI更為強大,但是技術上也更加麻煩些陷遮,因為I2C需要有雙向IO的支持滓走,而且使用上拉電阻,我覺得抗干擾能力較弱帽馋,一般用于同一板卡上芯片之間的通信搅方,較少用于遠距離通信。SPI實現要簡單一些绽族,UART需要固定的波特率姨涡,就是說兩位數據的間隔要相等,而SPI則無所謂项秉,因為它是有時鐘的協議绣溜。
quickmouse:I2C的速度比SPI慢一點,協議比SPI復雜一點娄蔼,但是連線也比標準的SPI要少怖喻。
這就是三種串行總線的區(qū)別了底哗,歡迎和我交流討論,更多干貨和資料請直接聯系我锚沸,也可以加群710520381跋选,邀請碼:柳貓,歡迎大家共同討論