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.

TMS320F28075: Fapi_issueAsyncCommandWithAddress无法擦除指定flash分区

Part Number: TMS320F28075

背景:

使用的是库函数版本,不支持位域,所以没有直接使用TI flash部分的用例。

问题:

计划擦除flash C到G分区,当擦到F分区的时候发现擦除失败。

情况一:

在Fapi_initializeAPI、Fapi_setActiveFlashBank之后,直接调用Fapi_issueAsyncCommandWithAddress去擦F区,情况如下图:

情况二:

在Fapi_initializeAPI、Fapi_setActiveFlashBank之后,调用Fapi_issueAsyncCommandWithAddress从C开始循环擦除flash的时候,当执行完擦F区的Fapi_issueAsyncCommandWithAddress

的时候,程序跑入异常中断,但是此时flash的F区却已经被擦除。

  • 我找到了原因:

    因为我擦除flash分区的函数没有使用CODE_SECTION搬移到RAM去,如果没有搬运到RAM去执行,那么会产生很对意想不到的结果。

    如果大家项目上是使用位域(寄存器结构体)的形式,那么直接参考TI用例即可,严格按照用例去执行是没有什么问题的。

    如果大家的项目是使用库函数(driverlib)的形式,建议正确配置所需的外设跟系统初始化。尤其是移植过程中,首先先要确定一个列表出来,这样出现问题先对照列表,可以节省很多时间。

  • 非常感谢分享~