1.前言
在泰凌微的使用中,会出现一个问题,对片上flash的擦除会导致蓝牙的断连。
2.原因
2.1 关闭蓝牙的中断
为了保证flash MSPI时序操作的的完整性,会关闭掉中断,而蓝牙通讯是通过中断来收发数据
2.2 flash擦除时间过长
使用flash_erase_sector(u32 addr)
去擦除一个扇区,在官方文档说明中:16M系统时钟,大约需要30~100ms甚至更长时间。
在48M系统,测试出来的时间大约是50~70ms。
3.解决办法
SDK提供了一套机制,通过bls_ll_requestConnBrxEventDisable()
去查询下个蓝牙通讯的时间点,如果大于flash的擦除时间,则使用bls_ll_disableConnBrxEvent()
去关闭蓝牙收发,调用flash_erase_sector
擦除flash,再调用bls_ll_restoreConnBrxEvent()
开启蓝牙收发;