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数组里面的数据。