您的位置:首页 > 其它

第二十节 协议栈Flash数据存储

2015-11-28 09:48 267 查看
第二十节 协议栈Flash数据存储

CC254x自带了256K Flash,这256K的储存空间不仅可以储存代码,也可以储存用户的数据,协议栈自带了SNV管理代码,我们只需要学会使用即可。

SNV的使用只有两个函数,分别是读函数osal_snv_read和写函数osal_snv_write,在SNV的储存中,储存的每个数据都有一个唯一的ID,SNV也正是利用这个ID来管理储存在Flash中的数据,在BLE的协议栈中,蓝牙自身数据储存用了一部分ID,我们储存的数据ID不可使用这些ID,在bcomdef.h中有这些ID的定义。



下面我们往SNV中存入串口接收到的数据,然后开发板断电重启后读取出这串字符串并通过串口发送出去,来演示SNV的断电保存。

首先我们定义一个我们储存数据的ID,注意不能和已经有的定义冲突。

#define BLE_NVID_USER_CFG_START 0x80 //!< Start of the USER Configuration NV IDs

#define BLE_NVID_USER_CFG_END 0x89 //!< End of the USER Configuration NV IDs

我们在启动事件中读取SNV中0x80的值并通过串口输出读取结果,如果读取成功,则会将读取结果打印到PC端,如果读取失败,则会提示读取失败。



在串口接收事件中将接收到的数据存入SNV中,并且也进行相应的提示。



将工程编译下载后,可以看到现象如下:



第一次上电可以看到,提示读取数据失败了,说明第一次运行时是没有存储数据的,接下来我们通过串口发送字符串 MT254xboard SNV Test字符串。



可以看到成功的将我们发送过去的字符存入了SNV中,那是否成功存入呢?我们将开发板断电后重启,看看第二次上电是否能够读取出我们存入的数据。



重启后可以发现我们成功的读取出了第一次存入的数据,说明我们成功的将数据存入了SNV中。

本文章转载自
http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/69222.aspx
请勿用于商业
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: