99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

一口Linux
認證:優(yōu)質創(chuàng)作者
作者動態(tài)
為什么對技術人員的考核大多都只看加班時間?
1星期前
某通信公司筆試題,你會做幾道?
2星期前
10種初學者最常見的c語言段錯誤實例及原因分析
05-30 12:13
linux系統(tǒng)監(jiān)控工具小神器:btop
05-17 17:37
有沒有權貴開后門讓子女做軟件開發(fā)人員?
05-10 23:36

常見硬件通信協(xié)議(SPI、I2C、CAN、USB、UART)介紹

前言

完整的硬件產品是由多種模塊組合實現(xiàn)產品功能的,微控制器 MCU 充當大腦,外圍的存儲單元、顯示單元、發(fā)聲單元、傳感器單元、運動單元等等是其軀干和四肢,而不同類型的硬件單元需要有機的結合起來,就離不開相互之間的數(shù)據(jù)通信,電子工業(yè)經(jīng)過了百余年的發(fā)展,衍生出了繁多的協(xié)議,其中既有行業(yè)公認的標準協(xié)議,也有企業(yè)自研的內部標準,這些協(xié)議通??梢苑譃椴⑿型ㄐ艆f(xié)議和串行通信協(xié)議。

  • 并行通信,在同一時刻發(fā)送多位數(shù)據(jù)(可以是多根線)。優(yōu)點是發(fā)送速度快;缺點是傳輸距離短 資源占用多。   
  • 串行通信,用一根線 在不同的時刻發(fā)送8位數(shù)據(jù)。優(yōu)點是傳輸距離遠 占用資源少;缺點是發(fā)送速度慢。

    通信的方式可以分為:全雙工、半雙工、單工

  • 單工通信 只能接受或者發(fā)送 收音機 遙控器,一般只有一根線
  • 半雙工通信 在同一時刻只能發(fā)送或者接收 對講機,至少有兩根線
  • 全雙工通信 在同一時刻 既能接收又能發(fā)送 電話,至少有兩根線

根據(jù)是接收端和發(fā)送端時鐘頻率的異同又可分為同步通信和異步通信,本章將簡單介紹主流的一些硬件通信協(xié)議。

SPI 協(xié)議

 協(xié)議概括    

SPI是串行外設接口(Serial Peripheral Interface)的縮寫。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,如今主流的微控制器都集成有spi接口,如 stm32 家族。

通信原理

SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基于SPI的設備共有的,它們是SDI(數(shù)據(jù)輸入)、SDO(數(shù)據(jù)輸出)、SCLK(時鐘)、CS(片選)。

  • SDI – SerialData In,串行數(shù)據(jù)輸入;
  • SDO – SerialDataOut,串行數(shù)據(jù)輸出;
  • SCLK – Serial Clock,時鐘信號,由主設備產生;
  • CS – Chip Select,從設備使能信號,由主設備控制。

其中,CS是從芯片是否被主芯片選中的控制信號,也就是說只有片選信號為預先規(guī)定的使能信號時(高電位或低電位),主芯片對此從芯片的操作才有效。這就使在同一條總線上連接多個SPI設備成為可能。

接下來就負責通訊的3根線了。通訊是通過數(shù)據(jù)交換完成的,這里先要知道SPI是串行通訊協(xié)議,也就是說數(shù)據(jù)是一位一位的傳輸?shù)?。這就是SCLK時鐘線存在的原因,由SCLK提供時鐘脈沖,SDI,SDO則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過 SDO線,數(shù)據(jù)在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位數(shù)據(jù)傳輸,輸入也使用同樣原理。因此,至少需要8次時鐘信號的改變(上沿和下沿為一次),才能完成8位數(shù)據(jù)的傳輸。

SCLK信號線只由主設備控制,從設備不能控制信號線。同樣,在一個基于SPI的設備中,至少有一個主控設備。這樣傳輸?shù)奶攸c:這樣的傳輸方式有一個優(yōu)點,與普通的串行通訊不同,普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù),而SPI允許數(shù)據(jù)一位一位的傳送,甚至允許暫停,因為SCLK時鐘線由主控設備控制,當沒有時鐘跳變時,從設備不采集或傳送數(shù)據(jù)。也就是說,主設備通過對SCLK時鐘線的控制可以完成對通訊的控制。

