主题中讨论的其他器件: BQSTUDIO
您好!
我将遵循 SLUUBD4 BQ27220用户手册中第6.1章的示例。
步骤1–7正常工作、但步骤8 (MACDataLen)中的数据长度返回36。 由于 MACData 缓冲区中只有32个字节(最大值)的数据传输是可能的、那么36是怎么发生的?
在执行步骤5之前、我还尝试将 MACDataLen 设置为32、但仍返回36。
我遇到问题的例程(已连接)是 BQ27220:get_data_32 (...)。 在 mbed.org K64F 平台上完成
uint32_t BQ27220::get_data_32 (BQ27220_typedef& dataSTR、uint16_t sub_cmmd、int length) { if (length > 32) length = 32; i2c_buf[0]= bq_sub;//0x2c i2c_buf[2] = sub_bu02x ;i20[idr、i20_buf = i2c.x]、i2ctrab_buf、i2c = i2c、i20_buf、i2c = i20_buf、i2c.h、i2c I2C_buf、3、false); wait_us (66); 线程::等待(5); I2C_buf[0]= BQ_MACDATASUM;//0x60 _i2c.write ((int) BQ27220_ADDR、i2c_buf、1、true); _i2c.read ((int) BQ27220_ADDR + 1、i2c_buf、1、false); Wait_us (66); 线程::Wait (5); dataSTR.macSumReg = dataSTR.i2c_Bufx[0]; //PC.printf ("dat-32c:%02x \r\n"、i2c_buf[0]); I2C_buf[0]= BQ_MACDATALEN;//0x61 _i2c.write ((int) BQ27220_ADDR、i2c_buf、1、true); _i2c.read (((int) BQ27220_ADDR + 1、i2c_buf、1、false); wait_us (66); 线程:等待(5); datastr.macLenReg = datalx.i2c_Bufx[0]; uint8_t lx = datalx.macLenReg; //PC.printf ("dat-32L:%02x \r\n"、i2c_buf[0]); if (STR > macLenReg;//c.tr = 0x2c_buf ;iQt = 0x2c_buf;i20_buf = 0x2c.tr = 0x2c_buf;iQt = 0x2c_buf true); _i2c.read (((int) BQ27220_ADDR + 1、i2c_buf、length、false); wait_us (66); 线程::等待(5); for (int i = 0;i < length;i++){ dataSTR.macData[i]= dataSTR.i2c_Bufx[i]; PC.printf ("%02x "、dataReg.iSTR_Bufx[i]); } dataSTR.checksum = calc_mdfx[i]、dataReg (%02x)、dataReg dataSTR.checksum); (%DMT.32)、dataReg (%dr、data021x (%dr)、dataReg:%dr、data021r、dataReg:%dr、data023"(%dr、dataReg:%dr)