作者nc23nick (弄牛连)
看板ASM
标题[问题] BQ40Z80 SMBus通讯问题
时间Wed Jan 13 17:29:32 2021
各位前辈好,小弟目前有需求用TI BQ40Z80做为电源管理系统,然後用stm32 MCU来读取
电池的资讯,由於BQ40Z80是走SMBus通讯协定
上网爬文发现STM32硬体上支援SMBus是乎有问题,大部份文章都是说明用软体方式模拟
SMBus时序来读取,於是便参考其方式撰写轫体,程式码如下
u8 bq40z80_Get_voltage(u8 address,char* buff)
{
SMbus_Start();
SMbus_Send_Byte(0x16);
GPIO_SetBits(GPIOB,GPIO_Pin_11); // SDA_H
SMbus_Wait_Ack();
SMbus_Send_Byte(0x09);
GPIO_SetBits(GPIOB,GPIO_Pin_11); // SDA_H
Delay_us(80);
SMbus_Wait_Ack();
SMbus_Start();
SMbus_Send_Byte(0x17);
GPIO_SetBits(GPIOB,GPIO_Pin_11); // SDA_H
SMbus_Wait_Ack();
*(buff+0) = SMbus_Read_Byte(1);
*(buff+1) = SMbus_Read_Byte(1);
*(buff+2) = SMbus_Read_Byte(1);
SMbus_Stop();
}
在测试过程中传送Device Addresshoo和ComCode BQ40Z80EVM开发板都有回ACK,但是最後
资料回传都是0,小弟一直无法解决此问题,是否能有高手能帮忙小弟,非常感谢!
https://imgur.com/CTAgU5i
https://imgur.com/nUoBiiw
MSP430回传
https://imgur.com/iQWYk3C
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.216.36.13 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/ASM/M.1610530174.A.01A.html
※ 编辑: nc23nick (61.216.36.13 台湾), 01/13/2021 17:33:12
1F:推 god145145: 重新再看一次通讯协定 01/14 00:17
2F:→ nc23nick: 大大我有依照TI SMBus文件去做撰写 01/14 11:59
3F:→ nc23nick: 我另外有对照开发板上TI那颗MSP430的动作,来比对我写的 01/14 12:04
4F:→ nc23nick: 时序有无正常,目前就一直卡在没有正确资料回传~ 01/14 12:05
※ 编辑: nc23nick (61.216.36.13 台湾), 01/14/2021 12:08:26
5F:推 god145145: cmd间隔看能不能跟Ti一样,中间的start bit再确认一下 01/14 13:34
6F:→ hizuki: 想确认电路焊接正确,driver up电路正常 01/21 11:09
7F:→ nc23nick: 小的不才,果真如h大所说driver up电路有问题,换个上拉 01/25 09:30
8F:→ nc23nick: 电阻问题全没了,也不用自己调整时序,直接拿stm32 I2C 01/25 09:31
9F:→ nc23nick: controller driver来读取即可,谢谢各位大大的帮忙~ 01/25 09:31