通過邏輯分析儀采集 spi 總線數(shù)據(jù),可以看到四個通道的波形變化,判斷信號的時鐘周期、時鐘相位和極性,并能夠解碼獲取實際傳輸?shù)臄?shù)據(jù)和指令。

SPI還是一個數(shù)據(jù)交換協(xié)議:因為SPI的數(shù)據(jù)輸入和輸出線獨立,所以允許同時完成數(shù)據(jù)的輸入和輸出。不同的SPI設備的實現(xiàn)方式不盡相同,主要是數(shù)據(jù)改變和采集的時間不同,在時鐘信號上沿或下沿采集有不同定義,具體請參考相關器件的文檔。

最后,SPI接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數(shù)據(jù)。

I2C 協(xié)議

協(xié)議概括    

I2C總線是由Philips公司開發(fā)的一種簡單、雙向二線制同步串行總線。它只需要兩根線即可在連接于總線上的器件之間傳送信息。

主器件用于啟動總線傳送數(shù)據(jù),并產生時鐘以開放傳送的器件,此時任何被尋址的器件均被認為是從器件.在總線上主和從、發(fā)和收的關系不是恒定的,而取決于此時數(shù)據(jù)傳送方向。如果主機要發(fā)送數(shù)據(jù)給從器件,則主機首先尋址從器件,然后主動發(fā)送數(shù)據(jù)至從器件,最后由主機終止數(shù)據(jù)傳送;如果主機要接收從器件的數(shù)據(jù),首先由主器件尋址從器件.然后主機接收從器件發(fā)送的數(shù)據(jù),最后由主機終止接收過程。在這種情況下.主機負責產生定時時鐘和終止數(shù)據(jù)傳送。

通信原理

SDA(串行數(shù)據(jù)線)和SCL(串行時鐘線)都是雙向I/O線,接口電路為開漏輸出.需通過上拉電阻接電源VCC.當總線空閑時.兩根線都是高電平,連接總線的外同器件都是CMOS器件,輸出級也是開漏電路.在總線上消耗的電流很小,因此,總線上擴展的器件數(shù)量主要由電容負載來決定,因為每個器件的總線接口都有一定的等效電容.而線路中電容會影響總線傳輸速度.當電容過大時,有可能造成傳輸錯誤.所以,其負載能力為400pF,因此可以估算出總線允許長度和所接器件數(shù)量。

主器件用于啟動總線傳送數(shù)據(jù),并產生時鐘以開放傳送的器件,此時任何被尋址的器件均被認為是從器件.在總線上主和從、發(fā)和收的關系不是恒定的,而取決于此時數(shù)據(jù)傳送方向。如果主機要發(fā)送數(shù)據(jù)給從器件,則主機首先尋址從器件,然后主動發(fā)送數(shù)據(jù)至從器件,最后由主機終止數(shù)據(jù)傳送;如果主機要接收從器件的數(shù)據(jù),首先由主器件尋址從器件.然后主機接收從器件發(fā)送的數(shù)據(jù),最后由主機終止接收過程。在這種情況下.主機負責產生定時時鐘和終止數(shù)據(jù)傳送。

邏輯分析儀采集 I2C 總線數(shù)據(jù),可以看到 SDA 和 SCL 的數(shù)據(jù)波形,查看每次的指令和數(shù)據(jù)、地址等。

CAN 協(xié)議

協(xié)議概括        

控制器局域網(wǎng)總線(CAN,Controller Area Network)是一種用于實時應用的串行通訊協(xié)議總線,它可以使用雙絞線來傳輸信號,是世界上應用最廣泛的現(xiàn)場總線之一。CAN協(xié)議用于汽車中各種不同元件之間的通信,以此取代昂貴而笨重的配電線束。該協(xié)議的健壯性使其用途延伸到其他自動化和工業(yè)應用。CAN協(xié)議的特性包括完整性的串行數(shù)據(jù)通訊、提供實時支持、傳輸速率高達1Mb/s、同時具有11位的尋址以及檢錯能力。

