TI中文支持网
TI专业的中文技术问题搜集分享网站

STM32 通过I2C 读写 BQ27541 的 data flash, 失败的问题

我用单片机 STM32 通过I2C 操作 BQ27541 的 data flash,. 代码是按 TI 的 MSP430 的exsample 来写的 .  写入的数据和

读取的数据比较,是一致的。但重新上电,Block A 还是初始值 00, 是有什么命令没有送吗? 程序如下:

// Write & read back 32 bytes of data in Manufacturer Info Block A
for (i = 0; i < 32; i++)
{
TxData[i] = i; // Initialize data to be written
}
IIC_Write_One_Byte(bq27541CMD_DFDCNTL, 0);// BlockDataControl() = 0x00
IIC_Write_One_Byte(bq27541CMD_DFCLS, 58);// Write the subclass value
IIC_Write_One_Byte(bq27541CMD_DFBLK, 0);// Select offset within the flash
for (i = 0; i < 32; i++) // Compute the checksum of the block
{
sum += TxData[i]; // Calculate the sum of the values
}
checksum = (0xFF – (sum & 0x00FF)); // Compute checksum based on the sum
IIC_Write_One_Byte(bq27541CMD_DFDCKS, checksum); // Write checksum value
for (i = 0; i < 32; i++) // Write 32 bytes to Info Block A
{
IIC_Write_One_Byte((bq27541CMD_ADF+i), TxData[i]);
}
IIC_Read_Bytes(bq27541CMD_ADF,&RxData[0], 32); // Read the contents of the block
for (i = 0; i < 32; i++) // Check if writes were successful
{
if (TxData[i] != RxData[i]) // Tx & Rx data values match?
{
sum=0 ;//error
}
}

Sheldon Cai:

比较可能的原因是checksum没有写对

Bo Yuan3:

楼主辛苦了~ stm32调了好久,有应答 但是读出来的数据都是0xff    i2c程序能否分享一下  不胜感激

du dudu:

回复 Bo Yuan3:

你好,请问您STM32读取BQ27541的问题是怎么解决的?我也遇到了同样的问题。谢谢

user4809644:

回复 du dudu:

需要单片机读写的可以找我,qq 774606398

user4723031:

回复 du dudu:

你好,我也遇到这种情况,能否加一下QQ,交流一下 1026676022

user4723031:

回复 du dudu:

+QQ 1026676022 我也遇到了同样的问题

user4637920:

重新上电后,多次重复写呢,有用吗。写入后,过一段时间再读取看看是否写入成功。
可以用STM32软件模拟I2C试试。

赞(0)
未经允许不得转载:TI中文支持网 » STM32 通过I2C 读写 BQ27541 的 data flash, 失败的问题
分享到: 更多 (0)