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.

[参考译文] TMS570LS1227:费用有时无法擦除

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1079934/tms570ls1227-fee-occasionally-fails-to-erase

部件号:TMS570LS1227

大家好,团队

客户提出的问题可能需要您的帮助:

芯片组7使用 TI 的收费驱动程序代码操作。 配置芯片时,bank7被划分为24个块,每个块为64个字。 首先调用函数 TI_FICE_EraseImmediateBlock 擦除该块,然后写入该块。 但有时会出现擦除失败,客户希望知道为什么会出现这种情况。 下面是要写入的代码:

void SysParameterWriteBlock (uint16_t uIBlockNumMax)

  STD_ReturnType 返回;
  IF(u32FeedWriteBlockNum <24U)
  {
    RTN = TI_FICE_EraseImmediateBlock (uIFeeWriteBlockNum+1U);
    IF (E_OK ==返回)
    {
      u32EepEstesFlg = 0U;
    }
    否则
    {
      u32EepEsteFlg |= bTrue;
    }
    WDG_feed();/*片内看门狗的看门狗溢出时间为100 ms */
    IF (eepBlockInforStu[uIFeeWriteBlockNum%24U].blockData !=空)
    {
      u32EeprommWriteFlg |= eepro_write_block (uIFeeWriteBlockNum+1U,(uint8_t*) eepBlockInforStu[u32FeeWriteBlockNum%24U].blockData);
    }
    u32FeedWriteBlockNum++;
  }
}

静态 UINT32_t EEPROM_WRITE 块(uint16_t blockNum,uint8 *pData)

  STD_ReturnType oResult=E_NOT_OK;
  UINT32_t uIResultBit=bFalse;
  UINT16状态;
  UINT32 DELAY _cnt =0U;

  做什么
      TI_FICE_MainFunction();
      eep_delay();
      状态=TI_FICE_GetStatus (0U);
      延迟_cnt++;
    }
  while ((状态!=空闲)&&(延迟 cnt < 1000U));
  IF (状态=空闲)
  {
    /*异步将块写入 EEP。 *
    oResult = TI_FICE_WriteAsync (blockNum,pData);
  }
  延迟_cnt = 0U;
  做什么
      TI_FICE_MainFunction();
      eep_delay();
      状态=TI_FICE_GetStatus (0U);
      延迟_cnt++;
  }
  while ((状态!=空闲)&&(延迟 cnt < 1000U));
  oResult = TI_FICE_WriteSync (blockNum,pData);
  延迟_cnt = 0U;
  做什么
      TI_FICE_MainFunction();
      eep_delay();
      状态=TI_FICE_GetStatus (0U);
      延迟_cnt++;
  }
   while ((状态!=空闲)&&(延迟 cnt < 1000U));
  如果(oResult = E_OK)
  {
    uIResultBit= bFalse;
  }
  否则
  {
    uIResultBit= bTrue;
  }
  返回 uIResultBit;
}

跟踪到 TI_FeInternal_CheckModuleState 函数返回 TI_fee_GlobalVariables[0]。fee_ModuleState == busy_internal,它是否与频繁操作相关?

请帮您检查此案例? 谢谢。

此致,

樱桃

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="496057" url="~ë/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forume/1079934/tms570ls1227-feed-timple-fail-to -erase’],但有时会出现擦除失败,

    TI_FICE_EraseImmediateBlock()将 在数据块标题中将块标记为无效。 它不会将此块位置擦除为0xFFFFFFFF。 此 API 的作用与 TI_FICE_InvalidateBlock()相同。

    应该定期调用 TI_FICE_MainFunction 函数以完成操作。