通信原理

CAN總線使用串行數(shù)據(jù)傳輸方式,可以1Mb/s的速率在40m的雙絞線上運行,也可以使用光纜連接,而且在這種總線上總線協(xié)議支持多主控制器。 CAN與I2C總線的許多細節(jié)很類似,但也有一些明顯的區(qū)別。當CAN總線上的一個節(jié)點(站)發(fā)送數(shù)據(jù)時,它以報文形式廣播給網(wǎng)絡中所有節(jié)點。對每個節(jié)點來說,無論數(shù)據(jù)是否是發(fā)給自己的,都對其進行接收。每組報文開頭的11位字符為標識符,定義了報文的優(yōu)先級,這種報文格式稱為面向內容的編址方案。在同一系統(tǒng)中標識符是唯一的,不可能有兩個站發(fā)送具有相同標識符的報文。當幾個站同時競爭總線讀取時,這種配置十分重要。

當一個站要向其它站發(fā)送數(shù)據(jù)時,該站的CPU將要發(fā)送的數(shù)據(jù)和自己的標識符傳送給本站的CAN芯片,并處于準備狀態(tài);當它收到總線分配時,轉為發(fā)送報文狀態(tài)。CAN芯片將數(shù)據(jù)根據(jù)協(xié)議組織成一定的報文格式發(fā)出,這時網(wǎng)上的其它站處于接收狀態(tài)。每個處于接收狀態(tài)的站對接收到的報文進行檢測,判斷這些報文是否是發(fā)給自己的,以確定是否接收它。由于CAN總線是一種面向內容的編址方案,因此很容易建立高水準的控制系統(tǒng)并靈活地進行配置。我們可以很容易地在CAN總線中加進一些新站而無需在硬件或軟件上進行修改。當所提供的新站是純數(shù)據(jù)接收設備時,數(shù)據(jù)傳輸協(xié)議不要求獨立的部分有物理目的地址。它允許分布過程同步化,即總線上控制器需要測量數(shù)據(jù)時,可由網(wǎng)上獲得,而無須每個控制器都有自己獨立的傳感器。

USB 協(xié)議

協(xié)議概括

通用串行總線(英語:Universal Serial Bus,縮寫:USB)是連接計算機系統(tǒng)與外部設備的一種串口總線標準,也是一種輸入輸出接口的技術規(guī)范,被廣泛地應用于個人電腦和移動設備等信息通訊產品,并擴展至攝影器材、數(shù)字電視(機頂盒)、游戲機等其它相關領域。

通信原理

USB總線屬于一種輪詢式總線,主機控制端口初始化所有的數(shù)據(jù)傳輸。每一總線動作最多傳送三個數(shù)據(jù)包,包括令牌(Token)、數(shù)據(jù)(Data)、聯(lián)絡(HandShake)。

按照傳輸前制定好的原則,在每次傳送開始時,主機送一個描述傳輸動作的種類、方向、USB設備地址和終端號的USB數(shù)據(jù)包,這個數(shù)據(jù)包通常被稱為令牌包(TokenPacket)。USB設備從解碼后的數(shù)據(jù)包的適當位置取出屬于自己的數(shù)據(jù)。數(shù)據(jù)傳輸方向不是從主機到設備就是從設備到主機。

USB 2.0 接口

USB 3.0 接口

在傳輸開始時,由標志包來標志數(shù)據(jù)的傳輸方向,然后發(fā)送端開始發(fā)送包含信息的數(shù)據(jù)包或表明沒有數(shù)據(jù)傳送。接收端也要相應發(fā)送一個握手的數(shù)據(jù)包表明是否傳送成功。發(fā)送端和接收端之間的USB數(shù)據(jù)傳輸,在主機和設備的端口之間,可視為一個通道。USB中有一個特殊的通道一缺省控制通道,它屬于消息通道,設備一啟動即存在,從而為設備的設置、狀態(tài)查詢和輸入控制信息提供一個入口。

