微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > 请问下,如何读写cc2530内部flash的不同 bank 啊?

请问下,如何读写cc2530内部flash的不同 bank 啊?

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

本人用的是内部flash 256k的那种,

默认的是读写bank0吧,用的是z-stack里的函数

HalFlashErase(127);

while( FCTL & 0x80 );

HalFlashWrite(0xfe00, write_buffer, buffer_size);

HalFlashRead(127, 0, read_buffer, buffer_size);

这样单独一个工程是可以的,因为本身生成的烧写程序小,但是如果工程大,

生成的烧写程序也大,这样就会擦除了代码的部分,程序也就死掉了,

不知道是不是我用的bank切换的不对,  用了FMAP进行映射 比如FMAP=7读写最后的部分,

程序还是会跑飞,

求指教下,谢谢

Page 125 126 127这三页 不要用。

怎么了,这三页,另外,我想的是切换到别的bank,比如从bank0切换到bank7,切换bank后程序就死了.....知道咋回事不

另外,我在bank0里面,读写127页,没有问题啊

Page 127就已经是bank7了

读写的时候不需要先用FMAP进行映射,而是直接进行读写吗,

闪存写的序列算法如下:
1. 设置FADDRH:FADDRL 为起始地址(这是18 位字节地址的16 MSB)。
2. 设置FCTL.WRITE 为1。这启动写序列状态机制。
3. 在20us 内写四次到FWDATA(因为如果不首先反复,最后一次FCTL.FULL 变为0)。LSB 首先写入(最
后一个字节后FCTL.FULL 变为高)。
4. 等待直到FCTL.FULL 变为低(闪存控制器已经开始编程4 步骤3 写入的字节,并准备好缓冲下4 个字节)。
5. 可选的状态检查步骤:
如果步骤3 中的4 字节写入不够快,操作超时,这一步的FCTL.BUSY(和FCTL.WRITE)是0。
如果由于页面被锁不能写入4 字节到闪存,FCTL.BUSY(和FCTL.WRITE)是0,FCTL.ABORT 是1。
6. 如果这是最后4 字节,就退出,否则返回步骤3。
写入操作可以使用以下两种方式之一执行:
● 使用DMA 传输(首选方法)
● 使用CPU,运行来自SRAM 的代码
闪存写操作正在进行的时候,CPU不能访问闪存,即读取程序代码。因此执行闪存写的程序代码必须从RAM
执行。

感觉好复杂的样子

我用的就是z-stack里的函数,用的是dma的方式,但是,现在是我不知道怎么读写特定的bank,我的程序有点大,bank0是完全被沾满了,我如果直接用flash擦写就会擦掉代码的部分,程序就会跑死,如果是单独的flash读写工程,因为代码少,那么用同样的方法读写flash都是正确的,现在问题的关键是如何操作bank,或者怎么在bank间切换

DMA写 不需要手动切换BANK吧,DMA会自己映射过去访问

你好,请问我直接用里面的flash读写函数

HalFlashWrite(0x8400, "abcd", 1);

HalFlashRead(66, 0, FlashTempValue, FlashValueNum);

但用串口打印不出来东西,是我哪里出错了,是DMA需要设置吗,还是我的读写地址错了,麻烦能帮我分析下吗,搞了好几天都没弄好,急求!

请问你这个问题解决了吗?我也遇到这种问题,能不能指导一下?

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

网站地图

Top