微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI电源管理交流 > 求STM32和BQ76930通信例程

求STM32和BQ76930通信例程

时间:10-02 整理:3721RD 点击:

各位大佬,谁做过bq76930和STM32通信的吗,请教一下程序要怎么写的?本人是一名学生,想请教一下大家,最好有例程分享一下,我的邮箱2982148529@qq.com.

HI

   TI网站上只提供了与MCU通讯的说明:  http://www.ti.com.cn/cn/lit/an/slva626b/slva626b.pdf

   主要是参考I2C部分,是C2000还是MCU不是重点。

你们的参考程序主函数就这么点东西,实现了什么功能?有点看得不是很懂,求解析一下下面这段程序的意思和实现功能,谢谢。

int main(void)
{
int Result;

WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

DISABLE_INT;

ClockInitialise();

I2CInitialise();

InitialisebqMaximo();

while(1)
{
Result = UpdateVoltageFromBqMaximo();
}

return Result;
}

int UpdateVoltageFromBqMaximo()
{
int Result = 0, i = 0;
unsigned char *pRawADCData = NULL;
unsigned int iTemp = 0;
unsigned long lTemp = 0;

Result = I2CReadBlockWithCRC(BQMAXIMO, \
VC1_HI_BYTE, \
&(Registers.VCell1.VCell1Byte.VC1_HI), \
30);

pRawADCData = &Registers.VCell1.VCell1Byte.VC1_HI;
for (i = 0; i < 15; i++)
{
iTemp = (unsigned int)(*pRawADCData << 8) + *(pRawADCData + 1);
lTemp = ((unsigned long)iTemp * iGain)/1000;
lTemp += Registers.ADCOffset;
CellVoltage[i] = lTemp;
pRawADCData += 2;
}

return Result;
}

int InitialisebqMaximo()
{
int result = 0;

Registers.Protect1.Protect1Bit.SCD_DELAY = SCDDelay;
Registers.Protect1.Protect1Bit.SCD_THRESH = SCDThresh;
Registers.Protect2.Protect2Bit.OCD_DELAY = OCDDelay;
Registers.Protect2.Protect2Bit.OCD_THRESH = OCDThresh;
Registers.Protect3.Protect3Bit.OV_DELAY = OVDelay;
Registers.Protect3.Protect3Bit.UV_DELAY = UVDelay;

result = GetADCGainOffset();

Gain = (365 + ((Registers.ADCGain1.ADCGain1Byte & 0x0C) << 1) + ((Registers.ADCGain2.ADCGain2Byte & 0xE0)>> 5)) / 1000.0;
iGain = 365 + ((Registers.ADCGain1.ADCGain1Byte & 0x0C) << 1) + ((Registers.ADCGain2.ADCGain2Byte & 0xE0)>> 5);

Registers.OVTrip = (unsigned char)((((unsigned short)((OVPThreshold - Registers.ADCOffset)/Gain + 0.5) - OV_THRESH_BASE) >> 4) & 0xFF);
Registers.UVTrip = (unsigned char)((((unsigned short)((UVPThreshold - Registers.ADCOffset)/Gain + 0.5) - UV_THRESH_BASE) >> 4) & 0xFF);

result = ConfigureBqMaximo();

return result;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top