UART 協(xié)議

協(xié)議概括

通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種異步收發(fā)傳輸器,是電腦硬件的一部分。它將要傳輸?shù)馁Y料在串行通信與并行通信之間加以轉換。作為把并行輸入信號轉成串行輸出信號的芯片,UART通常被集成于其他通訊接口的連結上。

具體實物表現(xiàn)為獨立的模塊化芯片,或作為集成于微處理器中的周邊設備。一般是RS-232C規(guī)格的,與類似Maxim的MAX232之類的標準信號幅度變換芯片進行搭配,作為連接外部設備的接口。在UART上追加同步方式的序列信號變換電路的產品,被稱為USART(Universal Synchronous Asynchronous Receiver Transmitter)。

通信原理

計算機內部采用并行數(shù)據(jù),不能直接把數(shù)據(jù)發(fā)到Modem,必須經(jīng)過UART整理才能進行異步傳輸,其過程為:CPU先把準備寫入串行設備的數(shù)據(jù)放到UART的寄存器(臨時內存塊)中,再通過FIFO(First Input First Output,先入先出隊列)傳送到串行設備,若是沒有FIFO,信息將變得雜亂無章,不可能傳送到Modem。

UART作為異步串口通信協(xié)議的一種,工作原理是將傳輸數(shù)據(jù)的每個字符一位接一位地傳輸。

其中各位的意義如下:

  • 起始位:先發(fā)出一個邏輯”0”的信號,表示傳輸字符的開始。
  • 資料位:緊接著起始位之后。資料位的個數(shù)可以是4、5、6、7、8等,構成一個字符。通常采用ASCII碼。從最低位開始傳送,靠時鐘定位。
  • 奇偶校驗位:資料位加上這一位后,使得“1”的位數(shù)應為偶數(shù)(偶校驗)或奇數(shù)(奇校驗),以此來校驗資料傳送的正確性。
  • 停止位:它是一個字符數(shù)據(jù)的結束標志??梢允?位、1.5位、2位的高電平。 由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時也越慢。
  • 空閑位:處于邏輯“1”狀態(tài),表示當前線路上沒有資料傳送。
  • 波特率:是衡量資料傳送速率的指標。表示每秒鐘傳送的符號數(shù)(symbol)。一個符號代表的信息量(比特數(shù))與符號的階數(shù)有關。例如資料傳送速率為120字符/秒,傳輸使用256階符號,每個符號代表8bit,則波特率就是120baud,比特率是120*8=960BIT/S。

通過邏輯分析儀抓取 uart 總線數(shù)據(jù),可以清楚的看到數(shù)據(jù)幀格式。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉載。授權事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 3
收藏 9
關注 181
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 国产一区二区三区四区五区加勒比 | 日本超黄视频 | 中文字幕中文字幕在线中文字幕三区 | free性欧美1819hd| 国产一二三区在线视频 | 久久综合九色综合97网 | 热久久久久香蕉无品码 | 国产精品久久不射 | 国产一区二区三区四区成男人 | 激情综合婷婷色五月蜜桃 | 国产一区正在 | 色黄啪啪网18以下勿进 | 色综合伊人丁香五月桃花婷婷 | 中文不卡在线 | 外国特级免费片 | 国产精品成人亚洲一区二区 | 国产精品亚洲精品日韩已方 | 成人av一区 | 久久97超碰色中文字幕蜜芽 | 伊人第一页 | 888久久| 亚洲视频二| 一边捏奶头一边高潮视频 | 日韩精品在线观看网站 | 人妻无码久久中文字幕专区 | 女人下边被添全过程A片图片 | 穿透明白衬衫喷奶水的av | 色欧美在线视频 | 91精品一区二区三区综合在线爱 | 成人激情av | chinese少妇国语对白 | 国产午夜av秒播在线观看 | 国产一区免费看 | 国产主播一区二区三区 | 99国精产品一二三区 | 欧美一区二区在线免费 | 激情另类小说区图片区视频区 | 与丰满少妇做爽视频 | 国产一区视频在线 | 影音先锋无码A∨男人资源站 | 午夜三区 |