CC2530关于flash的地址的问题讲解

来源:互联网 发布:散爆网络 编辑:程序博客网 时间:2024/06/08 09:11

CC2530中有好多款的型号,其中什么F128,F256,F32都是所谓的flash的大小,很多人不知道关于flash的概念,其实需要概念吗? u盘就是典型的flash(可能表达不是很准确),可以读也可以写,拔下来数据不会丢失!你的U盘是不是这样呢?

我用到的是F256,傻人就选大的。CC2530F256:8KB的SRAM,256KB的FLASH,很多人对于FLASH的读写的地址不是很明确,所以在这里说明一下:F256有256KB的FLASH。

操作FLASH的步骤:1.擦除2.写3.读

1.擦:擦要给个地址吧,256KB的地址是从0x00000H ------0x3FFFFH,具体的操作是FADDRH = ((uint32_t)address>>10) ,注意传来的地址是32位的,但是不能将大于0x3FFFF的数字传进来。

2.写:一般采用DMA的方式来进行传输,还是地址的问题

addH=((uint32_t)address)>>10;       //提取页面的地址

addL=((uint32_t)address)>>2;     //低8位保证是4的倍数

分别赋值给FADDRH和FADDRL,可以了

3.读:需要进行FLASH的映射,还是地址的问题 

block = ((uint32_t) address >>15) & 0x7;                           //3位表示在哪个块上

然后将该块直接映射到XDATA下通过MEMCTR寄存器来映射。

读者请自行分析为什么是这几个数字。以0x3FFFF的地址作为参数带入这些表达式,就一目了然了,不必向Z-STACK中那样处理了!!!

1 0