標(biāo)題: STM32F1與BQ4050的通訊源碼分享 [打印本頁(yè)]

作者: 電子小白111    時(shí)間: 2021-4-28 16:08
標(biāo)題: STM32F1與BQ4050的通訊源碼分享
學(xué)習(xí)STM32的時(shí)候,應(yīng)用STM32F1與BQ4050做通訊,經(jīng)過(guò)各種調(diào)試,以及網(wǎng)上查找資料,IIC通訊等待應(yīng)答的時(shí)間需要拉長(zhǎng),IIC通訊的調(diào)試,通過(guò)示波器查看波形真的很重要

單片機(jī)源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "myiic.h"
  6. #include "key.h"

  7. //#define BQ4050_REG_TEMP                  0x08                //Temperature   U2
  8. //#define BQ4050_REG_VOLT                  0x09                //Voltage   U2#define BQ4050_REG_CURRENT          0x0A                //CURRENT   I2
  9. //#define BQ4050_REG_RSOC                  0x0D                //RelativeStateOfCharge U1
  10. //#define BQ4050_REG_FCC                  0x10                //FullChargeCapacity    U2
  11. //#define BQ4050_REG_RTE                  0x11                //run time to empty
  12. //#define BQ4050_REG_TTE                  0x12                //TimeToEmpty   U2
  13. //#define BQ4050_REG_TTF                  0x13                //TimeToFull    U2
  14. //#define BQ4050_REG_RMC                  0x0F                ///* Remaining Capacity */



  15. u8 DLHR_DATA[2] = {0x00};
  16. u8 buff[4]  = {0x00};

  17. uint16_t Read_BQ4050(uint8_t Commond)
  18. {
  19.         uint16_t data=0,data1=0;
  20.         u8 I2c_Address = 0x16;
  21.         //u8 Read_Commond = 0x09;

  22.        
  23.         IIC_Start();

  24.         IIC_Send_Byte(I2c_Address);//write
  25.        
  26.         IIC_Wait_Ack();
  27.        

  28.         IIC_Send_Byte(Commond);//
  29.                                
  30.         IIC_Wait_Ack();

  31.        
  32.         IIC_Start();
  33.         IIC_Send_Byte((I2c_Address)+1);//read

  34.         IIC_Wait_Ack();
  35.                
  36.   data = IIC_Read_Byte(1);//STATUS[7:0]
  37.         data1 = IIC_Read_Byte(0);//PRESSURE[23:16]
  38.        

  39. IIC_Stop();       
  40.         data=data|data1<<8;
  41.         return data;

  42.        
  43. }

  44. int main(void)
  45. {       
  46.         u8 t=0;       
  47.          u8 d=0;
  48.          uint16_t data1=0,data2=0;
  49.         delay_init();                     //延時(shí)函數(shù)初始化       
  50.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級(jí)分組2
  51.         uart_init(9600);         //串口初始化為9600
  52.         LED_Init();                         //初始化與LED連接的硬件接口
  53.          KEY_Init();
  54.         IIC_Init();
  55.         while(1)
  56.         {
  57.         //data=Read_BQ4050(0x09)&0x7fff;
  58.                 data1=Read_BQ4050(0x09);
  59.                 data2=Read_BQ4050(0x0d);
  60.        
  61.         delay_ms(300);
  62.                 printf("val= %d\r\n",data1);
  63.                         printf("Cap= %d\r\n",data2);
  64.        
  65.                        
  66.                 GPIO_ResetBits(GPIOA,GPIO_Pin_8);
  67.                        
  68.                                
  69.        
  70.         }
  71.                
  72.                
  73. }
復(fù)制代碼

所有資料51hei提供下載:
BQ4050.7z (184.45 KB, 下載次數(shù): 125)


作者: lxml    時(shí)間: 2021-12-14 14:28
感謝,可用
作者: xuelijun0451325    時(shí)間: 2023-12-19 13:05
是否可以分享代碼呢? 另外BQ4050與BQ3060物理層是否一致?
作者: xuelijun0451325    時(shí)間: 2023-12-19 13:06
BQ4050與BQ3060底層時(shí)序一致,命令地址不一致。
作者: xuelijun0451325    時(shí)間: 2023-12-20 15:17
xuelijun0451325 發(fā)表于 2023-12-19 13:06
BQ4050與BQ3060底層時(shí)序一致,命令地址不一致。

你好,我用您的示例代碼,發(fā)現(xiàn)無(wú)法與BQ4050通訊。用邏輯分析儀發(fā)現(xiàn)是丟失了應(yīng)答信號(hào)。
作者: yinqing452    時(shí)間: 2025-1-22 12:13
確認(rèn)可以用嗎?
作者: yinqing452    時(shí)間: 2025-1-22 13:48
確實(shí)可以用,非常感謝,我弄了一周也沒(méi)有搞定。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1