|
LPC1768 Flash 总共有512K,其中:
0~15 扇区为 4K 有16个;
16~29扇区为32K共有14个;
4x16 + 32x14=2x32+32x14=16x32=512K希望
我有一个比较大的数组(采样记录来的),32K希望存入16~29扇区其中之一.试过无数遍,最
多只能存4K,28K空间白白浪费。因为每次写之间,都要做擦除。所能扇区虽有32K,但我只能用到4K。
后来在数据手册上也查到了,flash最多只能写4K(请见附件)
其它网友有好办法吗?还是我的方法有错误?谢谢指教
附mem_copy函数:
//ucSec1 启始扇区
//ucSec2 结束扇区
//Iadd1 启始地址
//Iadd2 结束地址
//Inum 复制字节个数,为512/1024/4096
void Write_flash_04(uint8_t ucSec1, uint8_t ucSec2,uint32_t Iadd1, uint16_t *Iadd2, uint32_t Inum)
{
uint32_t i1,i2;
extern uint16_t tr_span;
IAP_Entry = (void(*)())IAP_ENTER_ADR; // 初始化函数指针IAP_Entry
__disable_irq(); // 在IAP操作前必须关闭所有中断
parIdRead(); // 读器件ID
codeIdBoot(); // 读Boot版本号
Mcu_ID= parIdserial();
sectorPrepare(ucSec1,ucSec2); // 准备扇区29
sectorErase(ucSec1,ucSec2); // 擦除扇区29
blankChk(ucSec1,ucSec2) ; // 查空扇区29
//
sectorPrepare(ucSec1,ucSec2); // 选择扇区29
flash_code=ramCopy(Iadd1 , (uint32_t)(Iadd2), 4*Inum); // 写数据到扇区1 复制字节个数,为256/512/1024/4096
__enable_irq();
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|