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.

[参考译文] TMS570LS0714:使用 FEE 驱动器擦除功能从 EEPROM 擦除数据时出现 TMS570LS07问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/992011/tms570ls0714-tms570ls07-problem-in-erase-data-from-eeprom-using-fee-driver-erase-function

器件型号:TMS570LS0714

你(们)好  

我将 FEE 驱动器与 TMS570LS07搭配使用 、我真的需要帮助才能知道如何在 EEPROM 中擦除所有块或地址  

我尝试了以下代码、但代码不起作用、因此请任何人帮助我  

我的代码在 这里  

#include "ti_fee.h"

#include "sys_common.h"
#include "system.h"

uint16 u16JobResult,Status;
Std_ReturnType oResult=E_OK;
unsigned char read_data[100]={0};

uint8 SpecialRamBlock[100]={30,31,32,33};

unsigned char pattern;
uint16 u16writecounter;

unsigned int  FeeVirtualSectorNumber;
unsigned char VsState, u8EEPIndex;
unsigned char u8VirtualSector;
uint8 Test_Recovery;
uint8 Test_Cancel;

uint8 *adress_of_block;
void delay(void)
{
    unsigned int dummycnt=0x0000FFU;
    do
    {
        dummycnt--;
    }
    while(dummycnt>0);
}

void main(void)
{
/* USER CODE BEGIN (3) */
    unsigned int BlockNumber;
    unsigned int BlockOffset, Length;
    unsigned char *Read_Ptr=read_data;

    unsigned int loop;

    /* Initialize RAM array.*/
    //for(loop=0;loop<100;loop++)SpecialRamBlock[loop] = loop;

    /* Initialize FEE. This will create Virtual sectors, initialize global variables etc.*/
    TI_Fee_Init();
    do
    {
        TI_Fee_MainFunction();
        delay();
        Status=TI_Fee_GetStatus(0);
    }
    while(Status!= IDLE);

    TI_Fee_EraseImmediateBlock((uint16_t)0xF02001D8);
    do
    {
        TI_Fee_MainFunction();
        delay();
        Status=TI_Fee_GetStatus(0);
    }
    while(Status!=IDLE);
    /* Write the block into EEP Asynchronously. Block size is configured in ti_fee_cfg.c file. Default Block size is
       8 bytes */
    BlockNumber=0x1;
    TI_Fee_WriteAsync(BlockNumber, &SpecialRamBlock[0]);
    do
    {
        TI_Fee_MainFunction();
        delay();
        Status=TI_Fee_GetStatus(0);
    }
    while(Status!=IDLE);


//    //here block number is our start block to write then our buffer will fill the blocks which after him untill
//    //our buffer write all its data
   BlockNumber=0x1;
    /* Write the block into EEP Synchronously. Write will not happen since data is same. */
//    TI_Fee_WriteSync(BlockNumber, &SpecialRamBlock[0]);

      BlockOffset = 2;
      Length = 0xFFFF;
      oResult=TI_Fee_Read(0x1,BlockOffset,Read_Ptr,Length);
      do
      {
          TI_Fee_MainFunction();
          delay();
          Status=TI_Fee_GetStatus(0);
      }
     while(Status!=IDLE);

    /* Invalidate a written block  */
//    TI_Fee_InvalidateBlock(BlockNumber);
//    do
//    {
//        TI_Fee_MainFunction();
//        delay();
//        Status=TI_Fee_GetStatus(0);
//    }
//    while(Status!=IDLE);

    /* Format bank 7 */
    //TI_Fee_Format(0xA5A5A5A5U);

    while(1);
/* USER CODE END */
}

我尝试删除所有这些数据、但我不能只需要知道如何擦除整个存储器或地址的数据

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

    您好!

    TI_fee_EraseImmediateBlock()用于擦除一个数据块,函数的参数应为数据块编号。

    当该扇区已满时、虚拟扇区将被擦除。

    将数据写入 EEPROM 时、 数据将写入活动虚拟扇区中的第一个空位置。 如果当前虚拟扇区中没有足够的空间来更新数据、它将切换到下一个虚拟扇区、并将所有有效数据从当前虚拟扇区中的其他数据块复制到新的数据块。 复制所有有效数据后、当前虚拟扇区将被擦除。

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

    例如、如果我将 uint8数据写入第一个扇区、我必须填充4KB、那么我可以擦除??

    没有其他方法可以不存在?   

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

    TI_FEE 格式(0xA5A5A5A5U);我使用此函数擦除 EEPROM、现在我的问题是每次擦除时都可以安全地起诉此函数

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

    TI_FEE 格式() 将擦除所有虚拟扇区、而不是当前活动扇区。  调用此函数将导致数据丢失。 仅当您要重新配置数据块/虚拟扇区或检测到严重错误情况时、才应调用此函数。