微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > 共享一下cc1310的内部flash的擦除,写入,和读取,刚完成

共享一下cc1310的内部flash的擦除,写入,和读取,刚完成

时间:12-23 整理:3721RD 点击:

1、cc1310flash的每次擦除和写入都是以page 4k为单位的。 擦除页的函数是FlashSectorErase(页地址);

2、flash的地址为 0x00000000-0x000020000,也就是128k。 但是前面一些地址会用来存放程序,因此,如果要写flash, 要避开程序部分。尽量往后面的地址存放。

下面看看代码:

首先需要包含头文件,然后定义一下数组啦,如下代码

//-----------------------------cc1310 n内部flash的使用-----------------------------------------

/*cc1310flash的每次擦除和写入都是以page 4k为单位的。
 * flash的地址为 0x00000000-0x000020000,也就是128k。
 * 但是前面一些地址会用来存放程序,因此,如果要写flash,
 * 要避开程序部分。尽量往后面的地址存放。
*/
#include <ti\devices\cc26x0\driverlib\flash.c>   //头文件的位置
uint8_t buff1[8] = {0xee,0xff,0xaa,0x55,0x00,0x00};
uint8_t buff[8] = {0xaa,0xbb,0xcc,0xcc,0x00,0xee};

#define ID_Flash_Addr  0x1e000

void ReadFlash(uint32_t wAddr,uint8_t *bBuf,uint8_t bLen)
{
    uint8_t *Flash_Ptr = (uint8_t *) wAddr;
    while(bLen--)
       *(bBuf++)=*(Flash_Ptr++);
}
//-----------------------------cc1310 n内部flash的使用-----------------------------------------

然后在具体的函数里面如下调用

    //-----------------------------cc1310 n内部flash的使用-----------------------------------------
    //flash 的擦除和写入都是以page(4K)为单位的,如果程序烧入和你存的数据在同一个page,那肯定会把你存的数据覆盖掉
    //000000------0x001f000
    FlashSectorErase(ID_Flash_Addr);        //擦除某一个扇区
    FlashProgram(buff, ID_Flash_Addr, 8);   //写数组进去
    ReadFlash(ID_Flash_Addr,buff1,8);       //读出来
    UART_write(uart, &buff1, sizeof(buff1));//用16进制读取出来
    //-----------------------------cc1310 n内部flash的使用-----------------------------------------

具体可以下载附件,直接替换cc1310launchpad,sdk里面的empty工程的empty.c文件就可以了。

串口打印先现象如下。打印的数据就是写进去的buff数组里面的数据。

谢谢分享,但是这种方法对Flash的使用次数,寿命会有一定的影响。如果我需要往同一页Flash里面同一个地址频繁的写入数据话,必须要先进行擦除操作。

建议使用TI RTOS自带的driver里面,关于对Flash存储数据的操作,#include <ti/drivers/NVS.h>

好的,谢谢,我去看看自带的操作。内部flash的存储不是很频繁,一般写进去就不修改了,这样应该没关系吧?

谢谢分享,最后一页不要使用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top