打印

STM32闪存编程出现校对错误的问题

[复制链接]
3067|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhw950|  楼主 | 2012-1-8 19:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近用STM32FRBT6做了一个产品,有本地升级代码和远程升级代码两种方式,产品已经正常使用,但中间出了一个问题,一直没找到原因,后来用其他方法解决。
硬件连接:USART1 PC 升级接口。

USART2
GPRS


USART3
GPS

进入升级程序,只打开USART1中断,接收数据并更新FLASH,一切正常。但只要升级过程中USART2或者USART3有数据到来,升级就会失败,失败原因是写进去Flash的数据和读出来的不一致。已经测试了几个方法,把USART23的端口配置为输出,使用__disable_irq在接收完数据包后关闭中断再编程闪存,仍然不行。最后没办法就在升级的时候关闭两个模块的电源,问题就解决了。一直不明原因,坛子里面有没有碰到类似情况,请指点一下。
沙发
walnutcy| | 2012-1-8 20:22 | 只看该作者
应该属于软件故障,我这边设计的一款产品与你的类似,未发现该问题。一个系列的芯片。

使用特权

评论回复
板凳
walnutcy| | 2012-1-8 20:24 | 只看该作者
注: 写芯片过程中,一般用半双工,另关掉中断。

使用特权

评论回复
地板
zhw950|  楼主 | 2012-1-9 00:06 | 只看该作者
我也一直认为是软件故障,只是资料看了几遍也找不到原因,升级程序根本没有打开USART2和3两个中断,甚至把这两个端口配置为普通IO推挽输出高电平,都不行。由于升级程序采用USART1中断接收数据,接收完成后关闭中断进行升级,这时候只要USART2或者3出现数据就出现问题。

使用特权

评论回复
5
zhw950|  楼主 | 2012-1-9 00:16 | 只看该作者
目前产品已经稳定运行了一段时间,是通过关闭两个模块电源来解决,收到升级数据包后先关闭模块的电源,这样串口2和3就不会收到数据,再升级不会没有问题。 但想到还有问题没有解决,始终觉得不踏实。

使用特权

评论回复
6
zhw950|  楼主 | 2012-1-9 11:42 | 只看该作者
新情况,发现GPRS有数据输出时会产生波峰电流,而flash编程的时候极易受到波峰电流干扰,受干扰的原因可能是Bootloader程序为了节省空间没有对某些GPIO进行配置,处于高阻状态,还未证实,先留个记号,有时间再测试。

使用特权

评论回复
7
香水城| | 2012-1-9 12:01 | 只看该作者
新情况,发现GPRS有数据输出时会产生波峰电流,而flash编程的时候极易受到波峰电流干扰,受干扰的原因可能是Bootloader程序为了节省空间没有对某些GPIO进行配置,处于高阻状态,还未证实,先留个记号,有时间再测试 ...
zhw950 发表于 2012-1-9 11:42


按照这个情况看,是否在Flash编程时产生了较大的电源波动?

使用特权

评论回复
8
HORSE7812| | 2012-1-9 15:46 | 只看该作者
GPRS模块有时候电流非常非常大,不知道现在的模块怎么样了?俺以前是用WAVECOM的模块。

使用特权

评论回复
9
zhw950|  楼主 | 2012-1-9 21:19 | 只看该作者
感谢香主及楼上几位的回复,问题已经查明,确实是GPRS模块在收发数据时有较大波峰电流,导致电源有些波动,由于板子体积很小,采用贴片钽电容,容量都不大,能量不够充沛,以前有点盲目崇拜钽电容......   此故障实是电源设计不良所致,仅在对FLASH进行编程时表现出来,平时程序运行良好,故障隐蔽,不易发现。

使用特权

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

本版积分规则

1

主题

6

帖子

0

粉丝