主题中讨论的其他器件: C2000WARE、 TMS320F28375S
尊敬的 Vamsi 先生:
我们更新了用 TMS320F28384D 替代的定制板版本并成功执行示例程序, 使用 驱动程序库中的示例闪存程序将数据加载到 CPU1-FLASH 存储器 sector6 (0x98000)中。 C:\ti\c2000Ware_3_04_00_00\driverlib\f2838x\examples\C28x\FLASH (它使用闪存 API 成功存储数据)。
但是在 f28375s(EEPROM emulation)中,我们开发了将数据存储在0x82000和0x84000位置。 在 f28384d 的0x82000和0x84000位置读写数据时,加载程序时显示错误。
我们 的闪存相关的先前查询。
自定义电路板 版本1.0, 我们已成功使用 tms320f28375s 并存储、擦除数据。
我们当前的要求已取代 f28384d、并为 闪存移植了 EEPROM.c 和 EEPROM.h、但它不存储数据。
我们已将75s 移植到84d、并在此处附加文件供您参考。请确认 f28384d 的 EEPROM 文件中的更改、以便读取闪存中的 wirte 数据。
以下功能更改:
f28375s 工作代码
空 EEPROM_ProgramSingleByte1 (UINT16 DATA[]、UINT16 A、UINT16 WRITE_ADDRESS)
{
内部参考;
for (ref=0;ref<255;ref++)
Write_Buffer1[ref]=0;
uint16 i=0;
uint16 sec=0;
uint32 u32Index=0;
EALLOW;
PUMPREQUEST = 0x5A5A0002;
将 eFlashPump_BANK0();
Flash0EccRegs.ecc_enable.bit.enable = 0x0;
for (i=0;<a;i++))
WRITE_Buffer1[i]= DATA[i]; //准备要编程的数据
Flash0EccRegs.ecc_enable.bit.enable = 0x0;//设置编程长度
for (sec=0、u32Index=WRITE_ADDRESS;(u32Index <(WRITE_ADDRES+A))&&
(oReturnCheck = Fapi_Status_Success);sec+=8、u32Index+=8)
{
oReturnCheck=Fapi_issueProgrammingCommand ((UINT32 *)(u32Index)、Write_Buffer1+sec、
8、
0、
0、
Fapi_DataOnly);
}
ReleaseFlashPump();
EDIS;
}
f28384d-不工作
void EEPROM_ProgramSingleByte1 (uint16 data[]、uint16 a、uint16 write_address)
{
内部参考;
for (ref=0;ref<255;ref++)
Write_Buffer1[ref]=0;
uint16 i=0;
uint16 sec=0;
uint32 u32Index=0;
EALLOW;
PUMPREQUEST = 0x5A5A0002;
FLASH_MPREMPumpSemaphore (FLASH_CPU1_WRAPMPER_);
FLASH_enableECC (FLASH0ECC_BASE);
for (i=0;<a;i++))
WRITE_Buffer1[i]= DATA[i]; //准备要编程的数据
// Flash0EccRegs.ecc_enable.bit.enable = 0x0;//设置编程长度
FLASH_enableECC (FLASH0ECC_BASE);
for (sec=0、u32Index=WRITE_ADDRESS;(u32Index <(WRITE_ADDRES+A))&&
(oReturnCheck = Fapi_Status_Success);sec+=8、u32Index+=8)
{
oReturnCheck=Fapi_issueProgrammingCommand ((UINT32 *)(u32Index)、Write_Buffer1+sec、
8、
0、
0、
Fapi_DataOnly);
}
flash_releasePumpSemaphore();
EDIS;
}
两个项目文件之间的差异是
(f28375s-it 是双头文件,函数具有位字段和 driverlib)
PUMPREQUEST = 0x5A5A0002;
将 eFlashPump_BANK0();
Flash0EccRegs.ecc_enable.bit.enable = 0x0;
ReleaseFlashPump();
(f28384d-我们使用 driverlib 移植了相同的函数、请指导我们解决问题。
PUMPREQUEST = 0x5A5A0002;
FLASH_MPREMPumpSemaphore (FLASH_CPU1_WRAPMPER_);
FLASH_enableECC (FLASH0ECC_BASE);
flash_releasePumpSemaphore();
我们使用了相同的闪存示例"2838x_flash_api_lnk.cmd 文件"
谢谢、此致、
Shriram J