主题中讨论的其他器件:HALCOGEN、
我正在尝试使用组7中的 EEPROM 仿真模式。 我 修改了程序块 API 以与组7配合使用。 还向 FLASH_Sectors 阵列添加了其他闪存扇区、以便固件可以将其拉取。
我尝试擦除地址0xF0201000、并成功执行此操作。
但是、当我尝试写入时、写入在检查条件下失败。
}
REG_PTR =(volatile uint32_t*) 0xFF87288;
*REG_PTR = 0x00000005;
*REG_PTR = 0x00040002;
*REG_PTR = 0x00000002;
status = fapi_BlockProgram (file_Bank_location、write_address、(uint32_t)&file、sizeof (struct file_download_properties));
退货状态;
块程序函数看起来是这样的
寄存器 uint32_t src = Data_Start_Address;
寄存器 uint32_t dst = Flash_Start_Address;
寄存器 uint32_t bytes_lese_size_in_bytes;
uint8_t i、ucBank;
uint32_t status;
uint32_t 字节;
uint32_t Freq_in_MHz;
FREQ_IN_MHz = SYS_CLK_FREQ;
如果(size_in_bytes < 16)
bytes = size_in_bytes;
其他
字节= 16;
对于(i = 0;i < NUMBEROFSECTORS-1;i++){
if (Flash_Start_Address <(uint32_t)(flash_sector[i+1].start))
{
ucBank = flash_sector[i].bankNumber;
中断;
}
}
if ((Flash_Start_Address == APP_START_ADDRESS)||(ucBank ==1)||(Flash_Start_Address == 0)||
(ucBank == 7)){
Fapi_initializeFlashBanks (Freq_in_MHz);//用于 API Rev2.01 *
Fapi_setActiveFlashBank ((Fapi_FlashBankType) ucBank);
if (Bank = 0){
STATUS= Fapi_enableMainBankSectors (0xFFFF);//用于 API 2.01*/
}
否则{
STATUS = Fapi_enableEpromBankSecors (0xFFFFFFFF、0xFFFFFFFF);
}
while (fapi_check_FSM_ready_busy!= fapi_Status_FsmReady);
while (fapi_get_FSM_status!= fapi_Status_Success);
}
while (bytes_ele> 0)
{
fapi_issueProgrammingCommand ((uint32_t *) dst、
(uint8_t *) src、
(uint32_t)字节、
0、
0、
Fapi_AutoEccGeneration);
while (fapi_check_FSM_ready_busy =fapi_Status_FsmBusy);
while (fapi_get_FSM_status!= fapi_Status_Success);
src += bytes;//size_in_bytes;
dst +=字节;//size_in_bytes;
bytes_elee_ele= bytes;//size_in_bytes;
if (bytes_elsage < 16){
bytes = bytes_eles;
}
}
#ifdef DEBUG_MSG_L3
UART_putString (UART、"\r 已编程闪存:");
UART_send32BitData (UART、size_in_bytes);
UART_putString (UART、"字节。 \r ");
#endif
fapi_flushPipeline();
状态= Flash_Program_Check (Flash_Start_Address、Data_Start_Address、Size_in_bytes);
返回(状态);
有什么建议吗?