主题中讨论的其他器件: bq29330、 BQSTUDIO
您好、TI、
我们正在为最终产品使用 BQ20Z90+bq29330、其中需要两个热敏电阻电压输入来从位于不同位置的两个电池组读取温度。
现在、我们需要从主机设备将 DFI 映像刷写到 BQ20Z90、在本例中是运行 Linux 内核4.19的处理器。
因此、我们正在寻找 C 源实现方案、我们仅找到了用于读取和写入 Dataflash 的 VB6代码。
现在、通过遵循文档"SLUA379E"、我们可以使我们的逻辑用于读取、但不确定它是否正确。
我们发现人们在使用 VB6代码编写 DFI 文件时面临损坏电量监测计的问题。
因此、我们首先尝试读取闪存、然后尝试写入 DataFlash。
由于我们只尝试使用以下逻辑读取 BQ20Z90、BQ20Z90 FG 损坏、我们只获得0x0B 的从器件地址
希望我们能够通过"TI bq 电量监测计评估软件"恢复 BQ20Z90
这是我们 使用的逻辑。
在内核模块中使用以下代码、因为通过对 smbus 器件使用 userspace 应用程序、它在非密封和完全访问模式下也没有响应。
有 ROM 命令0x09和0xC0被使用、有没有任何文档可以获得 ROM 命令的详细信息。它看起来就像一个魔法数字、没有任何详细信息。
===================================================================================================
char * gauch_flash_read (void * pHandle、char * pfs)
{
tI2C * tmpHandle =(tI2C *) pHandle;
Int iNumberOfRows;
long lError;
Int iRow;
Int iIndex;
int iLen=32;
//int iFileNumber;
unsigned char yRowData[32]={0};
unsigned char yDataFlashImage[0x700]={0};
//为清晰起见,不使用常量
// 0x700是数据闪存大小。
iNumberOfRows = 0x700/32;
//将器件置于 ROM 模式
// lError = WriteSMBusInteger (0x0、0xF00);
lError = gauge _cmd_write (pHandle、0x00、BootROM);
udelay (90);
// DoDelay (0.01);
//逐行读取数据闪存
对于(iRow = 0;iRow <= iNumberOfRows - 1;iRow++)
{
//设置行的地址。 H9 (0x09)是 ROM 模式命令。
// 0x200是数据闪存开始的行号。
//乘以32得到每行开始的实际物理地址
// lError = WriteSMBusInteger (0x9、(0x200 + iRow)* 32);
lError = gauge _cmd_write (tmpHandle、0x09、(0x200 + iRow)* 32);
udelay (90);
//阅读行。 &HC (0x0c)是 ROM 模式命令。
// lError = ReadSMBusByteArray (&H、yRowData、iLen);
lError = gauge 读取(tmpHandle、0x0C、yRowData、iLen);
udelay (90);
//将此行复制到大字节数组中的位置
对于(iIndex = 0;iIndex <= 32 - 1;iIndex++){
yDataFlashImage[(iRow * 32)+ iIndex]= yRowData[iIndex];
printk (Kern_alert "0x%02x、"、iIndex、yRowData[iIndex]);
}
}
////将数据闪存映像写入文件
// iFileNumber = FileSystem.FreeFile;
// Open(sFileName);// Put #iFileNumber ,, yDataFlashImage
//关闭();//执行电量监测计程序
// lError = WriteSMBusCommand (0x8);
// lError = gauge _cmd_write (pHandle、0x00、BootROM);
PFS = yDataFlashImage;
lError = gauge _control (tmpHandle、0x08);
//udelay (90);
返回 PFS;
}
export_symbol (gauge 闪存读取);
===========================================================================================================================================
谢谢
Girish



