bq27750 電量計芯片,適用于手持儀器的電量管理,本次上傳的為本人初步使用,供學習參考,包括有TI的說明書;以壓縮文件:BQ2750.RAR
單片機源程序如下:
- /* Includes ------------------------------------------------------------------*/
- //#include "bq27200.h"
- #include "bq27750/bq27750.h"
- #include "globalmvf.h"
- // control register params
- #define BQ27200_SOFT_FRSET 0x42 //全復位
- #define BQ27200_SOFT_PRSET 0x48 //部分復位
- #define BQ27750_RS 20 // Resistor sense mOhm
- // Register
- #define BQ27750_REG_CTRL_L 0X00 //控制寄存器
- #define BQ27750_REG_CTRL_H 0X01
- #define BQ27750_REG_TEMP_L 0x06 //溫度寄存器
- #define BQ27750_REG_TEMP_H 0x07
- #define BQ27750_REG_VOLT_L 0x08 //電壓寄存器
- #define BQ27750_REG_VOLT_H 0x09
- #define BQ27750_REG_FLAGS_L 0x0A //電池狀態寄存器
- #define BQ27750_REG_FLAGS_H 0x0B
- #define BATTERY_FLAGS_CHARGING 0X00 //正充電
- #define BATTERY_FLAGS_DISCHARGING 0X40 //正放電
-
- #define BQ27750_REG_INSTCURR_L 0x0C //SENSOR電阻上瞬時電流 1秒刷新一次
- #define BQ27750_REG_INSTCURR_H 0x0D
- #define BQ27750_REG_AI_L 0x14 //平均電流寄存器
- #define BQ27750_REG_AI_H 0x15
- #define BQ27750_REG_RM_L 0x10 //預測的剩余容量
- #define BQ27750_REG_RM_H 0x11
- #define BQ27750_REG_FCC_L 0x12 //預設的滿充容量
- #define BQ27750_REG_FCC_H 0x13
- #define BQ27750_REG_INT_TEMP_L 0x28 //內部溫度 0.1K為單位
- #define BQ27750_REG_INT_TEMP_H 0x29
- #define BQ27750_REG_CCOUNT_L 0x2A //放電次數
- #define BQ27750_REG_CCOUNT_H 0x2B
- #define BQ27750_REG_SOC_L 0x2C //充電百分比
- #define BQ27750_REG_SOC_H 0x2D
- #define BQ27750_REG_SOH_L 0x2E //設計容量的百分比作為電池健康狀況
- #define BQ27750_REG_SOH_H 0x2F
- #define BQ27750_REG_CV_L 0x30 //將充電電壓
- #define BQ27750_REG_CV_H 0x31
- #define BQ27750_REG_CC_L 0x32 //將充電電流
- #define BQ27750_REG_CC_H 0x33
- #define BQ27750_REG_DC_L 0x3C //設計容量
- #define BQ27750_REG_DC_H 0x3D
- #define BQ27750_REG_MAC_L 0x3E //制造商數據訪問指令
- #define BQ27750_REG_MAC_H 0x3F
- #define BQ27750_REG_MAC_DATA_L 0x40 //制造商數據
- #define BQ27750_REG_MAC_DATA_H 0x5F
- #define BQ27750_REG_MAC_DATA_SUM_L 0x60 //制造商數據校驗和
- #define BQ27750_REG_MAC_DATA_LEN_H 0x61 //制造商數據長度
- //====設置設計參數 FLASH數據--------------------------------------------------------------------------------
- #define DA_CONFIG_VALUE 0X10 //1串電池 睡眠使 默認值 0X11 2串電池 睡眠使
- #define DESIGN_CAPACITY_MAH_VALUE 2000 //MAH 設計容量MAH 默認值 5300MAH
- #define DESIGN_CAPACITY_CWH_VALUE 770 //CWH 設計容量CWH 默認值 2040CWH
- #define DESIGN_VOLTAGE_VALUE 4100 //MV 設計電壓MV 默認值 3850MV
- //#define DEVICE_CHEMISTRY //按默認的鋰電 LION 默認值 鋰電 LION
- #define COV_VALUE 4300 //過高電壓值 默認值 4300MA
- #define CUV_VALUE 2500 //過低電壓值 默認值 2500MA
- #define SHUTDOWN_VALUE 2300 //關斷電壓值 默認值 2300MA
- #define OCC_VALUE 2000 //最大流電電流值 默認值 5000MA
- #define OCD_VALUE 1500 //最大放電流值 默認值 5000MA
- #define ASCC_VALUE 0X77 //100MA 5秒 //瞬時短路充電電流值 默認值 0X77 //100MA 5秒
- #define ASCD_VALUE 0X77 //100MA 5秒 //瞬時短路放電電流值 默認值 0X77 //100MA 5秒
- #define SOV_VALUE 4500 // 電池永久損壞值 默認值 4500MA
- #define TEMP_SENSOR_SELECT 0X01 //內外溫度傳感器選擇 選擇內部的 默認值 0x03 內外兩個
- #define UTC_VALUE 0 //充電溫度值 0度 默認值 0
- #define UTD_VALUE 0 //放電溫度值 0度 默認值 0
- //#define BCAST //沒有找到
- //====設置設計參數 FLASH地址--------------------------------------------------------------------------------
- #define ADDR_DA_CONFIG_VALUE 0X45E2 // 默認值 0X45E2=0X18
- #define ADDR_DESIGN_CAPACITY_MAH_VALUE 0X4563 // 默認值 0X4563 =5300MAH 現設計為2000MAH
- #define ADDR_DESIGN_CAPACITY_CWH_VALUE 0X4565 // 默認值 0X4565 =2040CWH 現設計為770CWH
- #define ADDR_DESIGN_VOLTAGE_VALUE 0X4567 // 默認值 0X4567 =3850MV 現設計為4100MV
- #define ADDR_DEVICE_CHEMISTRY 0X4095 //默認值 鋰電 LION
- #define ADDR_COV_VALUE 0X4602 //默認值 4300MA 現設計為4300MV //過高電壓值
- #define ADDR_CUV_VALUE 0X45FB //默認值 2500MA 現設計為2500MV //過低電壓值
- #define ADDR_SHUTDOWN_VALUE 0X4547 //默認值 2300MA 現設計為2300MV //關斷電壓值
- #define ADDR_OCC_VALUE 0X4611 //默認值 9000MA 現設計為2000 //最大流電電流值
- #define ADDR_OCD_VALUE 0X4617 //默認值 6000MA 現設計為1500 //最大放電流值
- #define ADDR_ASCC_VALUE 0X46E7 //默認值 0X77 //100MA 0.4MS 現設計為 0X77 //100MA 0.4MS //瞬時短路充電電流值
- #define ADDR_ASCD_VALUE 0X45E8 //0X77 //100MA 0.4MS //瞬時短路放電電流值 默認值 0X77 //100MA 0.4MS
- #define ADDR_SOV_VALUE 0X4648 //默認值 4500MA 現設計為 4500 // 電池永久損壞值
- #define ADDR_TEMP_SENSOR_SELECT 0X45E1 // 0X01 //內外溫度傳感器選擇 選擇內部的 默認值 0x03 內外兩個
- #define ADDR_UTC_VALUE 0X462A // 默認值 0 現設計為 0 //充電溫度值 0度
- #define ADDR_UTD_VALUE 0X462F // 默認值 0 放電溫度值 0度 現設計為 0
- //#define BCAST //沒有找到
- //#define SlaveAddress_read 0xAB //1 27200
- //#define SlaveAddress_write 0xAA //0
- #define SlaveAddress_write 0xAa // BIT0=1 27750
- #define SlaveAddress_read 0xAb // BIT0=0
- static void SDA_OUT(void); //PC2
- static void SDA_IN(void); //PC3
- static void BQ_I2C_DELAY_x100ns(u8 x100ns_data);
- static void BQ_I2C_DELAY(void);
- static u8 BQ_I2C_START(void);
- static void BQ_I2C_STOP(void);
- static void BQ_I2C_Ack(void);
- static void BQ_I2C_NoAck(void);
- static u8 BQ_I2C_WaitAck(void); //返回=1有ACK,=0無ACK
- static void BQ_I2C_SendByte(u8 SendByte); //數據從高位到低位
- //static u8 BQ_I2C_ReceiveByte(void); //數據從高位到低位
- static u8 BQ_I2C_ReceiveByte(unsigned char ack);
- //################################### IO口模擬法##############################################
- extern void BQ27750_IO_I2C_Configuration(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- //PC3----SCL
- //PC2----SDA
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);
- GPIO_InitStructure.GPIO_Pin =GPIO_Pin_2|GPIO_Pin_3;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//最高輸出速度50M
- GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_OD; //GPIO_Mode_Out_PP;////GPIO_Mode_Out_PP; //GPIO_Mode_AF_OD; // GPIO_Mode_Out_PP; //輸出 GPIO_Mode_IPU GPIO_Mode_Out_OD)
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- BQ_SDA_H; //總線初始
- BQ_SCL_H;
- }
- static void write_BQ_Delay(uint16_t X10MS)
- {
- TIM3_X10MS(X10MS); //主程序運行前延時2秒
- while(timer3_X10ms>0);
- TIM_Cmd(TIM3, DISABLE);
- }
-
- //IO方向設置
- static void SDA_IN(void) //PC2
- {
-
- //1.FUNCTION MODE:
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC , ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // GPIO_Mode_Out_OD; //開漏 GPIO_Mode_IPU; //上拉輸入
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- //2.REGISTER MODE:
- //RCC->APB2ENR |= 0x00000010; //C口時鐘開啟
- // GPIOC->CRL&=0XFFFFF0FF; //取PC2 IN
- // GPIOC->CRL|=0X00000800;
-
- }
- static void SDA_OUT(void) //PC2
- {
- //1.FUNCTION MODE:
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC , ENABLE);
- GPIO_InitStructure.GPIO_Pin =GPIO_Pin_2;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//最高輸出速度50M
- GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_OD; //開漏 GPIO_Mode_Out_PP; //輸出
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- //2.REGISTER MODE:
- //RCC->APB2ENR |= 0x00000010; //C口時鐘開啟
- // GPIOC->CRL&=0XFFFFF0FF; //取PC2 OUT
- // GPIOC->CRL|=0X00000300; // 3/7
-
- }
- //extern void BQ27200_Write_Design_Capacity(u16 capacity_xmah)
- //{
- //u8 set_CapPercent=1;
- //u8 val_l=0,val_h=0;
- //u16 val_76=0,set_capacity=0;
- //float val=0;
- //
- //set_CapPercent=1; //100%
- ////高字節值:(Design_Capacity*R)/(256*3.57) : Design_Capacity=2000mah R=20毫歐 (2000*20)/(256*3.57)=43;
- ////低字節值:0X00
- //
- //set_capacity=capacity_xmah;
- //val=set_capacity*BQ27200_RS;
- //val=(val/256)/3.57;
- //val=val*256;
- //val_76=((int)val+0)*set_CapPercent;
- //
- //val_l=val_76/256; //高字節
- //val_h=val_76%256; //低字節
- //
- //
- //BQ_I2C_WriteByte(val_l, SlaveAddress_write, BQ27200_REG_AR_L);
- //write_BQ_Delay(1); //10MS
- //
- //BQ_I2C_WriteByte(val_h, SlaveAddress_write, BQ27200_REG_AR_H);
- //write_BQ_Delay(1); //10MS
- //BQ_I2C_WriteByte(0X20, SlaveAddress_write, BQ27200_REG_MODE); //WRTNAC=1
- //write_BQ_Delay(1); //10MS
- //BQ_I2C_WriteByte(0Xa9, SlaveAddress_write, BQ27200_REG_CTRL); //
- //write_BQ_Delay(1); //10MS
- //BQ_I2C_WriteByte(0X40, SlaveAddress_write, BQ27200_REG_MODE); //WRTNAC=1
- //write_BQ_Delay(1); //10MS
- //}
- extern void BQ27750_Write_SETTING_DESIGN_PARAMETERS(void)
- {
- //BQ_I2C_WriteByte(0x0012, 0XAA, 0X3E);
- //BQ_I2C_WriteByte(0X00, 0XAA, 0X00); BQ_I2C_WriteByte(0X22, 0XAA, 0X01);
-
- BQ_I2C_WriteByte_toflash(DA_CONFIG_VALUE , SlaveAddress_write, ADDR_DA_CONFIG_VALUE);
- BQ_I2C_WriteByte_toflash(DESIGN_CAPACITY_MAH_VALUE , SlaveAddress_write, ADDR_DESIGN_CAPACITY_MAH_VALUE);
- BQ_I2C_WriteByte_toflash(DESIGN_VOLTAGE_VALUE, SlaveAddress_write, ADDR_DESIGN_VOLTAGE_VALUE);
- BQ_I2C_WriteByte_toflash(COV_VALUE , SlaveAddress_write, ADDR_COV_VALUE);
- BQ_I2C_WriteByte_toflash(CUV_VALUE , SlaveAddress_write, ADDR_CUV_VALUE);
- BQ_I2C_WriteByte_toflash(SHUTDOWN_VALUE , SlaveAddress_write, ADDR_SHUTDOWN_VALUE);
- BQ_I2C_WriteByte_toflash(OCC_VALUE , SlaveAddress_write, ADDR_OCC_VALUE);
- BQ_I2C_WriteByte_toflash(OCD_VALUE , SlaveAddress_write, ADDR_OCD_VALUE );
- BQ_I2C_WriteByte_toflash(ASCC_VALUE , SlaveAddress_write, ADDR_ASCC_VALUE );
- BQ_I2C_WriteByte_toflash(ASCD_VALUE , SlaveAddress_write, ADDR_ASCD_VALUE );
- BQ_I2C_WriteByte_toflash(SOV_VALUE , SlaveAddress_write, ADDR_SOV_VALUE);
- BQ_I2C_WriteByte_toflash(TEMP_SENSOR_SELECT, SlaveAddress_write, ADDR_TEMP_SENSOR_SELECT);
- BQ_I2C_WriteByte_toflash(UTC_VALUE , SlaveAddress_write, ADDR_UTC_VALUE);
- BQ_I2C_WriteByte_toflash(UTD_VALUE, SlaveAddress_write, ADDR_UTD_VALUE);
- //
- }
- extern void BQ27200_Write_Design_Capacity(u16 capacity_xmah)
- {
-
- u8 set_CapPercent=1;
- u8 val_l=0,val_h=0;
- u16 val_76=0,set_capacity=0;
- float val=0;
-
- set_CapPercent=1; //100%
- //高字節值:(Design_Capacity*R)/(256*3.57) : Design_Capacity=2000mah R=20毫歐 (2000*20)/(256*3.57)=43;
- //低字節值:0X00
-
- set_capacity=capacity_xmah;
- val=set_capacity*BQ27750_RS;
- val=(val/256)/3.57;
- val=val*256;
- val_76=((int)val+0)*set_CapPercent;
-
- val_l=val_76/256; //高字節
- val_h=val_76%256; //低字節
-
-
- BQ_I2C_WriteByte(0x2b, SlaveAddress_write, 0X76); //ILMD: (2000*20)/(256*3.57)=43=0x2b
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0x77, SlaveAddress_write, 0X77); //SEVF: (3000/8)-256=119=0X77
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0xA2, SlaveAddress_write, 0X78); //SEV1: (3350/8)-256=162=0XA2
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0x0E, SlaveAddress_write, 0X79); //ISLC: (50*20)/7.14=14=0X0E
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0x58, SlaveAddress_write, 0X7A); //DMFSD:
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0x88, SlaveAddress_write, 0X7B); //TAPER: (100*20)/228 =8 ,BIT7=1
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0x70, SlaveAddress_write, 0X7C); //PKCXFG: GPIO禁止外用 4.112V -9.8UV 固定補償
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0X16, SlaveAddress_write, 0x7D); //IMLC: (500*20)/457=22=0x16
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0X42, SlaveAddress_write, 0x7e); //DCOMP:
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0X7C, SlaveAddress_write, 0x7F); //TCOMP:
- write_BQ_Delay(1); //10MS
- //BQ_I2C_WriteByte(0X20, SlaveAddress_write, BQ27200_REG_MODE); //WRTNAC=1
- //write_BQ_Delay(1); //10MS
- //BQ_I2C_WriteByte(0Xa9, SlaveAddress_write, BQ27200_REG_CTRL); //
- //write_BQ_Delay(1); //10MS
- //BQ_I2C_WriteByte(0X40, SlaveAddress_write, BQ27200_REG_MODE); //WRTNAC=1
- //write_BQ_Delay(1); //10MS
- }
- extern void BQ27750_Write_Design_Capacity(u16 capacity_xmah)
- {
-
- u8 set_CapPercent=1;
- u8 val_l=0,val_h=0;
- u16 val_76=0,set_capacity=0;
- float val=0;
-
- set_CapPercent=1; //100%
- //高字節值:(Design_Capacity*R)/(256*3.57) : Design_Capacity=2000mah R=20毫歐 (2000*20)/(256*3.57)=43;
- //低字節值:0X00
-
- set_capacity=capacity_xmah;
- val=set_capacity*BQ27750_RS;
- val=(val/256)/3.57;
- val=val*256;
- val_76=((int)val+0)*set_CapPercent;
-
- val_l=val_76/256; //高字節
- val_h=val_76%256; //低字節
- }
- static void BQ_I2C_DELAY_x100ns(u8 x100ns_data)
- {
- u16 i=1; // //實驗調到0.2US左右
- u8 h=0;
-
- for(h=0;h<x100ns_data;h++)
- {
- for(;i>0;i--) ;
- }
- }
- static void BQ_I2C_DELAY(void)
- {
- u16 i=800; //800--1 //實驗調到5-6US左右
- //u16 i=4;
- while(i) i--;
- }
- static void BQ_I2C_DELAY1(void)
- {
- u16 i=400; //400--1 //實驗調到5-6US左右
- //u16 i=4;
- while(i) i--;
- }
- static void BQ_I2C_DELAY2(void)
- {
- u16 i=200; //200--1 //實驗調到5-6US左右
- //u16 i=4;
- while(i) i--;
- }
- static x_sft(u8 shift_cnt)
- {
- u8 kk=2;
- for(;shift_cnt>0;shift_cnt--) {kk=kk<<1;}
- }
-
- static u8 BQ_I2C_START(void)
- {
-
- SDA_OUT(); //SDA輸出
-
- BQ_SDA_H; //釋放SDA總線
- BQ_I2C_DELAY();
- BQ_SCL_H;
- BQ_I2C_DELAY();
-
- //if(!BQ_SDA_READ) return 0; //SDA線低電平則總線忙 退出
-
- BQ_SDA_L; //開始信號
- BQ_I2C_DELAY();
-
- //if(BQ_SDA_READ) return 0; //SDA線高電平則總線出錯 退出
- BQ_SCL_L;
- BQ_I2C_DELAY();
-
- return 1;
- }
- static void BQ_I2C_STOP(void)
- {
- SDA_OUT(); //SDA輸出
- BQ_SDA_L;
- BQ_I2C_DELAY();
- BQ_SCL_H;
- BQ_I2C_DELAY();
-
- BQ_SDA_H; //停止信號
- BQ_I2C_DELAY();
- BQ_I2C_DELAY();
- }
- static void BQ_I2C_Ack(void)
- {
-
- SDA_OUT(); //SDA輸出
- BQ_SCL_L;
- BQ_I2C_DELAY();
-
- BQ_SDA_L;
- BQ_I2C_DELAY();
-
- BQ_SCL_H;
- BQ_I2C_DELAY();
-
- BQ_SCL_L;
- BQ_I2C_DELAY();
- }
- static void BQ_I2C_NoAck(void)
- {
- u8 ft=2;
-
- //BQ_SCL_L; //應答脈沖形成前置0
- //x_sft(2);
- //SDA_OUT(); //SDA輸出
-
- BQ_SCL_L;
- BQ_I2C_DELAY();
-
- BQ_SDA_H;
- BQ_I2C_DELAY();
-
- BQ_SCL_H;
- BQ_I2C_DELAY();
-
- BQ_SCL_L;
- BQ_I2C_DELAY();
- }
- static u8 BQ_I2C_WaitAck(void) //返回=1有ACK,=0無ACK
- {
- u8 ft=2;
- u8 ucErrTime=0;
-
- SDA_IN(); //SDA設置為輸入
-
- BQ_SDA_H;
- BQ_I2C_DELAY();
-
- BQ_SCL_H;
- BQ_I2C_DELAY();
-
-
- while(BQ_SDA_READ) //檢測應答的數據
- {
- ucErrTime++;
- if(ucErrTime>250)
- {
- //BQ_I2C_STOP();
- BQ_SCL_L;
- return 0;
- }
- }
-
- BQ_SCL_L;
- return 1;
-
- }
- static void BQ_I2C_SendByte(u8 SendByte) //數據從高位到低位
- {
- u8 i=8,ft=1;
-
- SDA_OUT(); //SDA輸出
-
- while(i--)
- {
- BQ_SCL_L;
- BQ_I2C_DELAY1();
-
- if(SendByte&0x80) BQ_SDA_H;
- else BQ_SDA_L;
-
- SendByte<<=1;
- BQ_I2C_DELAY2();
-
- BQ_SCL_H;
- BQ_I2C_DELAY2();
- }
-
- BQ_SCL_L;
- }
- /**************************************************************
- * 功能描述:讀1字節
- ** 輸入參數:ack,1--發送ACK
- 0--發送nACK
- ** 輸出參數: 無
- ** 返 回:返回讀取的一字節數據
- ***************************************************************/
- static u8 BQ_I2C_ReceiveByte(unsigned char ack) //數據從高位到低位
- {
- u8 i=8;
- u8 ReceiveByte=0;
- SDA_IN();//SDA設置為輸入
-
- BQ_SDA_H;
-
- while(i--)
- {
- ReceiveByte<<=1;
-
- BQ_SCL_L;
- BQ_I2C_DELAY1();
-
- BQ_SCL_H;
- BQ_I2C_DELAY1();
-
- if( BQ_SDA_READ) ReceiveByte|=0x01;
-
- }
-
- BQ_SCL_L;
-
- return ReceiveByte;
- }
- // 寫入1字節數據 待寫入數據 待寫入地址 器件類型(BQ27200)
- extern u8 BQ_I2C_WriteByte(u8 SendByte, u8 WriteAddress, u16 RrgAddress)
- {
- u32 j,ft=2;
- BQ_I2C_START();
- //if(!BQ_I2C_START()) return 0;
- //BQ_I2C_SendByte( WriteAddress&0xFE);//寫器件地址
- BQ_I2C_SendByte( WriteAddress);//寫器件地址 AB
- BQ_I2C_WaitAck();
- // if(!BQ_I2C_WaitAck()) //等應答 為0時返回 即器件沒有應答
- // { BQ_I2C_STOP();
- // return 0;
- // }
-
- BQ_I2C_SendByte((u8)((RrgAddress>>8)&0XFF)); //設置寄存器地址
- BQ_I2C_WaitAck();
- // if(!BQ_I2C_WaitAck()) //等應答 為0時返回 即器件沒有應答
- // { BQ_I2C_STOP();
- // return 0;
- // }
-
- BQ_I2C_SendByte((u8)(RrgAddress&0XFF)); //設置寄存器地址
- BQ_I2C_WaitAck();
- // if(!BQ_I2C_WaitAck()) //等應答 為0時返回 即器件沒有應答
- // { BQ_I2C_STOP();
- // return 0;
- // }
-
- BQ_I2C_SendByte(SendByte); //寫數據
- BQ_I2C_WaitAck();
- // if(!BQ_I2C_WaitAck()) //等應答 為0時返回 即器件沒有應答
- // { BQ_I2C_STOP();
- // return 0;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
bq27750.7z
(1.09 MB, 下載次數: 43)
2020-6-28 02:54 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|