小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

超全!UART、SPI、I2C通信協(xié)議入門教程

 亮劍7mgtxtuz0o 2023-05-25 發(fā)布于江蘇
I2C通信協(xié)議基礎(chǔ)

3.1   通信簡介

I2CInter-Integrated Circuit),中文應(yīng)該叫集成電路總線,它是一種串行通信總線,使用多主從架構(gòu),是由飛利浦公司在1980年代初設(shè)計(jì)的,方便了主板、嵌入式系統(tǒng)或手機(jī)與周邊設(shè)備組件之間的通訊。由于其簡單性,它被廣泛用于微控制器與傳感器陣列,顯示器,IoT設(shè)備,EEPROM等之間的通信。 結(jié)合了SPIUART的最佳功能。使用 ,您可以將多個(gè)從機(jī)連接到單個(gè)主機(jī)(類似 SPI),另外,您可以讓多個(gè)主機(jī)控制單個(gè)或多個(gè)從機(jī)。當(dāng)您希望多個(gè)微控制器將數(shù)據(jù)記錄到單個(gè)存儲卡或?qū)⑽谋撅@示到單個(gè) LCD 時(shí),這個(gè)特性就非常有用了。與UART 通信一樣, 僅使用兩根電線在設(shè)備之間傳輸數(shù)據(jù):

圖片

SDA (Serial Data) – 這條線為主機(jī)和從機(jī)提供數(shù)據(jù)發(fā)送和接收功能。
SCL (Serial Clock) – 這條線為時(shí)鐘信號線。
 SPI 一樣,I2C 是同步的,因此位的輸出通過主機(jī)和從機(jī)之間共享的時(shí)鐘信號同步到位的采樣。時(shí)鐘信號總是由主機(jī)控制。

  
使用線數(shù)
  
2
最大速度
標(biāo)準(zhǔn)模式(Standard  mode)   =100kbps
快速模式(Fast  mode)       =400kbps
高速模式(High  speed mode)=3.4Mbps
超快速模式(Ultra  fast mode)=5Mbps
同步/異步
同步
串行/并行
串行
最大主機(jī)數(shù)
不限制
最大從機(jī)數(shù)
1008

3.2 的工作原理(HOW WORKS)

使用 ,數(shù)據(jù)在消息中傳輸。消息被分解成數(shù)據(jù)幀。每條消息都有一個(gè)地址幀,其中包含從機(jī)的二進(jìn)制地址,以及一個(gè)或多個(gè)包含正在傳輸數(shù)據(jù)的數(shù)據(jù)幀。該消息還包括每個(gè)數(shù)據(jù)幀之間的啟動和停止條件、讀/寫位以及ACK/NACK位:

圖片


啟動條件(StartCondition):SDA 線在SCL線從高到低切換之前從高電位切換到低電位。
停止條件(StopCondition):SDA 線在SCL線從低到高切換之后從低電位切換到高電位。
地址幀(AddressFrame):每個(gè)從機(jī)都有唯一的7位或10位數(shù)列,主機(jī)可以通過該序列識別從機(jī),主機(jī)如果需要向從機(jī)發(fā)送/接收數(shù)據(jù),首先要發(fā)送對應(yīng)從機(jī)的地址,然后會匹配總線上掛載的從機(jī)的地址。
/寫位(Read/Write Bit):指定主機(jī)是向從機(jī)發(fā)送數(shù)據(jù)(低電位)還是請求從機(jī)發(fā)送數(shù)據(jù)(高電位)的1個(gè)位。
ACK/NACK位(ACK/NACK Bit):在一條消息中,每一幀后都跟隨1個(gè)確認(rèn)應(yīng)答(ACK)/非確認(rèn)應(yīng)答(NACK)位。如果一個(gè)地址幀或數(shù)據(jù)幀是被成功接收,一個(gè)確認(rèn)應(yīng)答位(ACK bit)將從接收設(shè)備返回給發(fā)送設(shè)備。

3.3  尋址(ADDRESSING)

