您好!
我认为我在文档"使用 bq275xx 投入生产..."中发现了错误 (http://www.ti.com/lit/an/slua449f/slua449f.pdf)
我在尝试使芯片正常工作时学到的是、如果您将数据发送到芯片、则应将其发送到寄存器0x64和0x65、然后读取0x66以确认所需的操作。 但是、在本文档中、当尝试擦除 IF 行时、流程图告诉我:
sendCommand (0x00、0x03);
sendCommand (0x01、0x00);
sendCommand (0x02、0x00);
sendCommand (0x00、0x00);
sendCommand (0x01、0x01);
这意味着要写入0x64的校验和将是0x04、但流程图声称它应该是0x03、因此这两行似乎是一个错误? 此外,我还发现了另一个芯片级文档( http://www.ti.com/lit/an/slua504a/slua504a.pdf ),该文档的问题是校验和甚至不会写入0x64。
我在这里的问题是 一个错误、或者它应该是这样的吗? 如果是这种情况、我在哪里可以了解为什么会发生这种情况? 因为我在从0x66读取并尝试将其与0进行比较时遇到错误、 我似乎无法挽救芯片、因为它将停留在永久 ROM 模式、即使我尝试通过写入以下内容将其从 ROM 模式中取出:
sendExtendedCommand (0x00、0x00、0x0f);
sendCommand (0x64、0x0F);
sendCommand (0x65、0x00);
下面是两个相关流程图的一小部分。 第一个来自 bq275xx、第二个来自 BQ274xx、都在第9页上。 我还包括了 SEND 命令的实现方法的一个小工具。 计时器睡眠以毫秒为单位。 我发现、如果添加了延迟、芯片的响应速度会更高。
int sendCommand (uint8_t reg、uint8_t 命令){ timer_sleep (5); uint8_t buffer[2]={0x00、0x00}; buffer[0]= reg; buffer[1]=命令; 返回 i2c_write (I2C2、 addr、sizeof (buffer)、buffer); } void sendExtendedCommand (uint8_t reg、uint8_t COMMAND_MSB、 uint8_t COMMAND_LSB){ uint8_t buffer[3]={0x00、0x00、0x00}; buffer[0]= reg; buffer[1]= reg;buffer[1]= COMMAND_LSB; Buffer[2]= COMMAND_MSB; i2c_write (I2C2、ADDR、3、buffer); }