• 资料介绍
    • 引言
    • 问题描述
    • 解决办法
    • 将上述方案加入客户工程的步骤示例
    • 小结
  • 资料预览
  • 相关推荐
申请入驻 产业图谱

LAT1216 BlueNRG系列芯片Flash操作与BLE事件的互斥处理

03/26 10:33
240
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

LAT1216 BlueNRG系列芯片Flash操作与BLE事件的互斥处理

910.91 KB

引言

在许多基于 BlueNRG-1/2 系列芯片低功耗蓝牙的设计项目时,客户通常会在 Flash的特定区域存储定制的数据。然而需要特别注意的是,在 BlueNRG-1/2 方案中,用户对Flash 的读写操作必须在射频空闲的情况下进行,两者是互斥的关系。

问题描述

客户经常反馈类似问题,诸如:当用户程序尝试将用户定制数据写入 Flash 中特定区域时,发现 BLE 射频部分停止工作,或芯片直接死机了。

解决办法

使用一个双向链表来管理 Flash 操作(Flash 擦除或者是 Flash 写,Flash 读无需和BLE 相关事件互斥),并使用一个双向链表来管理空余时间状态。在空余的时间执行Flash 操作。从芯片手册可以知道,操作 Flash,特别是擦除时,会占用比较多的时间。为了避免操作 Flash 占用过多的时间片,把每次写或者擦除 Flash,用一个列表来管理,每次写或者擦除操作,插入 Flash 操作链表的最后。 在主循环中检测是否有足够的时间写,如果当前空闲的时间足够,取出 Flash 操作链表中最前的一个节点,执行 Flash 操作,然后将节点移除。对于如何检测空闲时刻,也用一个链表来管理空闲时刻。

将上述方案加入客户工程的步骤示例

小结

  1. 如果使用此方法中的 Flash 擦除,没有任何 BLE 事件时,直接调用此方法不会执行任何 Flash 的操作。所以当没有蓝牙事件时,可以使用 SDK 默认的 Flash 访问接口或者是手工调度函数,类似这样:flash_list_tick(~0u)
  1. 工程测试源码参考附件压缩包:BlueNRG Flash vs BLE event handle source code.7z
  1. 工程路径为:BlueNRG_Demo/BlueNRG-1_2 DK 3.1.0/Project/Supply/BLE_Chat_Master_Slave_WithFlashAccess/

资料预览

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

方案定制

去合作
方案开发定制化,2000+方案商即时响应!