调试SQ52205的模拟IIC通信记录
——————————————————————————————————————————
先说结论:
问题:IIC通讯失败,IIC从机未有ACK回应
问题点:IIC通讯线过长
解决办法:剪短IIC从通讯线
——————————————————————————————————————————
1.可以直接调试:将口拉高拉低
如果可以正常拉高拉低,说明硬件上IIC需要的上拉电阻没有问题+配置的引脚没有问题
如果不正常:
(1)检查模拟IIC引脚是否配置有问题
(2)检查模拟IIC是否正常初始化
可以调用一下函数直接操作GPIO观察示波器SDA和SCL的波形
gpio_bit_set(GPIO_I2C3_SCL_GPIO_PORT, GPIO_I2C3_SCL_PIN);
gpio_bit_set(GPIO_I2C3_SDA_GPIO_PORT, GPIO_I2C3_SDA_PIN);
gpio_bit_reset(GPIO_I2C3_SCL_GPIO_PORT, GPIO_I2C3_SCL_PIN);
gpio_bit_reset(GPIO_I2C3_SDA_GPIO_PORT, GPIO_I2C3_SDA_PIN);
在经过模拟IIC读取芯片的数据过程后,blRet的返回值时FALSE,直接进入程序的return FALSE步骤
BOOL SQ52205_GetCurrent(P_U16 pu16ReadData)
{
U8 u8ReadBuf[2] = {0};
U16 u16ReadData = 0 ;
BOOL blRet = FALSE;
blRet = HAL_SQ52205_READ_ARRAY(SQ52205_CURRENT, u8ReadBuf, 2);
if(blRet == FALSE)
{
return FALSE;
}
//电流计算方法 (04h寄存器的十进制)* LSB (mA) = A LSB = 0.00512/(05h的十进制)/分流器阻值(Ω)
u16ReadData = u8ReadBuf[0]<<8 | u8ReadBuf[1];
*pu16ReadData = u16ReadData * SQ52205_LSB; //单位0.1A
return TRUE;
}
2.KEIL代码调试分析
(1)进入失败的语句:HAL_SQ52205_READ_ARRAY
blRe

本文讲述了在调试SQ52205模块的模拟IIC通信过程中遇到的问题,发现IIC通讯失败,从机未回应ACK。通过排查确定问题在于IIC通讯线过长,解决办法是缩短线缆。文章详细介绍了如何使用GPIO进行模拟调试和KEIL代码分析,以及使用示波器进行波形分析的过程。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



