【新提醒】基于STM32F0驱动BQ40Z50电源管理芯片
本帖最后由 yaosongjin 于 2020-9-4 12:01 编辑
最近用到BQ40Z50芯片,这个片子是走的SMBUS协议,与IIC协议类似,本以为很容易,把平台搭好后,发送命令没有响应,然后在网上找相关内容,找了几个程序移植过来都不能用,示波器和逻辑分析仪全都用上了,发命令的波形也是对的就是没有正常的响应,调试了3天都没有结果,正准备换个平台来测试的时候发现,等待应答的时候正常的波形是有一段长延时,试着在等待应答函数中加入了长延时后,通讯终于正常了,现将调试正常的程序分享出来,有需要的可以下载去用。
// Read_BQ40Z50_Data
uint16_t Read_BQ40Z50_Data(uint8_t Reg)
{
uint16_t data=0,data1=0;
IIC_Start(); //发送起始信号
Write_IIC_Byte(BQ40Z50_ADDR); //发送器件地址写操作
IIC_Wait_Ack();
Write_IIC_Byte(Reg); //发送寄存器地址
IIC_Wait_Ack();
IIC_Start();
Write_IIC_Byte(BQ40Z50_ADDR+1); //发送器件地址读操作
IIC_Wait_Ack();
data = Read_IIC_Byte(1); //读完第一个字节后发送应答信号
data1 = Read_IIC_Byte(0); //读完最后一个字节后发送非应答信号
IIC_Stop(); //发送停止信号
data=data|data1<<8;
return data;
}