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.

[参考译文] TMS320F2.8377万D:闪存1.54 API擦除功能的最小监视器计时器

Guru**** 2551110 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/629326/tms320f28377d-minimum-watchdog-timer-for-flash-api-v1-54-erase-function

部件号:TMS320F2.8377万D

大家好,

是否有任何人可以成功完成擦除函数(Fapi_issueCommandWithAddress)(特别是1.54)所能达到的最小监视程序超时? 我的Fapi_serviceWatchdogTimer功能可以正确地重置计数器,但每次调用擦除功能时,我都会执行重置跳闸。 是否有人遇到过类似问题? 对论坛的搜索显示,有些人有,但问题不同。

注:我已将其缩小为异步呼叫-这不是我在FSM上等待或执行空白检查时的情况。 我查看了高级程序/擦除文档(SPNA148)以重写优化的擦除功能,但如果可能,我更愿意在没有它的情况下解决问题。

我们非常感谢您的帮助! 谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我一直在进行一些搜索,我想我偶然发现了可能存在的问题。 我正在使用TI-RTOS和信号来执行各种任务,包括ISR来发布这些信号。 触发看门狗的事件的信号量的指针变量位于Flash中(不是信号量本身,只是RTOS中自动生成的指向它的指针)。 在擦除扇区时,这是否会导致出现问题,从而迫使我的看门狗布防例行程序从未发生?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mike,

    是的,不允许在活动擦除或程序操作期间进行任何闪存访问,并且在当前操作结束之前将停止。    

    如F2837xD的Flash API参考指南(www.ti.com/lit/pdf/spnu629)中所述, Fapi_serviceWatchdogTimer()函数仅在 读取函数期间由API调用(请参阅 本文档表3中的函数)。  有关  详细信息,请阅读参考指南中的3.6 用户可定义功能一节。  请注意 ,SPNA148不适用于C2000器件。

    TMS320F2837xD数据手册(http://www.ti.com/lit/ds/symlink/tms320f2.8377万d.pdf) 在 表5-20中提供了扇区擦除时间。 闪存参数。   

    谢谢,此致,
    Vamsi    

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

    感谢您提供信息! 擦除操作是否像其他API函数一样可中断? 我有一个2kHz的触发器来布防看门狗,还有一个在CLA完成服务后运行的任务。 擦除操作期间似乎没有进行维修-这是典型的还是其他任务应该继续运行?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mike,

    擦除功能可中断。  但是,在擦除操作结束之前,不应从闪存读取或提取任何内容。  请参阅以下从SPNU629复制的信息。

    闪存API执行可中断;但是,在擦除或程序操作进行过程中,不应从闪存库/OTP进行任何读取或提取访问。 因此,必须从RAM执行Flash API函数,调用Flash API函数的用户应用程序函数以及任何ISR (中断服务例程)。 例如,下面显示的整个代码片段应该从RAM执行,而不仅仅是Flash API函数。 原因是

    FAPI_ISLEE-é ***()函数向FSM发出erase命令,但它不会等到擦除操作结束。 只要FSM正忙于当前操作,就不应该有Flash访问。

    //

    //删除扇区

    //

    oReturnCheck = Fapi_issue3cCommandWithAddress(Fapi_EraseSector,(UINT32*)0x8万);

    //

    //等待直到擦除操作结束

    //

    while (Fapi_checkFsmForReady()!= Fapi_Status_FsmReady){}

    谢谢,此致,
    Vamsi