打印

IAP的FLASH刷写问题

[复制链接]
1921|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
torsten|  楼主 | 2012-7-24 10:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我有两块不同的板子,都用同一款STM32F103VCT6,两片板子都有在线升级程序。
在线升级的步骤都是一样,首先在用户程序中用flash_unlock解锁,接着复位进入在线升级例程。接收够2K的字节后,先把页擦除,然后再写页,接着再把写进去的数据读出来校验。待整个程序写flash后就flash_lock,然后复位。
板1使用在线升级程序,校验完全没问题,升级也成功。板2的每一页的校验都不通过,而且在屏蔽了校验的情况下升级后的程序还是原来的程序。两片MCU的供电电压正常。用仿真器都能正常烧写。
请问各位大侠,为什么板2会出现这种情况呢
沙发
torsten|  楼主 | 2012-7-24 14:02 | 只看该作者
看现象觉得是板2的FLASH_unlock()没有起作用,但是在板1上试过没有问题,而且也是固件库的程序。请各位大侠帮个忙吧。

使用特权

评论回复
板凳
21ID| | 2012-7-24 14:03 | 只看该作者
应该没有写进去吧

使用特权

评论回复
地板
torsten|  楼主 | 2012-7-24 15:09 | 只看该作者
3# 21ID

从现象看也是没有写进去,但是Flash_unlock()和programhalfword()两个程序都是用库文件中的例程,而且在板1上使用是没有问题的。

使用特权

评论回复
5
香水城| | 2012-7-24 16:20 | 只看该作者
使用ST提供的例程,单独测试下板2,看能不能擦除。先排除程序问题。

使用特权

评论回复
6
torsten|  楼主 | 2012-7-24 20:05 | 只看该作者
5# 香水城

板2原来的程序是用了flash_unlock以后就复位,然后就擦除FLASH写FLASH,这样FLASH一点也写不进去。后来我看了网上的例程,我先复位,再flash_unlock,然后加一个FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR)  来清除标志位,然后擦除、写FLASH,这样就没问题了。我的板1用的跟板2原来的步骤一样,在板1上是可以的,但是板2上就不行了。
请问香版,这两个步骤后一个才是对的吗?

使用特权

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

本版积分规则

1

主题

37

帖子

1

粉丝