TI中文支持网
TI专业的中文技术问题搜集分享网站

28035flash擦除问题

我用的芯片是28035。我先要需要通过uart通讯,将地址写入flash存储,然后在读出来。我利用controlsuite里面的Flash API的例程序(Example_Flash2803x_API),对28035的Flash进行擦除与写入.

我将例子中的代码放到我的APP里面一起整合,代码变化不大。然后进行调试。

一、开始时,我在程序里没有加中断,可以顺利的进行擦除与写入,但是当我加入一个定时器中断后,flash的Status = Flash_Erase(SECTORC,&FlashStatus)的命令就擦除不过去了,请问这是为什么,难道中断会影响flash区的擦除吗?

二、后来我就在擦除时把所有的中断关了,擦完在开中断。这样可以擦除flash区了。然后我就拿仿真器XDS100V3进行仿真操作,我通过uar发送t写入命令,执行命令时先执行擦除命令,在存入需要写的地址。这样可以更改地址了。但是当我不在线仿真了,直接上电后,我在发送写入命令,此时,就擦不了了,一直停在擦除命令过不去。(由于我是关了中断,定时器就停了,所以我知道他执行到擦除指令了)。然后我又插上仿真器运行,依然可以擦除和写入。但是我不用仿真器后就还是擦不了,就一直停着过不去。请问这是为什么啊?该怎么解决?

请帮我分析下可能的原因,谢谢!

user4126700:

回复 mangui zhang:

一、我目前先关了所有中断,然后等待一会,在去擦除FLASH,现在效果好多了,可以进行擦除了。但是现在擦除成功的效率不是很高,也就是80%。有时候会擦除不成功(我认为),我不确定是不是擦除不成功导致的,就是我写的地址是0x02,但是单片机执行擦除后地址却变成0x00,而不是默认的0xff(但是大多数情况是运行正常的,擦除成功,也能把0x02这个地址写进去),请问出现0x00是擦除不成功吗?

二、对于您说的“还有一直停在执行擦除指令你是怎么看到的 ”这个问题:

DINT;

Status = Flash_Erase(SECTORC,&FlashStatus); if(Status != STATUS_SUCCESS) { Example_Error(Status); }

EINT;

我执行的是上面这句话,我是先关了所有中断,如果擦除成功,就不会进if(Status != STATUS_SUCCESS)这句话,但是我擦除后,我的中断就不进了,我就认为他进了if函数里,执行Example_Error(Status);这句话,所以我才说一直停在执行擦除指令。

三、最后我想问一下,对于擦除ti系列的单片机的flash区时,可以做到100%成功吗?还是这是一个高成功率的事件,有时候会有擦除不成功呢?

赞(0)
未经允许不得转载:TI中文支持网 » 28035flash擦除问题
分享到: 更多 (0)