EPM240-EPM570-EPM1270逻辑器件解密网


首页 -- ALTERA解密-- EPM240解密-- EPM570解密-- EPM1270解密 --关于我们
 

对Flash操作导致USART接受丢数据

问题:
该问题客户提出,发生在STM32F103VDT6 器件上。据其工程师讲述:在其产品设计中,使用了STM32 片上Flash 模拟了一个EEPROM 的功能,用于存贮数据。在软件调试时,发现开启此功能,会影响到USART 通信,导致偶尔发生个别数据接收不到的现象。
调研:
检查其软件代码,发现其中对Flash 上数据的更新操作分为如下几个步骤:
1. 保存Flash 页上的数到RAM 中;
2. 擦除Flash 页;
3. 修改RAM 中的数据;
4. 将RAM 中的数据写回Flash 页上;
对照STM32 的数据手册,查找到相关的数据:
1. 字写入时间 40uS ~ 70uS;
2. 页擦除时间 40mS;
检查软件代码,找到对USART 的设置:
1. 波特率115200BPS;
2. 帧格式为 1 个起始位,8 个数据位,2 个停止位;
检查软件代码,发现其对USART 的接收数据采用中断的方式进行读取。
结论:
通过计算,USART 的每个字节帧的传输时间为:该时间大于Flash 的字写入时间,小于Flash 的页擦除时间。所以,在Flash 页擦除期间有可能发生多次字节帧的传输。而在此其间,由于Flash 接口不可用,CPU 不能取指令,导致中断得不到及时响应,从而发生接收到的数据未及时读走而被覆盖的现象。
处理:
在内存中建立循环缓冲区,开启 DMA 通道。一旦 USART 有数据接收到,由 DMA 负责将其传输至循环缓冲区中。软件定期检测循环缓冲区中是否有接收到的数据,如果有则加以处理。
返回顶部


2013-2015 EPM240-EPM570-EPM1270逻辑器件解密网 All Rights Reserved.
如有任何问题和建议请联系:498187676@qq.com

深圳市星光芯电子有限公司 版权所有
地址:深圳市龙岗区南湾街道平吉大道1号建昇大厦B栋1618(李朗软件园对面) 电话:0755-88820678 手机:13713820066


站点地图

粤ICP备12084176号