日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常见的硬件数据通信协议

發布時間:2023/12/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常见的硬件数据通信协议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

常見通信協議

  • 通信協議介紹
    • 1、串口通信
    • 2、IIC通信
    • 3、SPI通信
  • 總結

通信協議介紹

在做各種課題設計時候,經常會用到的就是使用“**通信”進行傳輸。最開始一直是處于一臉懵的狀態。編寫程序時候百思不得其解,怎么編寫這個通信協議?
后來花了很長時間去弄清楚了這些概念,結果在做設計時候一問組員都是一臉懵,根本不清楚通信協議是用來干什么的。所以自己整理了一遍思路,也方便自己加深理解。

在硬件上,我們經常需要多個設備之間相互進行通信。這些設備之間的相互通訊,一定都是按照一個統一規定的協議進行傳輸的。換句話說,也就是規定了兩個設備之間的傳輸是怎么開始的,怎么結束的,哪些是通信的內容,怎么檢驗通信過程是否出錯等等問題。
具體的通信協議都是通過對應的編程語言寫入對應的硬件設備中,就像往兩個設備中放了兩個守門員,對于傳輸的數據進行把關,從而建立通信進行傳輸。
這里介紹幾個硬件上常用的通信協議:

  • IIC通信
  • 串口通信
  • SPI通信

1、串口通信

串口是計算機設備,多種儀器設備等上常用的協議。

在并行通信中,一個字節(8位)數據是在8條并行傳輸線上同時由源傳到目的地。因此這樣的傳輸方式傳輸速度更快,傳輸效率高,但是占用資源也多。
而在串行通信方式中,數據是在單條1位寬的傳輸線上一位接一位地順序傳送。這樣一個字節的數據要分8次由低位到高位按順序一位位地傳送。這樣的傳輸方式雖然成本低但是傳輸速度慢。

(從其他地方down的圖)

在串行通信中,又分為幾種不同的傳輸方式:
單工、半雙工、全雙工
單工意味著信息只能單向傳遞,而半雙工則是信息可以雙向傳輸但是不能同時雙向傳輸,全雙工指的是信息可以同時雙向傳輸。
在時序上,串行通信又分為兩種方式:同步通訊、異步通訊

下面介紹具體的通信過程:(以單工為例)
在兩個設備進行相互通信時,以一幀數據為單位進行傳輸。而一幀數據中包含起始位、數據位、校檢位、停止位組成。
其中,校檢位分為奇校檢和偶校檢:

  • 奇校驗
    將最高位作為數據的奇偶校驗位,所謂奇校驗,就是保證一個字節的數據中1的個數必須是奇數,若不為奇數,則在最高位添1.,保證1的總是為奇數
  • 偶校驗
    若一個字節中的1不為偶數,則在最高位添1,保證1的總數為偶數

校檢位不是必須有的,可以根據具體情況進行設定。

開始傳輸時,傳輸線拉低作為起始位,拉低一個單位時間后就開始傳輸數據。一般的數據位為八位,待數據發送完成后,進行校檢位傳輸并進行驗證。接著接收高電平停止位(停止位都是1),根據設定的停止位持續時長進行判定,比如設定停止位為保持高電平1.5個時間單位。
每幀數據之間相隔若干個不定時間長度,空閑時間傳輸線一直保持高電平狀態。

2、IIC通信

IIC通信一般用于主從通信,即由主控制器發起,從設備進行響應的通信過程。該通信方式可以通過總線連接多個分立設備,通過唯一的地址與主機進行通信。
IIC通信共用到了兩根線,一根是SDA數據線,另一根是SCL時鐘線。在SDA數據線上,只負責傳輸來往的數據信息,至于對傳輸過程的控制,由SCL時鐘線進行控制。


