主機發送示例
- 按GPIO章節引腳數字復用功能的相關描述,將SCL、SDA映射到需要的引腳,并配置SCL、SDA引腳為開漏輸出模式;
- 設置SYSCTRL_APBEN1.I2Cx為1,使能I2Cx模塊的時鐘;
- 向SYSCTRL_APBRST1.I2Cx依次寫入0、1,復位I2Cx模塊;
- 配置I2Cx_BRR,使SCL的時鐘速率符合應用需求;
- 設置I2Cx_BRREN為1,使能SCL時鐘發生器;
- 設置I2Cx_CR.EN為1,使能I2C模塊;
- 設置I2Cx_CR.STA為1,總線嘗試發送START信號;
- 等待I2Cx_CR.SI變為1,START信號已發送到總線上;
- 查詢I2Cx_STAT,如果該寄存器值為0x08或0x10,繼續執行下一步驟,否則進行出錯誤處理。
- 向I2Cx_DR中寫入SLA+W,設置I2Cx_CR.STA為0,設置I2Cx_CR.SI為0,發送SLA+W;
- 等待I2Cx_CR.SI變為1,SLA+W已經發送到總線上;
- 查詢I2Cx_STAT,如果該寄存器值為0x18,繼續執行下一步聚,否則進行出錯處理;
- 向I2Cx_DR寫入等發送的數據,設置I2Cx_CR.SI為0,發送數據;
- 等待I2Cx_CR.SI變為1,數據已發送到總線上;
- 查詢I2Cx_STAT,如果該寄存器為0x28,繼續執行下一步驟,否則進行出錯處理;
- 如待發送的數據未完成,則跳轉到步驟13繼續執行;
- 設置I2Cx_CR.STO為1,設置I2Cx_CR.SI為0,發送STOP停止信號,結束本次傳輸。
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
主板
+關注
關注
54文章
2360瀏覽量
76811 -
編程
+關注
關注
90文章
3716瀏覽量
97178 -
I2C
+關注
關注
28文章
1556瀏覽量
131218 -
GPIO
+關注
關注
16文章
1328瀏覽量
56218
發布評論請先 登錄
相關推薦
熱點推薦
CW32L083產品介紹
CW32L083是一款基于eFlash的單芯片低功耗微控制器,集成了ARM?Cortex?-M0+
核心,主頻高達64MHz,高速嵌入式存儲器(高達256K字節的FLASH和
高達24K字節
發表于 09-14 06:41
CW32L083微控制器數據手冊
定時器以及一組高級控制 PWM 定時器。CW32L083 可以在 -40° C 到 85° C 的溫度范圍內工作,供電電壓寬達 1.65V ~ 5.5V。支持 Sleep 和 DeepSleep兩種低功耗工作模式。
發表于 09-14 06:27
CW32L083 I2C主板發送編程示例
評論