關(guān)于CH32X033的I2C軟件復(fù)位的用法

我在使用X033的I2C做主設(shè)備, 跟從設(shè)備通訊時, 經(jīng)常出現(xiàn)卡死在?

while(I2C_GetFlagStatus(I2C1,?I2C_FLAG_BUSY));

經(jīng)過初步診斷, 時鐘配置和I2C配置順序沒有問題, 測量發(fā)現(xiàn)I2C的SDA不知為何被拉低了,

我看數(shù)據(jù)手冊中的說明, 通過置位I2C外設(shè)的SWRST位, 可以復(fù)位I2C模塊:

I2C_SoftwareResetCmd(I2C_TypeDef?*I2Cx,?FunctionalState?NewState);

這個軟件復(fù)位的函數(shù)應(yīng)該何時調(diào)用呢??調(diào)用這個函數(shù)可以解決SDA被拉低的問題么?

大致情況我覺得跟這篇文章中應(yīng)該是一樣的:

I2C通訊過程中SDA被一直拉低

每次徹底斷電, 第一次調(diào)試時, I2C通訊沒問題, 通過Link復(fù)位MCU或者重新燒寫MCU程序進行調(diào)試時, 大概率會遇到這種問題.


您好,使用IIC時,硬件上注意要接上拉,軟件上外設(shè)時鐘使能先開啟GPIO時鐘再開啟IIC時鐘。下帖是關(guān)于硬件IIC卡死在各事件的解決方法,可以參考一下。后續(xù)可通過郵箱(lzs@wch.cn)和我溝通。

https://www.cnblogs.com/liaigu/p/17616466.html

?


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频