Part Number:MSP430I2031
你好,我们公司准备使用MSP430I2031芯片设计一款产品,需要使用到芯片的flash功能,我调试官方样例代码时发现,flash第一次存储时存储数据正常,如下图:
第2次存储flash就会出现问题,存储数据异常,如下图:
第3次也一样,如下图:
这是官方的样例代码,并未进行修改,请问这是什么问题,怎么解决呢?谢谢!
Yale Li:
根据现象,我推测是写FLASH之前没有清FLASH导致的。
由于FLASH的特性,清FLASH实际上是由0置1的过程,写是由1置0;
原始数据是0xA5,二进制即0b0101(A不变所以不看),第二次是0xA6,即0b0110,最低位的1可以被写0,但第二位的0不能被写1,所以变为0b0100,即0xA4;
第三次是0xA3(0b0011),第三位的1可以被写0,但所有0均不能被清为1,所以结果为0b0000(0xA0)。
建议从这个角度看一下代码
,
Jason Chen:
好的 谢谢
,
Yale Li:
客气了
,
Jason Chen:
你好 ,我试了写之前先擦除flash,存储是正常了 可是设备断电再上电就不能正常运行了,仿真时,一直卡在这里:
应该是缺失什么东西了,是擦除flash出问题了吗?
,
Yale Li:
Jason Chen 说:
方便指一下具体是哪个文件的哪一行吗?
以及使用的例程是哪一个?方便的话提供一下路径。
,
Jason Chen:
官方样例代码里的文件 使用的是官方flash的样例代码 添加的擦除flash的操作
,
Yale Li:
C:\ti\msp\MSP430Ware_3_80_14_01\examples\devices\MSP430i2xx\MSP430i20xx_Code_Examples\C\msp430i20xx_flashwrite_01
擦除的具体是哪个地址?有可能是把参考电压的校准值擦除了:
https://www.ti.com.cn/cn/lit/ds/symlink/msp430i2031.pdf