运行长期操作 - EEPROM擦除

4个帖子/ 0新
最后一篇
MAX44
离线
最后一次露面:9个月3周前
加入:2016-02-08 15:58
运行长期操作 - EEPROM擦除

DA14580.
基本开发套件添加了模拟传感器和EEPROM
SDK 5.0.3.

你好对话框,

我正在继续基于BLE_APP_PERITIVELAL示例的应用程序工作。我有一个连接到DA14580的EEPROM,我想擦除块,但这是一个冗长的操作。我的初步尝试执行此操作执行删除但导致与我的Android应用程序断开连接。是否有一种处理长期操作的好方法,如擦除EEPROM块?我怀疑我超出了监督超时,我最好的猜测是将擦除功能分为较小的EEPROM块并使用定时器回调擦除块,然后用计时器延迟重复进程,直到我擦除了EEPROM的整个区域我是针对的。让我知道你的建议。

再次感谢,最大

设备:
mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨max44,

嗨max44,

是的,只要你保持580占用外部内存(我想问题就是问题是580轮询EEPROM,直到它完成写作操作),您将失去即将到来的BLE事件,并且您最终会断开连接(此外,由于它是一个EEPROM,I2C驱动程序有一个关键部分并禁用中断,因此您也应该考虑该点,也许您因为这个问题而丢失了BLE中断。

我不认为还有另一种方式这样做,你必须通过定时器或通过每个连接间隔触发的周期命令来删除块中的外部内存,所以在每个连接间隔中你将唤醒你通过块擦除外部存储器块。此外,您也可以通过BLE_APP_ON_SYSTEM_POWERED()块通过块删除内存块(),因此每次通过该唤醒时都会通过该回调,将在后续唤醒事件中删除一块内存,抵消您应该检查擦除需要多长时间EEPROM。

谢谢mt_dialog.

MAX44
离线
最后一次露面:9个月3周前
加入:2016-02-08 15:58
谢谢mt。

谢谢mt。

我想我会首先尝试在小块中实现擦除,并查看它是否有效而不干扰正常的BLE操作。Suota必须以某种方式实施类似的操作。

我的Android应用程序可能是可以故意断开连接并运行擦除而没有动态的擦除,但我希望呈现完成的一些状态,验证了擦除的操作....类似于智能片段的操作。我可以在重新联系时报告一些状态。

考虑一下这个回答,但如果你让它打开一段时间,我会发布哪些工作(和/或不起作用)。

问候,最大

MAX44
离线
最后一次露面:9个月3周前
加入:2016-02-08 15:58
块中的擦除工作

块中的擦除工作并维护了与我的Android应用程序的连接。

我的EEPROM是M24M02(256K x 8)。我正在使用较低的启动内存或课题。Upper 128KB用于数据记录。这是我想要擦除的部分。我尝试在8kb段中经历整个128kb。我设置了一个100毫秒的计时器,定时器回调将检查块计数并运行8kb擦除。我估计8KB擦除需要大约350-400毫秒,但没有试图精确时间。如果要擦除更多块,我重新启动了计时器并退出了回调例程。然后,这允许至少100毫秒用于BLE堆栈,以在下一次擦除块之前照顾业务。

擦除完成后,我也想测试EEPROM擦除(在我的情况下全部零)。我发现尝试测试所有128KB也导致断开连接,因此我使用与100毫秒定时器相同的方法实现了类似的8KB测试序列。这也工作并保持了BLE连接。在测试结束时,我设置了Android应用程序可读的状态字节。通过连接仍然处于活动状态,我可以读取状态。

顺便说一句,如果有人有兴趣,来自Android应用程序的BLE命令删除EEPROM的启动部分已经非常方便,以防止通过在引导程序中睡眠引起的JLINK断开,这也可以防止智能片段连接和智能片段能够重新编程EEPROM。