cc2530 flash写操作
的有关信息介绍如下:在学习cc2530协议栈时,常需要借助于flash存储非易失性数据,比如设备的网络地址、MAC地址等重要信息,而这些常需要借助于Flash存储区,下面简要介绍一下自己对cc2530 flash写操作的理解。
在执行Flash写操作,需要先初始化Flash控制器。与Flash读操作不同的是,cc2530芯片写Flash必须4字节(或是整数倍)数据才能写入Flash页存储区中,建议是在编程之前,先简单看看cc2530芯片datasheet。
对于Flash存储而言,主要有以下特性:
1. 32-bit(也就是4字节)字可编程
2. 页擦除(在Flash擦除基本单位就是页)
3. 锁位确保写保护与代码安全性
4. 页擦除时间约20ms
5. Flash芯片擦除20ms
6. 写4字节(20-bit)时间20us
调用FlashWrite()函数前,请先初始化DMA模块,加快写速度,提高效率,如下就是Flash写数据函数接口,其中addr是写数据的开始地址,一般会给出页码、偏移量与写字节数,需要转换为Flash地址才可以使用。
英文注释:Valid HAL flash write address: actual addr / 4 and quad-aligned.
也就是说根据页码pg与偏移量offset计算,buf参数是欲写入Flash中数据,而cnt是写入次数。
关系式:
buf的长度: length = cnt * 4 ;
写起始地址:addr= (offset + pg×2KB)/4;