国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

I2C操作筆記,以AT24C04為例

2019-11-08 18:52:42
字體:
來源:轉載
供稿:網友

1.前言

    對于大多數工程師而言,I2C永遠是一個頭疼的問題。相比UART和SPI而言,I2C的時序要復雜一些,I2C組合變化也豐富一些。在這里以AT24C04為例說明I2C使用過程中的一些注意點。

2.AT24C04操作示意圖

圖 AT24C04操作示意圖示意圖說明:示意圖分闡述了4種不同的操作方式,例如寫單個存儲單元,寫多個存儲單元,讀單個存儲單元和寫單個存儲單元。對于單個操作而言,上部為MCU通過I2C輸出的相關指令,下部為I2C設備的響應。例如寫單個存儲單元操作時,MCU發出I2C啟動,設備地址,寫標志位等,而I2C設備輸出多個ACK。(勘誤說明,圖AT24C04操作示意圖中,兩處R標志位之后分別缺少一個A應答。由于可編輯的原始圖片文件已經丟失,暫不能修正圖片本身請各位讀者原諒)

3.若干說明

3.1 基本操作方式

I2C設備的操作可分為寫單個存儲字節,寫多個存儲字節,讀單個存儲字節和讀多個存儲字節。相對于AT24C04而言,這些讀寫動作相對于內部的存儲單元而言,對于其他的具備I2C接口的AD或傳感器而言,存儲單元變成了寄存器單元。雖然存在概念上的差別,但是其操作原理確實一樣的。

3.2 無應答

在以上4種情況中,無應答為MCU發出,無應答意為MCU不需要從機輸出數據,MCU將會停止本次I2C操作。需要說明的是,無應答并不是一種異常情況。

3.3 I2C設備并不只有一個設備地址

這一點往往被忽略,一般情況下認為在I2C啟動信號之后的字節為I2C從機地址(7位)。對于AT24C04而言,內部具有4Kb存儲位,合計512字節。若需要訪問512字節內容,總共需要9根地址線(8位寬度),那么上圖中的存儲地址(8位長度)顯然還差了一位,那么就需要從設備地址中“借”1位,這就使得AT24C04具有兩個I2C地址,例如0x50和0x51。

3.4 存儲地址

相對于AT24C04而言,存儲地址占1個字節。若換成其他I2C設備,例如ADXL345,存儲地址被寄存器地址替代即可,其他操作方式相似。但是像AT24C32或AT24C64這樣的大容量EEPROM,則存儲地址需要2字節描述,也就意味著需要連續發送兩個字節地址信息且高字節在前。其他像BH1750這樣的光照芯片,存儲地址被具體的操作命令替代,使用I2C設備時需要因地制宜,切不可照搬教條。

3.5 連續讀和連續寫限制

AT24C04中存在頁的概念,一頁的大小為8字節,若果在單頁的范圍內,存儲地址累加,若超過該頁的最大地址,存儲地址回到頁開始處。所以對于連續讀和連續寫而言,最大的操作字節數為8。若需要操作的字節內容超過8字節,則需要進行翻頁操作,即寫入下一頁的起始存儲地址。

4 總結

    I2C設備有很多種,若掌握基本原理,便可見招拆招,那是I2C總線就不那么難了。

5.參考資料

【維基百科I2C】非常好的資料,轉載原文鏈接http://blog.csdn.net/xukai871105/article/details/15028117
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 萍乡市| 织金县| 九台市| 册亨县| 沐川县| 玉屏| 庄浪县| 连江县| 屏边| 西平县| 武功县| 灵台县| 千阳县| 塘沽区| 平南县| 肇州县| 平远县| 来安县| 苏尼特左旗| 光山县| 普陀区| 贵定县| 丽水市| 万盛区| 井研县| 镇巴县| 行唐县| 太和县| 府谷县| 绥棱县| 子长县| 弥勒县| 句容市| 呼和浩特市| 海林市| 奎屯市| 崇仁县| 玉林市| 沭阳县| 陆川县| 城口县|