TI中文支持网
TI专业的中文技术问题搜集分享网站

STM32 与bq78350通过SMBus通信异常求助

STM32 MCU与SMBus通信,有如下问题求助:

1)MCU发送了0x16地址之后,能够发现有两个ACK。

2)接着MCU发送Command "0x44 0x35 0x00"之后一直都没有收到ACK。

具体参见附件图片。(因只示波器只有一条线,只能提供数据线的波形)。请帮忙看下是什么原因导致78350一直没有回复ACK。

Hugo Zhang:

先要确认一下BQ78350是否正常工作。可以用EV2400和bqStudio跟它通讯,看能不能正常通讯。

David Rich:

回复 Hugo Zhang:

多谢回复。 

我们检测了78350输入的电压,是满足高于3.2V的。发送第一个0x16命令能看到响应。

如果没有使用EV2400和bqStudio如何判断78350的工作状态?

Hugo Zhang:

回复 David Rich:

因为你读的0x44是一个特殊的command(ManufacturerBlockAccess())。你可以试一下读0x09 Voltage()。

David Rich:

回复 Hugo Zhang:

我们尝试过多个命令了,包括09这个,情况一样。master端发送了字节之后没有收到ack,是否和78350端的stretch有关系?

Hugo Zhang:

回复 David Rich:

下面是单节电量计的I2C读取方式,BQ78350的SMBus也是类似的,可以参考一下。

Yuanmou He:

发送命令后要注意延时。第一次地址位立即接受应答。后面命令位延时80us再延时。接受数据每一组间隔50us。有EV2400就可以用示波器抓时序来看

给你个程序参考

/**********************************读取剩余电量**********************************/

unsigned char RelativeState[3]={0x16,0x0D,0x17};unsigned char CRC_Buff[5];

void RelativeStateOfCharge(void){ unsigned char CRC_Val; SMbus_Start();//开始 SMBUS_Send_Byte(RelativeState[0]); SMBUS_Wait_Ack(); SMBUS_Send_Byte(RelativeState[1]); SMBD_Init(1); SMBC=0; SMBD=1; Delay80us(); SMBUS_Wait_Ack(); SMbus_Start();//开始 SMBUS_Send_Byte(RelativeState[2]); SMBUS_Wait_Ack(); SMBD_Init(1); SMBC=0; SMBD=1; Delay45us(); Read_Data[0]=SMBUS_Read_Byte();//接受低位数据 SMBUS_Ack(); //发送ACK SMBD_Init(1); SMBC=0; SMBD=1; Delay50us(); Read_Data[1]=SMBUS_Read_Byte();//接受高位数据 SMBUS_Ack(); //发送ACK SMBD_Init(1); SMBC=0; SMBD=1; Delay50us(); Read_Data[2]=SMBUS_Read_Byte();//接受CRC SMBUS_Ack(); SMBD_Init(1); SMBC=0; SMBD=0; Delay50us(); SMbus_Stop();//停止

CRC_Buff[0]=RelativeState[0]; CRC_Buff[1]=RelativeState[1]; CRC_Buff[2]=RelativeState[2]; CRC_Buff[3]=Read_Data[0]; CRC_Buff[4]=Read_Data[1]; CRC_Val=CRC8(CRC_Buff,5);//CRC校验 if(CRC_Val==Read_Data[2])//校验成功 { CRC_OK=1; } else { }//校验失败舍弃数据}

David Rich:

回复 Yuanmou He:

非常感谢再次回复。

今天通过EV2300对接调测78350,正常。

切换到STM32F407之后问题依然是发帖携带图片的情况。不知道为何在发送0x16之后会出现两个ACK。不知道之前是否有人出现过类似问题。

Hugo Zhang:

回复 David Rich:

你看看这个页面里的链接有没有帮助吧

http://www.ti.com/tool/bq27xxxsw-linux

赞(0)
未经允许不得转载:TI中文支持网 » STM32 与bq78350通过SMBus通信异常求助
分享到: 更多 (0)