定義術(shù)語(yǔ)
1、數(shù)據(jù)有效性
在 SCL 高電平期間,SDA 必須穩(wěn)定,所以一般情況下,SCL 高電平寬度小,SDA 高電平寬度大,用示波器看也是這樣的。
2、起始條件和停止條件
起始條件:SCL 高電平時(shí),SDA 由高變低。
停止條件:SCL 高電平時(shí),SDA 由低變高。
一般每傳輸一個(gè)字節(jié)(8 bit),就會(huì)重新開(kāi)始。SDA 在 SCL 是低電平期間變換數(shù)據(jù),不可以在 SCL 高電平期間變換數(shù)據(jù),否則會(huì)認(rèn)為是起始和停止條件。
傳輸長(zhǎng)度必須是一個(gè)字節(jié)(8 bit)
每次傳輸?shù)淖止?jié)不受限制
數(shù)據(jù)必須以 MSB 開(kāi)頭進(jìn)行傳輸,也就是先傳輸最高位
從機(jī)可以將時(shí)鐘線 SCL 保持在低位,迫使主機(jī)進(jìn)入等待狀態(tài)。
3、ACK or NACK
每次傳輸完一個(gè)字節(jié)以后,從設(shè)備要進(jìn)行一個(gè)回應(yīng),回應(yīng) ACK 或者 NACK。
ACK :在傳輸 8 bit 以后,在第九個(gè) bit ,SCL 高電平,如果 SDA 是低電平,說(shuō)明回應(yīng)了 ACK。
NACK:在傳輸 8 bit 以后,在第九個(gè) bit ,SCL 高電平,如果 SDA 是高電平,說(shuō)明回應(yīng)了 NACK。
4、write data
5、read data
6、復(fù)合格式
7、I2C Transfer Regulation
以 START 條件開(kāi)始
以 STOP 條件結(jié)束
傳輸?shù)牡谝粋€(gè)字節(jié)為 7bit 從機(jī)地址 + 1bit 讀寫(xiě)位
每個(gè)總線上的設(shè)備都會(huì)比較 STRAT 信號(hào)后面的 7bit 地址與自己的地址是否匹配
每個(gè) byte(8 bits) 后面都會(huì)有 ACK 或者 NACK
在 START 信號(hào)或者 repeated START 信號(hào)后,從機(jī)必須重置自己的總線邏輯
一個(gè) START 后面緊跟著一個(gè) STOP 信號(hào),是非法格式
主機(jī) master 可以不產(chǎn)生 STOP 信號(hào),而是直接產(chǎn)生一個(gè) repeated START信號(hào)+另外一個(gè)設(shè)備地址,直接開(kāi)始訪問(wèn)另外一個(gè)設(shè)備
8、10-bit addressing
解析如下:
A9-A0 表示 10bits 地址
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
相關(guān)推薦
[ 導(dǎo)讀] 本文通過(guò)閱讀內(nèi)核代碼,來(lái)梳理一下I2C子系統(tǒng)的整體視圖。在開(kāi)發(fā)I2C設(shè)備驅(qū)動(dòng)程序時(shí),往往缺乏對(duì)于系統(tǒng)整體的認(rèn)識(shí),沒(méi)有一個(gè)清晰的思路。所以從高層級(jí)來(lái)分析一下
發(fā)表于 09-06 09:40
?565次閱讀
文章目錄linux I2C子系統(tǒng)框架在設(shè)備樹(shù)中添加從設(shè)備信息,mpu5060I2C driver 程序的編寫(xiě)mpu6050 I2C程序具體實(shí)現(xiàn)linux
發(fā)表于 02-10 06:06
I2C介紹 I2C總線是兩線式串行總線。 I2C總線最主要的優(yōu)點(diǎn)是其簡(jiǎn)單性和有效性,支持多主控(multimastering)。&nb
發(fā)表于 08-13 17:29
?0次下載
I2C總線器件應(yīng)用第一節(jié) I2C總線器件應(yīng)用概述I2C總線工作原理I2C總線系統(tǒng)結(jié)構(gòu)I2C總線
發(fā)表于 08-13 17:34
?0次下載
介紹I2C總線的基本概念和工作原理,敘述I2C總線擴(kuò)展器件ZLG7290的功能特點(diǎn)。在以S3C2410為微控制器,ZLG7290為I2C總線
發(fā)表于 12-29 16:52
?40次下載
本文通過(guò)閱讀內(nèi)核代碼,來(lái)梳理一下I2C子系統(tǒng)的整體視圖。在開(kāi)發(fā)I2C設(shè)備驅(qū)動(dòng)程序時(shí),往往缺乏對(duì)于系統(tǒng)整體的認(rèn)識(shí),沒(méi)有一個(gè)清晰的思路。所以從高層級(jí)來(lái)分析一下
發(fā)表于 12-31 10:40
?2201次閱讀
文章目錄linux I2C子系統(tǒng)框架在設(shè)備樹(shù)中添加從設(shè)備信息,mpu5060I2C driver 程序的編寫(xiě)mpu6050 I2C程序具體實(shí)現(xiàn)linux
發(fā)表于 12-06 13:36
?9次下載
文章目錄I2c協(xié)議和時(shí)序I2c介紹I2c硬件連接I2c總線的信號(hào)I2c總線寫(xiě)時(shí)序
發(fā)表于 12-06 14:06
?17次下載
硬件I2C對(duì)應(yīng)芯片上的I2C外設(shè),有相應(yīng)I2C驅(qū)動(dòng)電路,其所使用的I2C管腳也是專(zhuān)用的,因而效率要遠(yuǎn)高于軟件模擬的I2C;一般也較為穩(wěn)定,但
發(fā)表于 12-28 19:14
?81次下載
在應(yīng)該收到 ACK 信號(hào)的時(shí)候沒(méi)有收到 ACK 信號(hào),i2c controller 就會(huì)產(chǎn)生一個(gè) ACK error 的中斷,告訴 i2cdriver 發(fā)生了 ACK error。通常
發(fā)表于 07-22 14:39
?1994次閱讀
常見(jiàn)問(wèn)題 1、同一條 i2c bus 上所有的外設(shè)的 i2c addr 要不同 1)相同 address 注冊(cè)時(shí)沖突 [ 2.059184 ][xxx]i2c i2c- 1 :Fail
發(fā)表于 07-22 14:52
?1008次閱讀
I2C SW Architecture 【driver 驅(qū)動(dòng)層】由普通驅(qū)動(dòng)工程師負(fù)責(zé),【i2c 核心層】由 Linux 提供,【i2c 核心層】以下由芯片原廠負(fù)責(zé)。 I2C
發(fā)表于 07-22 16:01
?978次閱讀
I2C Data Structure 我們要搞懂一個(gè) Linux 子系統(tǒng),必須研究它的數(shù)據(jù)結(jié)構(gòu),搞懂每個(gè)結(jié)構(gòu)體存儲(chǔ)了什么東西,才能梳理清楚該子系統(tǒng)的架構(gòu)。 I2C
發(fā)表于 07-22 16:04
?880次閱讀
電子發(fā)燒友網(wǎng)站提供《I2C轉(zhuǎn)UART子系統(tǒng)設(shè)計(jì).pdf》資料免費(fèi)下載
發(fā)表于 08-28 10:27
?2次下載
在現(xiàn)代電子系統(tǒng)中,I2C總線作為一種多主機(jī)、多從機(jī)的串行通信協(xié)議,扮演著至關(guān)重要的角色。它允許多個(gè)設(shè)備共享同一總線,進(jìn)行數(shù)據(jù)傳輸,從而簡(jiǎn)化了系統(tǒng)設(shè)計(jì)并降低了成本。 I2C總線的基本特性
發(fā)表于 01-17 15:32
?74次閱讀
評(píng)論