本帖最后由 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; } |
|