具體的通信過程:
時鐘線SCL在空閑時間為高電平,SDA數據線為高電平。
開始通信:
需要開始通信時,在SCL為高電平期間,若SDA從高電平跳變到了低電平,則意味著通信開始,此時時鐘線SCL開始進行傳輸控制,數據線上的數據傳輸依據SCL時鐘進行傳輸。
結束通信:
結束通信時,將SCL時鐘線再次拉高,在SCL保持高電平的狀態下,若SDA從低電平跳變為高電平,則通信結束。此時SCL恢復為低電平狀態。

前面說了IIC通信主要用于主從通信,即開始通信和結束通信都是由主控制器發起,從設備接收到信息后進行應答。
IIC通信中由于是單個總線進行通信,連接總線的可能有多個從設備,所以通信內容必須包含唯一明確的通信地址才可以保證通信的順利進行。
因此,在起始信號發起后,接著就是七位的從設備地址,第八位則規定了通信方向。即“1”代表主機接收數據,從設備發送數據,而“0”代表主機發送數據,從設備接收數據。
每次傳輸數據位完成后,從設備需要產生應答信息,即從設備的SDA線產生一個單位時間的低電平表示應答,而高電平則表示非應答。

3、SPI通信

SPI通信也分為主從模式,不同的是SPI一共有四根線。其中兩根數據線MOSI以及MISO,一根時鐘線SCK,一根片選CS線。
兩個數據線分別為主機接收(MISO)、主機發送(MOSI)兩路數據。
SPI通信也存在著一個主機,多個從設備相互通信的情況,所以在主機與指定的從設備進行通信時,需要對從設備進行選定。片選CS即是為了選定某一個從設備,從而讓主機單獨的與該從設備進行通信。
時鐘線SCK依然像其他的時鐘一樣,做傳輸控制。

當開始進行通信時,先選定與主機進行通信的從設備,拉低該設備的CS線,表示該設備與主機通信。

有一點需要注意的是,在SPI通信中,沒有特定的讀寫操作。主從設備進行的是數據交換,主機發送出數據就必然會接收到數據,主機想要接受到數據就必須向從機發送數據。

主機與從機中都有一個移位寄存器,主機向它的寄存器寫入一個字節來發起一次傳輸。寄存器通過 MOSI 數據線將信號傳送給從機,從機也將自己寄存器中的內容通過 MISO 信號線返回給主機。這樣,兩個主從設備間就完成了一次信息傳輸,讀寫操作是同步完成的。
SPI有四種傳輸模式,通過CPOL(時鐘極性)和CPHA(時鐘相位)來控制。
CPOL時鐘極性:用來設定SCLK的電平狀態為有效
CPHA時鐘相位:用來設定數據采樣在SCL哪個跳變
則根據兩個控制信息產生出四種傳輸模式:

  • Mode0:CPOL=0,CPHA=0
  • Mode1:CPOL=0,CPHA=1
  • Mode2:CPOL=1,CPHA=0
  • Mode3:CPOL=1,CPHA=1

Mode0:SCK處于低電平為空閑態,數據采樣在上升沿,數據發送在下降沿。
Mode1:SCK處于低電平為空閑態,數據采樣在下降沿,數據發送在上升沿。
Mode2:SCK處于高電平為空閑態,數據采樣在上升沿,數據發送在下降沿。
Mode3:SCK處于高電平為空閑態,數據采樣在下降沿,數據發送在上升沿。
在通信過程中,通信雙方必須工作在同一種模式下,而且SPI通信沒有了IIC通信中從機應答的環節,比IIC通信要簡單。

總結

上面寫的三種通信協議都是大體介紹了概念,能弄清楚各種通信協議的具體方式和過程就好,至于具體通信時的各種細節,就需要在編寫程序時認真的思考每一個變量,每一個時鐘的作用,認真分析時序。
本文中引用的圖也是從其他帖子上down下來的,這里我分別找了三種通信協議的具體詳細說明:
1、SPI通信
2、IIC通信
3、串口通信

【注】個人學習筆記,請不吝賜教!

總結

以上是生活随笔為你收集整理的常见的硬件数据通信协议的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。