TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2541 Flash 存储数据

Hi All:

    使用场景:CC2541作为从设备,向手机发送所采集的数据。在CC2541未与手机连接时,CC2541会将获取的sensor数据存储在本地Flash中,待到与手机连接后,将数据发送至手机。

    通过查找资料,了解到可以使用osal_snv_write向Flash写入数据进行存储。但一直没看到有帖子明确指出使用这种方法最多可以存储多少的数据,Flash中可供APP存储数据的空间大小应如何计算?

谢谢!

Yan:

yunlong,

这个完全取决于应用。

目前的情况是,能操作的NV flash的总共大小是2个 page, 每个page 大小2K,所以总共4K.

撇开一些什么绑定信息等等等等已经被系统占用的,应该还有个1K 到 2K,多点吧,具体我也没算过,你有兴趣可以看一下关于这些的代码,在每个工程里面都有的。

Yunlong Wang:

回复 Yan:

Hi Yan:

    非常感谢您的答复。

     112 726 bytes of CODE  memory     35 bytes of DATA  memory (+ 73 absolute )     6 272 bytes of XDATA memory     194 bytes of IDATA memory     8 bits  of BIT   memory     487 bytes of CONST memory

     1. 上面是编译后.map中的信息,我选用的是256KB的CC2541, 从这里看,似乎整个project只用了100多KB的空间,剩余的那些空间可用于做NV存储使用吗?

     2. 如果可能需要存储接近100KB的数据,是否只能通过添加额外的Flash芯片解决

谢谢!

Yunlong Wang:

回复 Yunlong Wang:

Hi:

   我的目的是想利用CC2541中剩余Flash的空间,存储sensor采集出来的数据。数据量会是几十KB。

   通过看一些文档,貌似256KB的CC2541会有剩余几十KB的Flash空间,但不知能不能用,也不是很清楚如何正确的使用。

   还请各位牛人指点。

谢谢!

da qin zheng sheng:

回复 Yunlong Wang:

Performing Flash Erase From Flash MemoryNote that while executing program code from within flash memory, when a flash erase or write operation isinitiated the CPU stalls, and program execution resumes from the next instruction when the flash controllerhas completed the operation.The following code example of how to erase one flash page in the CC2530 is given for use with the IARcompiler:#include <ioCC2530.h>unsigned char erase_page_num = 3; /* page number to erase, here: flash page #3 *//* Erase one flash page */EA = 0; /* disable interrupts */while (FCTL & 0x80); /* poll FCTL.BUSY and wait until flash controller is ready */FADDRH = erase_page_num << 1; /* select the flash page via FADDRH[7:1] bits */FCTL |= 0x01; /* set FCTL.ERASE bit to start page erase */while (FCTL & 0x80); /* optional: wait until flash write has completed (~20 ms) */EA = 1; /* enable interrupts */6.3.2 Different Flash Page Size on CC2533The flash page size has been reduced from 2 KB (2048 bytes) on CC2530, CC2531, CC2540, andCC2541 to 1 KB (1024 bytes) on CC2533. When performing page-erase operations on the flash memory,the page to be erased is addressed with the register bits FADDRH[6:0] on CC2533 as opposed toFADDRH[7:1] on CC2530, CC2531, CC2540, and CC2541. The page-lock bits are still placed in theupper 16 bytes of the last accessible flash page.

Yan:

回复 Yunlong Wang:

yunlong,

256KB 剩下的几十K,这些没有被划分到NV 里面去,所以不能用来存放客户数据。

由于CC254x 具有OTA 更新固件功能,剩下的flash 也要用于更新新的固件。

da qin zheng sheng:

回复 Yunlong Wang:

应该可以的!按页操作就可以了。

 

Yunlong Wang:

回复 Yan:

Hi Yan:

    OK,谢谢答复。

    由于接触CC2541不久,还有两个问题再麻烦您确认一下。

    1. 如果不使用OTA功能,这部分的Flash是否可以直接使用,BLE STACK的代码是否有对这些空间做额外的限制,如,只能用作OTA使用,不能用做其他功能。

        如果可以使用,我们自己添加相关代码,是否可能会对系统的稳定性造成影响。

    2. 对于存储 几十KB 数据的需求,是否最好是通过外接Flash解决

谢谢!

Yunlong Wang:

回复 da qin zheng sheng:

感谢大秦正声, 先收下,学习学习

Yunlong Wang:

回复 Yunlong Wang:

Hi Yan:

     对于有几十KB数据存储的需求,TI如何建议,是否是最好使用外部的Flash

谢谢!

da qin zheng sheng:

数据读写次数很多的话建议用外部eeprom!

赞(0)
未经允许不得转载:TI中文支持网 » CC2541 Flash 存储数据
分享到: 更多 (0)