Thread 中讨论的其他器件:UNIFLASH
工具/软件:
1 μ s、全部擦除并对某些扇区编程后、理论上、闪存 EEPROM 中被擦除而未编程扇 区的位状态应为“1",“,但、但现在存在被擦除的扇区位状态全部为“0"而“而不是“1"的“的情况、哪些因素或根本原因会导致这种现象?
2、如果目标 扇区“位“状态为“0",“,遵循、遵循的编程过程是否可能失败? 如果会发生失败、哪些因素或根本原因会导致出现这种现象?
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.
工具/软件:
1 μ s、全部擦除并对某些扇区编程后、理论上、闪存 EEPROM 中被擦除而未编程扇 区的位状态应为“1",“,但、但现在存在被擦除的扇区位状态全部为“0"而“而不是“1"的“的情况、哪些因素或根本原因会导致这种现象?
2、如果目标 扇区“位“状态为“0",“,遵循、遵循的编程过程是否可能失败? 如果会发生失败、哪些因素或根本原因会导致出现这种现象?
您好、
[报价 userid=“584244" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1560977/tms470mf03107-about-flash-eeprom-erased-and-programd-sector-bit-0-or-1-states1 μ s、全部擦除并对某些扇区编程后、理论上、闪存 EEPROM 中被擦除而未编程扇 区的位状态应为“1",“,但、但现在存在被擦除的扇区位状态全部为“0"而“而不是“1"的“的情况、哪些因素或根本原因会导致这种现象?
[/报价]正确。 擦除后、所有位都应为 1。 您有时会说什么? 是否使用闪存 API 进行擦除、或者是否使用 CCS 或 Uniflash 闪存擦除通过 JTAG 擦除所有闪存存储体? 您是否说它有时会成功擦除、但并非总是擦除?
2、如果目标 扇区的位状态为“0",“,是否、是否遵循的编程过程可能会失败? 如果失败会发生、哪些因素或根本原因会导致此现象?
如果闪存位为 0、则如果不进行擦除、则无法将其更改为“1"。“。 您无法将“1"编“编程为“0"位“位。 您只能执行擦除以将位从“0"更“更改为“1"。“。

您好,感谢您的答复!
您提到:
正确。 擦除后、所有位都应为 1。 您有时会说什么? 是否使用闪存 API 进行擦除、或者是否使用 CCS 或 Uniflash 闪存擦除通过 JTAG 擦除所有闪存存储体? 您是否说它有时会成功擦除、但并非总是擦除?
在擦除全部后,我们使用 CCS 或 Uniflash 将.hex 文件编程到芯片闪存中。 然后、在客户使用期间、程序 使用闪存 API 来擦除和 写入 BANK1 的 EEPROM 区域的目标扇区、 如上图所示。 当我们将一些非零数据写入目标扇区时,在点火开关关闭和接通操作后,读回的数据显示为全 0 ,这是不预期的。
我们想知道这种意外现象的潜在根源。 谢谢!
您好、
您提到:
“您能告诉我您使用哪个 API 来对目标扇区进行编程吗?“
在应用程序中、我们使用 Flash_Erase_ () 来擦除,使用 Flash_Prog_ () 来编程。
“您是将扇区编程为常规闪存还是仿真 EEPROM? “
作为仿真 EEPROM;
“在您调用 API 之前、目标部门的内容是什么? 是否从全部 1 开始?“
你知道为什么吗?“侯龙涛点了点头,转身走了。
“ 您在一台设备上还是在所有设备上看到问题?“
这个问题是由 40%左右的概率在设备中提出的。
您好、
[报价 userid=“584244" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1560977/tms470mf03107-about-flash-eeprom-erased-and-programd-sector-bit-0-or-1-states/6011409“您是将扇区编程为常规闪存还是仿真 EEPROM? “
作为仿真 EEPROM;
[/报价]我认为您不使用闪存组 1 作为仿真的 EEPROM 存储器。 您需要使用付费驱动程序将常规闪存模拟为 EEPROM。 有关详细信息、请参阅 TMS470M Fee 驱动程序 www.ti.com/.../TMS470MFEE。
[报价 userid=“584244" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1560977/tms470mf03107-about-flash-eeprom-erased-and-programd-sector-bit-0-or-1-states/6011409“您能告诉我您使用哪个 API 来对目标扇区进行编程吗?“
在应用程序中、我们使用 Flash_Erase_ () 来擦除,使用 Flash_Prog_ () 来编程。
[/报价]调用 Flash_Erase_ B 后的返回值是多少? 是成功还是失败?
删除后 stat1、stat2、stat3 和 stat4 的状态是什么?
您是否在调用 Flash_Erase_ B 之前禁用了预调节? 通常、闪存擦除将涉及称为预处理的步骤。 预调节类似于将全 0 编程为一个扇区。 扇区预处理后、可以进行擦除。 可以禁用前提条件步骤。 这就是我想知道您是否禁用前提条件的原因。 请参阅用户指南。
扇区是否已确定为
在擦除之前使用 Flash_Blank_消隐、请参阅
可以将状态→stat1 元素初始化为
0x12345678、在调用 Flash_Erase_ B 到之前
禁用预调节和加速擦除。 非空
默认情况下、扇区的值应为
状态→stat1 已初始化为 0x00000000(或某些地址
0x12345678 以外的值)
预调节在擦除期间启用。 了解更多信息
有关信息、请参阅中的推荐擦除流程
第 5 款.
5.2 使用 Flash_Erase_()
图 1 描述了使用 Flash_Erase_ B 函数时擦除器件上单个扇区的流程
才能完成擦除。
用户应熟悉第 3.10 节中的 Flash_Erase_ B 功能说明。
为了节省擦除时间、Flash_Erase_ B 支持禁用预调节(在应用之前编程为 0
擦除脉冲)、基于从 Flash_Blank_函数返回 TRUE 的扇区。 此预调节禁用
通过通过通过 FLASH_STATUS_ST STATUS.stat1 元素传递的特殊密钥 (0x12345678) 来完成
(有关更多信息,请参阅第 3.10 节中的 Flash_Erase_设计)至 Flash_Erase_ B 函数。
虽然此特性能够在空白扇区上实现更快的擦除吞吐量、但它确实需要
用户在调用之前应格外小心、确保目标扇区中不存在耗尽的位
禁用预调节的 Flash_Erase_ B。 这是在之前进行 Flash_Compact_ B 呼叫的原因
图 1 中的 Flash_Blank_调用。 TI 发货的器件应该没有耗尽的列、而是一个器件
在上一个擦除操作期间可能已重置或下电上电、该操作可能包含已耗尽
或略微擦除的位。 图 1 所示的流程旨在修复任何此类位(如果有)
允许在给定扇区上运行至完成。
不建议在读取为空白的扇区上完全跳过擦除、因为这些扇区可能是空的
需要修复在执行期间执行的边缘擦除位或已耗尽的列
Flash_Erase_ B.
如果用户感兴趣、Flash_Erase_ B 还可以收集扇区的擦除脉冲统计信息。