CC2650 SensortTag之SNV操作

文章介绍了SNV(非易挥发存储)在TI的CC2650协议栈中的使用,包括通过osal_snv_write和osal_snv_read函数进行数据的写入和读取。示例代码展示了如何定义数据缓存区,并在初始化函数中执行SNV操作。在调试模式下,读写操作成功执行。
摘要由CSDN通过智能技术生成

SNV是什么?

NV就是从内部flash划分出来的一块专用于存储数据的flash。
NV就是Non-Volatile (非易挥发),
CC2650的协议栈用的是SNV(8位ID),而不是NV(16位ID)。
TI在协议栈中提供了两个标准函数用于写入和读取信息的函数,分别是:

uint8 osal_snv_write( osalSnvId_t id, osalSnvLen_t len, void *pBuf)
uint8 osal_snv_read( osalSnvId_t id, osalSnvLen_t len, void *pBuf)

两个函数的返回值皆为两种情况 SUCCESS 和 NV_OPER_FAILED

这两个宏定义在头文件 comdef.h 中定义

/*** Generic Status Return Values ***/
#define SUCCESS                   0x00
#define FAILURE                   0x01
#define INVALIDPARAMETER          0x02
#define INVALID_TASK              0x03
#define MSG_BUFFER_NOT_AVAIL      0x04
#define INVALID_MSG_POINTER       0x05
#define INVALID_EVENT_ID          0x06
#define INVALID_INTERRUPT_ID      0x07
#define NO_TIMER_AVAIL            0x08
#define NV_ITEM_UNINIT            0x09
#define NV_OPER_FAILED            0x0A
#define INVALID_MEM_SIZE          0x0B
#define NV_BAD_ITEM_LEN           0x0C

在头文件 bcomdef.h 中定义了用户可以使用的ID范围

// Customer NV Items - Range  0x80 - 0x8F - This must match the number of Bonding entries
#define BLE_NVID_CUST_START             0x80  //!< Start of the Customer's NV IDs
#define BLE_NVID_CUST_END               0x8F  //!< End of the Customer's NV IDs

使用例子

1)添加头文件(例 simple_peripheral.c 中)

#include "snv_flash.h"

2)定义一个数据缓存区(例 simple_peripheral.c 中)

// SNV test
static uint8_t Write_data[4] = {0x88,0x55,0x55,0x88};
static uint8_t Read_data[4];

3)添加读写数据代码(simple_peripheral.c 的 SimpleBLEPeripheral_init 函数末尾中)

  //SNV test Jan 11th, 2023
  osal_snv_write(0x82,sizeof(Write_data),Write_data);
  osal_snv_read(0x82,sizeof(Read_data),Read_data);

操作结果

在读写函数前插入断点,然后进入debug模式,以下运行结果。

snv写入:
在这里插入图片描述
snv读取,snv中的信息读取成功
在这里插入图片描述

参考文章:
(1)https://blog.csdn.net/farsight_2098/article/details/86626417
(2)https://blog.csdn.net/feilusia/article/details/52223339

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值