沒有像SPI這樣的從機(jī)片選接口線,所以它需要另一種方式讓從機(jī)知道數(shù)據(jù)被發(fā)送到它,而不是另一個(gè)從機(jī)。它需要通過尋址來實(shí)現(xiàn)。地址幀始終是新消息中開始位后的第一幀。

主機(jī)將它想要與之溝通的從機(jī)的地址發(fā)送給與之相連的每一個(gè)從機(jī)。然后,每個(gè)從機(jī)將從主機(jī)發(fā)送的地址與自己的地址進(jìn)行比較。如果地址匹配,它會向主發(fā)送低電壓ACK位。如果地址不匹配,從機(jī)什么都不做,SDA線仍然很高。

3.4  讀/寫位(READ/WRITE BIT)

在地址幀的末尾包含一個(gè)單獨(dú)的位,用于通知從機(jī),主機(jī)是否想向它寫數(shù)據(jù)還是想從它接收數(shù)據(jù)。如果主機(jī)要將數(shù)據(jù)發(fā)送給從機(jī),讀/寫位是低電位;如果主機(jī)請求來自從機(jī)的數(shù)據(jù),則該位為高電位1。

3.5  數(shù)據(jù)幀(THE DATA FRAME)

在主機(jī)檢測到從機(jī)發(fā)出的ACK位后,第一個(gè)數(shù)據(jù)幀已準(zhǔn)備好發(fā)送。

數(shù)據(jù)幀始終為8位長,并且首先發(fā)送最重要的位。每個(gè)數(shù)據(jù)幀后面都立即有ACK/NACK 位,以驗(yàn)證幀是否已成功接收。在發(fā)送下一個(gè)數(shù)據(jù)幀之前,主機(jī)或從機(jī)(取決于誰發(fā)送數(shù)據(jù))必須接收ACK位。

在發(fā)送完所有數(shù)據(jù)幀后,主機(jī)可以向從機(jī)發(fā)送停止條件以停止傳輸。停止條件是在SCL線路上從低到高過渡后,SDA線的電壓從低到高過渡,SCL線保持高位。

3.6 數(shù)據(jù)傳輸?shù)牟襟E(STEPS OF I2C DATATRANSMISSION)

1. 主機(jī)發(fā)送啟動條件給每一個(gè)連接的從機(jī),在SCL線從高到低切換之前,主機(jī)將SDA線從高切換到低電平即可觸發(fā)啟動條件,即在SCL高電平時(shí)候給SDA一個(gè)下降沿,如下圖所示,注意箭頭的時(shí)序方向:

圖片

2. 主機(jī)發(fā)送它想與之溝通的7位或10位從機(jī)地址,以及讀/寫位:

圖片

3. 每個(gè)從機(jī)將從主機(jī)發(fā)送的地址與自己的地址進(jìn)行比較。如果地址匹配,則從機(jī)通過將SDA 線拉低1個(gè)位來返回ACK位。如果主機(jī)的地址與從機(jī)自己的地址不匹配,則從機(jī)會將SDA線留在高電位(通過上拉電阻)。地址匹配的從機(jī)返回ACK位如下圖所示:
圖片

4.主機(jī)發(fā)送或接收數(shù)據(jù)幀:
圖片

5. 傳輸每個(gè)數(shù)據(jù)幀后,接收設(shè)備會將另一個(gè)ACK 位返回給發(fā)件人,以確認(rèn)成功接收幀:
圖片

6. 為了停止數(shù)據(jù)傳輸,主機(jī)發(fā)送一個(gè)停止條件給從機(jī),通過在SDA拉高之前先拉高SCL,即在SCL高電平時(shí)候給SDA一個(gè)上升沿,如下圖所示,注意箭頭表示的傳輸順序:
圖片

3.7 單主機(jī)與多從機(jī)(SINGLE MASTER WITH MULTIPLE SLAVES)

由于 使用尋址,因此可以實(shí)現(xiàn)單個(gè)主機(jī)控多個(gè)從機(jī)。使用7位地址理論上可提供 128(2^7)個(gè)唯一地址。使用10位地址并不常見,但理論上可提供1024(2^10)個(gè)唯一地址。要將多個(gè)從機(jī)連接到單個(gè)主機(jī),請像下面這樣將它們連接起來,并用4.7K Ohm上拉式電阻器將SDASCL線連接到Vcc

圖片

3.8  多主機(jī)與多從機(jī)(MULTIPLE MASTERS WITH MULTIPLE SLAVES)

多個(gè)主機(jī)可以連接到一個(gè)單一的從機(jī)或多個(gè)從機(jī)。在多主機(jī)系統(tǒng)總,當(dāng)兩個(gè)主機(jī)嘗試同時(shí)通過SDA線發(fā)送或接收數(shù)據(jù)時(shí),問題就出現(xiàn)了。為了解決這個(gè)問題,每個(gè)主機(jī)在傳輸消息之前需要檢測SDA線是低電平還是高電平。如果SDA線為低電平,則意味著另一個(gè)主機(jī)正控制著總線,該主機(jī)應(yīng)等待發(fā)送消息。如果SDA線被拉高,則傳輸消息是安全的。

要將多個(gè)主機(jī)連接到多個(gè)從機(jī),請按下圖連接,并使用4.7K Ohm上拉式電阻器將SDA SCL線連接到Vcc

圖片

3.9 的優(yōu)缺點(diǎn)(ADVANTAGES AND DISADVANTAGES OF )

優(yōu)勢
僅使用兩根電線
支持多個(gè)主和多個(gè)奴隸
ACK/NACK 位確認(rèn)每個(gè)幀都成功傳輸
硬件不如UART復(fù)雜
眾所周知和廣泛使用的協(xié)議

缺點(diǎn)
數(shù)據(jù)傳輸速率低于SPI
數(shù)據(jù)框架的大小限制為8位
實(shí)現(xiàn)所需的硬件比SPI更復(fù)雜

3.10 總結(jié)

總線由9bit的塊構(gòu)成。開始條件:當(dāng)SCL是高電平時(shí)候SDA從高到底跳變的下降沿,作為開始條件。在總線上的所有從機(jī)都要開始注意了:

圖片

地址位為緊跟開始條件的7bit數(shù)據(jù),主機(jī)想要與該地址從機(jī)溝通:

圖片

讀寫位為緊跟7bit地址后的第8位作為讀寫選擇位:該位用于表示主機(jī)是想讀從機(jī)的數(shù)據(jù)還是想往從機(jī)里寫數(shù)據(jù):為1表示讀;為0表示寫。

圖片

主機(jī)和從機(jī)之間的同步位:0表示ACK;1表示NACK。0:我在或數(shù)據(jù)已接收。1:沒有我或數(shù)據(jù)未接收。
圖片

數(shù)據(jù)字節(jié):在地址字節(jié)后的8位是來自主機(jī)或從機(jī)的數(shù)據(jù)字節(jié)。至于來自誰,要看讀寫位。當(dāng)寫周期,主機(jī)發(fā)送數(shù)據(jù);當(dāng)讀周期,從機(jī)發(fā)送數(shù)據(jù):

圖片

停止條件:當(dāng)SCL是高電平時(shí),數(shù)據(jù)線SDA從低電平跳變到高電平產(chǎn)生的上升沿作為停止條件。主機(jī)通知從機(jī)本次溝通結(jié)束。

圖片

完整的 總線協(xié)議時(shí)序如下圖所示:

圖片

3.11 備注

本筆記圖中帶箭頭的表示時(shí)序傳遞的優(yōu)先順序,箭頭表示數(shù)據(jù)傳輸?shù)姆较蚧蛳劝l(fā)生的時(shí)序。1.10小結(jié)沒有標(biāo)注箭頭,以左側(cè)作為先發(fā)生的時(shí)序,請勿與前面的圖弄混。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多