[問題] BQ40Z80 SMBus通訊問題

看板ASM作者 (弄牛連)時間3年前 (2021/01/13 17:29), 3年前編輯推噓2(207)
留言9則, 3人參與, 3年前最新討論串1/1
各位前輩好,小弟目前有需求用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://www.ptt.cc/bbs/ASM/M.1610530174.A.01A.html ※ 編輯: nc23nick (61.216.36.13 臺灣), 01/13/2021 17:33:12

01/14 00:17, 3年前 , 1F
重新再看一次通訊協定
01/14 00:17, 1F

01/14 11:59, 3年前 , 2F
大大我有依照TI SMBus文件去做撰寫
01/14 11:59, 2F

01/14 12:04, 3年前 , 3F
我另外有對照開發板上TI那顆MSP430的動作,來比對我寫的
01/14 12:04, 3F

01/14 12:05, 3年前 , 4F
時序有無正常,目前就一直卡在沒有正確資料回傳~
01/14 12:05, 4F
※ 編輯: nc23nick (61.216.36.13 臺灣), 01/14/2021 12:08:26

01/14 13:34, 3年前 , 5F
cmd間隔看能不能跟Ti一樣,中間的start bit再確認一下
01/14 13:34, 5F

01/21 11:09, 3年前 , 6F
想確認電路焊接正確,driver up電路正常
01/21 11:09, 6F

01/25 09:30, 3年前 , 7F
小的不才,果真如h大所說driver up電路有問題,換個上拉
01/25 09:30, 7F

01/25 09:31, 3年前 , 8F
電阻問題全沒了,也不用自己調整時序,直接拿stm32 I2C
01/25 09:31, 8F

01/25 09:31, 3年前 , 9F
controller driver來讀取即可,謝謝各位大大的幫忙~
01/25 09:31, 9F
文章代碼(AID): #1V_hr-0Q (ASM)