I2C串行通信(內(nèi)部集成總線(串行總線))
主要用在板級之間硬件通信
同步半雙工總線
同步有時鐘線
數(shù)據(jù)線一根(同一時間只能接受或發(fā)送)
(設(shè)計為了節(jié)省硬件資源)
I2C在通信中實現(xiàn)方法:(協(xié)議)
一主多從常見
多主多從也允許
高電平(上拉電阻)使從設(shè)備處于空閑狀態(tài)
主設(shè)備只能同時與一個從設(shè)備通信
首先選擇要通信的設(shè)備,在選擇傳輸方向
時鐘線SCL
數(shù)據(jù)線SDA
傳輸協(xié)議:
1.起始信號
數(shù)據(jù)線由高電平變低電平(下降沿)產(chǎn)生起始信號
2.結(jié)束信號
數(shù)據(jù)線由低電平變高電平(上升沿)產(chǎn)生起始信號
3.校驗
主設(shè)備定好傳輸方向勃刨,接收方產(chǎn)生應(yīng)答
應(yīng)答ACK
非應(yīng)答NACK
產(chǎn)生應(yīng)答/非應(yīng)答之前兩根線都是高電平
應(yīng)答則數(shù)據(jù)線拉低
非應(yīng)答則數(shù)據(jù)線不變/拉高
應(yīng)答/非應(yīng)答后會釋放數(shù)據(jù)線,會到高電平
主->從
從設(shè)備有設(shè)備號:7/10bit(以7bit為主)2的7次方 = 128
0代表主 向 從 發(fā)(發(fā)送/寫入)
1代表從 向 主 發(fā)(接受/讀取)
第9bit產(chǎn)生應(yīng)答
然后傳輸數(shù)據(jù)
最后結(jié)束位
在時鐘線的低電平進行數(shù)據(jù)值的電平變換
在時鐘線的高電平鎖存
幀格式為9位
LSB低位在前
MSB高位在前(I2C都是MSB)
設(shè)備號(設(shè)備地址)
設(shè)備內(nèi)地址
EEPROM(E2PROM)
ROM只讀存儲器
RAM讀寫(隨機性)存儲器(內(nèi)存)
ROM起始全是1
只能由1改成0
PROM
EPROM光?可擦寫
EEPROM電信號可擦寫
EEPROM存儲量小兴枯,造價高
ROM類掉電不丟失
RAM讀寫效率高由缆,掉電丟失
SRAM靜態(tài)隨機性存儲器(三極管汗盘,MOS管)
穩(wěn)定性高皱碘,造價高
DRAM動態(tài)隨機性存儲器(電容)
電容會放電,所以要定時刷新(充電)
嵌入式一般SRAM隐孽,大內(nèi)存一把DRAM
SDRAM
DDR
FLASH閃存(類似于ROM)塊設(shè)備
Norflash(無塊管理)
Nanflash類似于磁盤(時間長會壞塊)
塊設(shè)備代表存儲設(shè)備
擦除以塊為單位擦除
端序:
大端序(高字節(jié)在低位置上)尸执,小端序(高字節(jié)在高位置上)
Char型無端序概念
Int型0x12345678
12 34 56 78(大端序)
78 56 34 12(小端序)
ARM架構(gòu)與INTER架構(gòu)端序會不同(跨平臺)
1.寫:起始+設(shè)備號+傳輸方向+應(yīng)答
7bit ??1bit(0) 1bit
+從設(shè)備內(nèi)地址+應(yīng)答
???8bit ???????1bit
+數(shù)據(jù)+應(yīng)答+.....
8bit ?1bit
+結(jié)束
2. 讀:起始(主)+設(shè)備號+傳輸方向+應(yīng)答+從設(shè)備內(nèi)地址+應(yīng)答
+(結(jié)束)(主)(對同一個設(shè)備調(diào)整方向時家凯,可以不發(fā)結(jié)束位,但要有起始位)
+起始(主)+設(shè)備號+傳輸方向+應(yīng)答
+數(shù)據(jù)(從)+應(yīng)答(主)+.....
+數(shù)據(jù)(從)+非應(yīng)答(主)+結(jié)束(主)
7位從設(shè)備地址:
1010 +a0 +a1+a2
ROM分塊
RAM分頁
I2C
寫的話如失,只能一頁一頁的寫
讀的話,可以從頭到尾的讀
AT24C02讀寫:
按字節(jié)寫:
每寫一個字節(jié)送粱,要帶一個地址
按頁寫:范圍(1-16字節(jié)(Byte))
跨頁褪贵,重新發(fā)地址