【Nations】N32G030 I2C 使用問題

最近在使用國民 N32G030 開發板,調試一個 I2C 從設備,參考其 EEPROM 工程,話不多說,直接上問題。

硬體平台:N32G030F6S7_STB 開發板

IDE : keil

SDK 版本:V2.1.0

將例程編譯下載到板子上,由於使用的板子與例程引腳不一樣,做以下修改: 

I2C 引腳 PA6 PA7

我們這裡外接了一個從設備,地址為 0X75,可以使用 EEPROM 也可以使用其它的 I2C 從設備,協議基本和 EEPROM 相同,根據從設備修改一下從機地址和波特率就可以,我們抓取 I2C 出來的波形如下: 

翻開了晶片手冊,對應的讀取數據協議應該如下圖所示:
 
對比波形圖可以看出,MCU 在讀取數據第 9 個時鐘為 NACK 後先是發了一個開始信號,再發的停止信號,而從設備要求的時序則是在需要直接發個停止信號,所以這裡會造成從設備出錯,下一次再去發送命令從設備則會返回 NACK ,因為此時從設備工作不正常了,那麼需要怎麼去掉這個起始信號呢?

通過 UM 發現 I2C 主機讀取流程說明中對於讀取一個字節有要求,需要提前使能 stop , 

我們在 I2C_EE_ReadBuffer 函數中做以下修改:

提前使用 stop ,添加 Ack Enable 

修改完後即可正常讀取單個字節,時序與手冊對應 

參考資料:

《UM_N32G030 Series User Manual V2.1》

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論