尊敬的所有人:
我正在尝试实施 BQ27421 DS 中描述的初始化过程,在步骤4中说明:“Write 0x00 using BlockDataControl() command (0x61) to enable block data memory control" (使用 BlockDataControl()命令(0x61)写入0x00以启用块数据存储器控制)此操作失败,任何想法? 或特殊要求?
此致
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的所有人:
我正在尝试实施 BQ27421 DS 中描述的初始化过程,在步骤4中说明:“Write 0x00 using BlockDataControl() command (0x61) to enable block data memory control" (使用 BlockDataControl()命令(0x61)写入0x00以启用块数据存储器控制)此操作失败,任何想法? 或特殊要求?
此致
是的、此行在应用手册中不正确。 以下是此函数的更正版本:
//gauge write_data_class: 写入数据类
//pHandle: 通信适配器的句柄
//nDataClass: 数据类编号
//pData: 保存整个数据类(所有块)的缓冲区
//nLength: 数据类的长度(所有块)
//返回值: 0 =成功
int gauch_write_data_class (void *pHandle、unsigned char nDataClass、unsigned char *pData、unsigned char nLength)
{
unsigned char nRemainder = nLength;
unsigned int nOffset = 0;
unsigned char pCheckSum [2]={0x00、0x00};
unsigned int nData;
unsigned char nDataBlock = 0x00;
如果(nLength < 1)返回0;
操作
{
nLength = nRemainder;
如果(nLength > 32)
{
nRemainder = nLength - 32;
nLength = 32;
}
否则 nRemainder = 0;
nData =(nDataBlock << 8)| nDataClass;
监测计_cmd_write (pHandle、CMD_DATA_class、nData);
如果(gauge 写入(pHandle、CMD_BLOCK_DATA、pData、nLength)!= nLength)返回-1;
pCheckSum[0]= CHECK_SUM (pData、nLength);
监测计写入(pHandle、CMD_CHECK_SUM、pChecksum、1);
usleep(10000);
监测计_cmd_write (pHandle、CMD_DATA_class、nData);
监测计_read (pHandle、CMD_CHECK_SUM、pChecksum + 1、1);
if (pCheckSum [0]!= pCheckSum [1]) return -2;
pData += nLength;
nDataBlock++;
} while (nRemainder >0);
返回0;
}