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中那样处理了!!!