打印

奇怪问题,求指教!关于MSP430将数据保存至info flash

[复制链接]
2999|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hwk612167|  楼主 | 2011-7-18 21:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1)   FCTL1 = FWKEY + WRT;            //允许写操作
2)   while( FCTL3 & BUSY );          //等待Flash存储器完成操作
3)    for( u8_i=0; u8_i<u8_len; u8_i++ )
4)    {
5)       *dptr++ = *sptr++;
6)        while( !(FCTL3 & WAIT) );   //为1表示准备好写下一个字节
7)    }
以上代码,连续写多个字节,可以正常完成。去掉while( !(FCTL3 & WAIT) );也可以正确写。但是,查看msp430 user guide,上面说明多字节谢需要将FCTL1的BLKWRT置位,第1)句写成FCTL1 = FWKEY + WRT +BLKWRT;  却不能正确写入数据,请问这是为何???
另外,手册中将WAIT只在BLKWRT位置位时才有需检测,我上述代码加不加都可以写成功,是什么原因呢?还有很多教材讲,WAIT是跨了block才需检测,而手册中描述是块写入时每写一个字(或字节)就需检测一次,谁对谁错呢?
实在弄不清楚,希望知道的指点下,谢谢啦!!!

相关帖子

沙发
hwk612167|  楼主 | 2011-7-19 13:24 | 只看该作者
:dizzy:看来这个版块人气不够旺啊~

使用特权

评论回复
板凳
hwk612167|  楼主 | 2011-7-21 13:00 | 只看该作者
没人用内部flash???还是

使用特权

评论回复
地板
shimx| | 2011-7-21 13:46 | 只看该作者
还在睡午觉吧:sleepy:

使用特权

评论回复
5
t.jm| | 2011-7-21 16:14 | 只看该作者
1# hwk612167
这个问题看一看TI给的例子就知道了。随便载录几段例子程序:
1)
for (i=0; i<64; i++)
  {
    *Flash_ptr++ = value;                   // Write value to flash
  }
2)
for (i=0; i<128; i++)
  {
    *Flash_ptrB++ = *Flash_ptrA++;          // copy value segment A to segment B
  }
这中间都没用while( !(FCTL3 & WAIT) );

使用特权

评论回复
6
hwk612167|  楼主 | 2011-7-21 18:13 | 只看该作者
User guide上说多字节写要置位BLKWRT是肿么回事?

使用特权

评论回复
7
msp430ing| | 2011-7-21 22:22 | 只看该作者
那是说要整块写的时候,多字节也可以一个字节一个字节的写,就不要置位了

使用特权

评论回复
8
hwk612167|  楼主 | 2011-7-24 00:37 | 只看该作者
那再请问下,一个块64字节,我不置位BLKWRT写64字节与置位区别在哪》?还有不置位BLKWRT,能跨block连续写嘛??谢谢
7# msp430ing

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:前进 前进 前进

20

主题

511

帖子

3

粉丝