[問題] BQ40Z80 SMBus通訊問題

作者: nc23nick (尼克林)   2021-01-13 17:29:32
各位前輩好,小弟目前有需求用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
作者: god145145   2021-01-14 00:17:00
重新再看一次通訊協定
作者: nc23nick (尼克林)   2021-01-14 11:59:00
大大我有依照TI SMBus文件去做撰寫我另外有對照開發板上TI那顆MSP430的動作,來比對我寫的時序有無正常,目前就一直卡在沒有正確資料回傳~
作者: god145145   2021-01-14 13:34:00
cmd間隔看能不能跟Ti一樣,中間的start bit再確認一下
作者: hizuki (ayaka)   2021-01-21 11:09:00
想確認電路焊接正確,driver up電路正常
作者: nc23nick (尼克林)   2021-01-25 09:30:00
小的不才,果真如h大所說driver up電路有問題,換個上拉電阻問題全沒了,也不用自己調整時序,直接拿stm32 I2Ccontroller driver來讀取即可,謝謝各位大大的幫忙~

Links booklink

Contact Us: admin [ a t ] ucptt.com