解析如何CC254X片上flash读写
小标 2018-07-09 来源 : 阅读 1082 评论 0

摘要:本文主要向大家介绍了解析如何CC254X片上flash读写,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。

本文主要向大家介绍了解析如何CC254X片上flash读写,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。

如果在开发中,希望个别数据掉电不丢失,那么有几种方法可以考虑,一种是通过I2C或者SPI总线外接存储,比如E2PROM或FLASH,如果数据不大,第二种方便的方法就是操作片上flash了,要想操作片上flash,首先要搞清楚片上flash的存储结构以及寻址方式。

        例如CC2541F256这个芯片,我们查一下技术手册,介绍片上flash存储组织结构的部分,截取如下:

        

        我们可以梳理如下:

        1.内部flash由page组成,每一个页有2048-byte;

        2.最小可擦除单元为一个page;

        3.最小可写入单元为32bit(一个word);

        4.寻址地址大小为16-bit。

        以上这些涵盖了我们操作flash时必须的信息。CC2541F256一共有256KB的片上flash空间,那么一共有多少page?答案是256/2=128个page。在写入flash之前,我们通常会先对要写入的区域进行擦除操作,由于最小可擦除单元为一个page,那么我们只需要定义好要擦除的页即可,例如,我们把一个标志位flag写入第120个page(这里注意核对下代码的大小,不要写到代码存储区即可,尤其是OAD更要特别注意),这时可以直接调用HAL层的HAL_FLASH提供的操作API,HalFlashErase(0x78)。擦除完毕后,我们需要在相应的地址写入flag的值,那么如何确定地址?可以通过page进行换算,120*2048为总的byte数,最小可写入单元大小为32-bit也就是4个byte,也就是说每个地址对应的是4个byte,所以120*2048/4=0xF000即第120页的首地址。

        读写参考代码如下:

[cpp] view plain copy

1. uint8 newValue[10];  

2. uint8 newChar1[2];  

3. ......  

4. HalFlashErase(0x78);  

5. while( FCTL & 0x80 ); // wait for erase to complete  

6. HalFlashWrite(0xF000,newValue,1);  

7. HalFlashRead(0x78,0,newChar1,2);  

以上就介绍了Flash的相关知识,希望对Flash有兴趣的朋友有所帮助。了解更多内容,请关注职坐标常用软件Flash频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程