CH582FLASH读写问题

我通过CH582的OTA后台式升级后,想在备份区存储历史数据,想问一下贵公司按照后台式升级所划分的四个存储区,备份区如何进行读写操作?能否提供示例代码?

邮箱:个人信息保护,已隐藏

①参考FLASH例程进行数据读写;

②Backup的方式是有对应的备份,建议先参考一下例程。


我参考了flash示例代码写了两个读写函数,跑代码时,出现了蓝牙连接后自动断开的问题,排除了一下发现屏蔽这个函数:FLASH_ROM_READ(current_location_addr, TestBuf, 8)程序能正常跑。下面是我仿照示例代码后的程序:

1702550132372.png


1702550534928.png

image.png


需要怎么改动?








①提供一下蓝牙断开的原因;

②确定擦除的地方是否为蓝牙协议栈或者其他重要代码占用的地方,防止擦除的地方有问题;

③蓝牙保持连接是需要在连接间隔到来的时候发送数据,可理解为心跳包。如果出现某个任务的时间过长导致蓝牙本身的任务无法来得及执行,则可以出现蓝牙断开的情况。可以拉个io查看操作任务的时间,并需要将蓝牙连接间隔配置为最长任务的时长的两倍。


我通过串口调试助手进行调试,蓝牙断开原因不被打印出来,也不知道什么原因让它断开的原因不能被打印出来,我也添加了打印连接断开状态的原因代码,而且代码正常跑通时,蓝牙调试助手主动断开时能打印它的连接断开的原因。

这是我放开FLASH_ROM_READ(current_location_addr, TestBuf, 8)这段代码后蓝牙异常时串口打印情况(打印不出连接断开的原因):

74f7c6f8b1f30bc2fa724dbfe315f65.png

这是我蓝牙调试助手的实时日志:

27c617d6acb181cf5d33dfede228429.jpg





我屏蔽掉FLASH_ROM_READ(current_location_addr, TestBuf, 8)这段代码后程序能正常跑,也能正常连接和收发数据,蓝牙调试助手主动断开时也能正常打印连接断开的原因。

屏蔽的代码段:

c5e9525a455106fe8efb0500e6c6d1f.png

蓝牙调试助手主动断开时也能正常打印连接断开的原因:

b1f0e901105c95e1c274efa62bf4be0.png








①擦除按照4KB(倍数)擦除;

②将蓝牙的连接间隔拉大,reason8是超时断开。

蓝牙BLE从机Peripheral讲解一(广播间隔和连接间隔) - SweetTea_lllpc - 博客园 (cnblogs.com)

③too large noti,检查noti的打开和发送数据量,参考:

蓝牙BLE从机Peripheral讲解十二(MTU) - SweetTea_lllpc - 博客园 (cnblogs.com)


只有登录才能回复,可以选择微信账号登录