主题中讨论的其他部件:BQ2.7441万-G1
大家好,
我目前正在尝试使用BQ2.7441万-G1燃油表进行通信,并使用技术参考手册第11页中的步骤编辑设计容量(以下链接)。
http://www.ti.com/lit/ug/sluuac9/sluuac9.pdf
现在,根据我目前所写的内容(如下所示),我已经能够 成功地将新的设计容量写入BQ2.7441万-G1。
//驱动程序库 #include "driverlib.h"
//标准库包括 #include <stdbool.h> #include <string.h>
// BQ2.7441万燃油表工具包
#include "BQ2.7441万_Definitions.h" #include "FuelGauge.h" // I2C主配置参数 const eUSI_I2C_MasterConfig i2cConfig = { EUSCI_B_I2C_CLOCKSOURCE_SMCLK, // SMCLK时钟源 300万, // SMCLK = 3MHz EUSCI_B_I2C_SET_DATA_RATE_100KBPS, //所需的I2C时钟为100kHz 0, //无字节计数器阈值 EUSCI_B_I2C_NO_AUTO_STOP //无自动停止 }; int main(void){ //禁用监视程序 MAP_WDT_A_HoldTimer(); MAP_GPIO_setAsPeripheralModuleFunctionInputPin (I2Cport,SDApin + SCLPin,GPIO主要模块功能); //为I2C选择端口6 -设置引脚4,5 MAP_I2C_INITMaster (EUSCI_MODULE,&i2cConfig); //在100kbs的速度下将I2C主设备初始化到SMCLK,不带自动停止功能 MAP_I2C_setSlaveAddress (EUSCI_MODULE,BQ2.7441万_I2C_ADDRESS); //指定从属地址 MAP_I2C_setMode (EUSCI_MODULE,EUSCI_B_I2C_Transmit_MODE); //将主中继器设置为传输模式 MAP_I2C_enableModule (EUSCI_MODULE); //启用I2C模块以启动操作 MAP_I2C_clearInterruptFlag (EUSCI_MODULE,EUSCI_B_I2C_Transmit_INTERRUPT0 + ESCI_B_I2C_receive _INTERRUPT0); //启用和清除中断标志 MAP_Interrupt_enableInterrupt (EUSCI_moduleINT); //启用主接收中断 UINT16_t BatCapacity = 1200;// mAh FuelGauge SetBatteryCap (BatCapacity); Int batteryCap = FuelGauch_GetBatteryCap(); Int stateOfCharge = FuelGauch_GetStateOfCharge (); Int voltage = FuelGauch_GetVoltage(); 同时(1);}
其中FuelGauch_SetBatteryCap()是我写的一个函数,基本上遵循第11页上的步骤。 其他职能部门也会发送相应的推荐,以了解其名称的含义。
当我尝试通过添加driverlib命令将DCO时钟频率设置为非默认值时,会出现问题...
MAP_CS_setDCOFrequency(800万); //将DCO (时钟)设置为指定的时钟速度 MAP_CS_INITICClockSignal (CS_SMCLK,CS_DCOCLK_SELECT,CS_CLock_DICROLOR_1); //将SMCLK连接到DCO
以及更改I2C配置中的频率...
// I2C主配置参数
const eUSI_I2C_MasterConfig i2cConfig =
{
EUSCI_B_I2C_CLOCKSOURCE_SMCLK, // SMCLK时钟源
800万, // SMCLK = 8MHz
EUSCI_B_I2C_SET_DATA_RATE_100KBPS, //所需的I2C时钟为100kHz
0, //无字节计数器阈值
EUSCI_B_I2C_NO_AUTO_STOP //无自动停止
};
我的函数FuelGauch_SetBatteryCap()将尝试从BQ2.7441万-G1 (步骤7)检索旧校验和值,并得到0x00,这是意外的。 然后在计算新校验和时
根据此值并发送到BQ2.7441万-G1 (步骤11),它不会确认。
我更改导致I2C故障的DCO频率的方式是否有问题? 在设计容量设置过程中出现故障的时刻是否与此相关?
提前感谢!