低速接口整理(IIC/UART/SPI/CAN)及實現

1、半雙工、全雙工

        同步半雙工:共用一根數據線。設備從主設備發給從設備,這時從設備不能發給主設備。比如IIC。當SCL傳輸SDA時,SDA只能傳輸單端數據。點對點傳輸,但是,IIC掛載在相同的線上,可根據主地址選擇發送設備節點。

       同步全雙工:公用時鐘線,但是數據線分開。可以同時接收和發送。比如四線SPI,點對多傳輸,可掛載多個從設備,但是隻能由主設備產生時鐘信號,即只能主設備往從設備發送數據。

       異步半雙工:只有TX和RX,時鐘不同步。兩端設備可以不做同步即接收數據。UART。點對點傳輸,不支持複用。

      CAN總線:採用公路模式,通過優先級或者節點信息。每個節點都可以往總線發數據,然後各節點通過幀格式判斷數據是否是發給自己。如果有多個從設備發給自己,設備根據優先級決定先接收哪個節點,此時第二優先級如果判定設備未接收數據,第二優先級節點就重複發送相同數據,最大發送量爲1000次,如果1000次爲接收,即報告接收失敗。CAN總線類似與IIC,但支持各節點同時上傳數據。但是加入了協議包等內容,採用差分傳輸的機制。

2、傳輸原理

      IIC:點對點操作,公用兩根線雙向線,SCL和SDA。SCL代替時鐘線。SDA拉低先,SCL再拉低,即傳輸開始。相反SDA拉高後SCL拉高,即傳輸結束。中間每次SCL拉高即傳輸一次SDA。標準100K傳輸,快速就是400K傳輸,高速3.4M。

     SPI:點對多操作,有四種模式,這裏指0模式。兩根雙向線,CE和SCK,兩根單向線,MOSI和MOSO。·當CE拉低時,由主設備產生時鐘,並根據設備地址選擇從設備。數據速率和設備相應和接口特性有關。

     UART:點對點操作,試過2.56M傳輸。沒有地址位,只有數據位。數據線拉低幾位數據傳輸開始。

    CAN:多對多操作,公用兩根差分線。CANH和CANL。只需要最遠設備需要加匹配電阻,各節點都可以同時往總線傳輸數據,根據節點和優先級判斷接收數據。

3、verilog關鍵點實現 

IIC  實現

UART:實現。同上。時鐘到上升沿,拉高TX,到下降沿拉低TX;按照是否需要加校驗位,發送數據。

其中分頻爲:clk_50M/115200;(1秒,50M。1秒發送115200個bit)

SPI,同理。需要加個SPI使能,選擇是否發送數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章