This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS3137:TMS570LS3137闪存组1扇区4、5、6、7、8、9、10、11无法擦除/写入(其它扇区可被擦除/写入)

Guru**** 2618835 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/788550/tms570ls3137-tms570ls3137-flash-bank-1-sectors-4-5-6-7-8-9-10-11-unable-to-erase-write-other-sectors-are-can-be-erased-write

器件型号:TMS570LS3137

对于在 http://processors.wiki.ti.com/index.php/TMS570_Hercules_MCU_Bootloader 位置提供的 TMS570LS3137器件引导加载程序示例 ,在以绿色标记的扇区之后,我能够擦除和重新编程,但地址从0x00200000到0x002E0000不能擦除或写入这些扇区。  

(void *) 0x00000000、0x08000、0、0、0xFF87000、

(void *) 0x00008000、0x08000、0、1、0xFF87000、

(void *) 0x00010000、0x08000、0、2、0xFF87000、

(void *) 0x00018000、0x08000、0、3、0xFF87000、

(void *) 0x00020000、0x20000、0、4、0xFF87000、

(void *) 0x00040000、0x20000、0、5、0xFF87000、

(void *) 0x00060000、0x20000、0、6、0xFF87000、

(void *) 0x00080000、0x20000、0、7、0xFF87000、

(void *) 0x000A0000、0x20000、0、8、0xFF87000、

(void *) 0x000C0000、0x20000、0、9、0xFF87000、

(void *) 0x000E0000、0x20000、0、10、0xFF87000、

(void *) 0x00100000、0x20000、0、11、0xFF87000、

(void *) 0x00120000、0x20000、0、12、0xFF87000、

(void *) 0x00140000、0x20000、0、13、0xFF87000、

(void *) 0x00160000、0x20000、0、14、0xFF87000、

(void *) 0x00180000、0x20000、1、0、0xFF87000、

(void *) 0x001A0000、0x20000、1、1、0xFF87000、

(void *) 0x001C0000、0x20000、1、2、0xFF87000、

(void *) 0x001E0000、0x20000、1、3、0xFF87000、

(void *) 0x00200000、0x20000、1、4、0xFF87000、

(void *) 0x00220000、0x20000、1、5、0xFF87000、

(void *) 0x00240000、0x20000、1、6、0xFF87000、

(void *) 0x00260000、0x20000、1、7、0xFF87000、

(void *) 0x00280000、0x20000、1、8、0xFF87000、

(void *) 0x002A0000、0x20000、1、9、0xFF87000、

(void *) 0x002C0000、0x20000、1、10、0xFF87000、

(void *) 0x002E0000、0x20000、1、11、0xFF87000

 

 

对于组0扇区、F021 API 函数按以下顺序使用

Fapi_initializeFlashBanks (Freq_in_MHz);  

Fapi_setActiveFlashBank ((Fapi_FlashBankType) bk);

Fapi_enableMainBankSectors (0xFFFE);     

Fapi_issue19 CommandWithAddress (Fapi_EraseSector、eraseStartAddr);

 

 

对于组1扇区、F021 API 函数按以下顺序使用

Fapi_initializeFlashBanks (Freq_in_MHz);  

Fapi_setActiveFlashBank ((Fapi_FlashBankType) bk);

Fapi_enableMainBankSectors (0xFFFE);     

Fapi_enableEprom 组安全器(0xFFFFFFFFU、0xFFFFFFFFU); //这将0x00180000固定为0x001E0000扇区擦除和写入*/

Fapi_issue19 CommandWithAddress (Fapi_EraseSector、eraseStartAddr);

 

 

闪存设置功能如下

 

void setupFlash (void)

/**-设置闪存读取模式、地址等待状态和数据等待状态*/

flashWREG->FRDCNTL = 0x000000000000
|(3U << 8U)
|(1U << 4U)
| 1U;

/**-为组7设置闪存访问等待状态*/
FSM_WR_ENA = 0x5;
EEPROM_CONFIG = 0x00030002;

/**-禁用对闪存状态机寄存器的写入访问*/

FSM_WR_ENA = 0xA;

/**-设置闪存组电源模式*/
flashWREG->FBFALBACK = 0x00000000
|(SYS_ACTIVE << 14U)
|(SYS_SLEEP << 12U)
|(SYS_SLEEP << 10U)
|(SYS_SLEEP << 8U)
|(SYS_SLEEP << 6U)
|(SYS_SLEEP << 4U)
|(SYS_ACTIVE << 2U)
| SYS_ACTIVE;

 

  

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);<--在该指令中失败并循环

 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chandre、

    1.要擦除 bank1、可以使用擦除组命令或使用擦除扇区命令(按扇区擦除扇区)擦除组。
    使用擦除扇区命令时、请同时启用扇区0:Fapi_enableMainBankSecors (0xFFFE)->0xFFFF
    在扇区擦除之后、在为下一个扇区发出擦除命令之前、请确保 FSM 状态被清除。

    擦除 LS31x 器件的 bank1没有任何问题。