2349454_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2349454_zh-CN

2349454_zh-CN

需要对 LPC4078 EEPROM 页面擦除进行说明

我正在使用 LPC4078 和 MCUXpresso,并尝试在 Eeprom 中存储数值。

我想在不清除整个页面的情况下在页面中间写几个字节。

在数据表中可以看到,在将数据写入页面寄存器后,还必须将其编程到非易失性存储器中,而这是通过擦除/编程操作完成的。

擦除/编程操作是擦除整个页面,还是只擦除有新数据的页面区域?- 擦除/编程的地址设置会忽略 6 个 lsbs,因此它只知道页面。

UM10562.pdf 没有明确说明这个问题。

谢谢!

亚历克斯

Re: lpc4078 eeprom page erase clarification required

我附上了一个工作区,其中包含上述项目。我使用 lpc-link2 调试器在 LPC4078 上运行了它。
(我懒得让半托管工作,所以使用断点来检查数据)。

Re: lpc4078 eeprom page erase clarification required

你好@alex_conway

对于 LPC4078 EEPROM,最小擦除/编程单位为一页(64 字节)。因此,每次擦除/编程操作都会擦除整个页面。如果你只想写入几个字节,请先读取整个页面,然后修改所需的字节,最后在页面上执行擦除/编程操作。您可以在自己身边进行测试。
 
谢谢!
 
BR
爱丽丝
Re: lpc4078 eeprom page erase clarification required

嗨,爱丽丝、

我的实验证明并非如此:

我使用 lpc_board_ea_devkin_4088 库和 periph_eeprom 演示项目编写了一个小程序来启动它。

我擦除了一页 Eeprom,然后读了回来。令我惊讶的是,结果都是 "0",而不是 0xFF

然后,我将 "ABCDEFG/0 "写入该页面的地址 0,并读回页面。我收到 "ABCDEFG\0

然后,我将 "ABCDEFG/0 "写入该页的地址 7,并回读该页。我收到 "ABCDEFGABCDEFG\0

除了两件事之外,一切都在预料之中:

1. 擦除 eeprom 后读数为 0

2. 从Chip_EEPROM_Write()的实现来看,似乎没有读取-修改-擦除-写入的顺序。只有 Chip_EEPROM_WritePageRegister 之后的 Chip_EEPROM_EraseProgramPag。

这就是我提问的原因。

谢谢!

亚历克斯

Re: lpc4078 eeprom page erase clarification required

在所有 printf 字符串中添加换行符后,我的半托管系统就能正常工作了!还有更清楚的证据证明了我所说的一切:
擦除将 Eeprom 设置为 0x00
该代码不执行读-修改-擦除-写序列,只执行擦除-写序列。
LPC4078 在擦除时似乎只擦除写入的位置。

我真的很想澄清这一点。

谢谢!

亚历克斯

Re: lpc4078 eeprom page erase clarification required

尽管事态“升级”(无论这意味着什么),但恩智浦方面对此事仍未作出进一步回应。
我还需要进一步澄清。

Re: lpc4078 eeprom page erase clarification required

@alex_conway

感谢您的回复,很抱歉回复晚了。

遗憾的是,我们之前的社区脚本存在故障,因此客户回复无法在我们的内部系统中触发案例更新通知。对于延误,我深表歉意。

关于 LPC4078 上的 EEPROM,根据用户手册,与实际 EEPROM 块的所有通信都是通过 64 字节的页面缓冲区进行的。因此,请确保您的 EEPROM 操作符合用户手册中描述的要求。


Alice_Yang_1-1788510957201.pngAlice_Yang_1-1788510957201.pngAlice_Yang_1-1788510957201.pngAlice_Yang_1-1788510957201.png

Alice_Yang_0-1788510947469.pngAlice_Yang_0-1788510947469.pngAlice_Yang_0-1788510947469.pngAlice_Yang_0-1788510947469.png

目前,除非按照这些要求访问 EEPROM,否则我们无法确定是否存在问题。

谢谢!


BR

爱丽丝

Re: lpc4078 eeprom page erase clarification required

嗨,爱丽丝、

我正在使用 eeprom_17xx_40xx.h 中的函数。和 eeprom_17xx_40xx.c(由恩智浦提供,并包含在我附上的项目中)

Chip_EEPROM_Write() 函数调用 Chip_EEPROM_WritePageRegister() 函数,然后调用 Chip_EEPROM_EraseProgramPage() 函数。

Chip_EEPROM_WritePageRegister() 函数使用 Chip_EEPROM_SetAddr() 函数设置 EEPROM 地址,该函数负责移位和消隐低 6 位。
然后使用 Chip_EEPROM_WriteData() 函数将数据字节写入 EEPROM 写入数据寄存器 (WDATA)。

Chip_EEPROM_EraseProgramPage() 使用 Chip_EEPROM_SetAddr() 函数设置页地址,启用擦除/页编程位,并等待编程完成。

我找不到任何读取页面中现有 EEPROM 数据以执行页面读取-修改-写入操作的代码。
然而,正如我的项目所展示的那样,EEPROM 页擦除似乎不会擦除整个页面,而只会擦除写入数据寄存器中加载了新数据的地址。

谢谢!

亚历克斯

タグ(1)
評価なし
バージョン履歴
最終更新日:
火曜日
更新者: