6174|18

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教STM32初始化延时问题 [复制链接]

请问STM32初始化告诉晶振判断稳定后完,I/O,TIM,USART初始化后,
进入应用前时候要不要加入delay?

我测得的现象是这样的,

上电!
_BSP_IntInit();
_RCC_DeInit();
。。。。。。。。。
。。。。。。。
_RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
_while (RCC_GetSYSCLKSource() != 0x08) {}

(1)

_I/O,SPI,USART,初始化函数
{}

_调用SPI读FRAM程序。
{}

【注】如果(1)处不加延时则,读取FRAM不稳定,有时候对有时候错,如果加入则没问题我这里实验的是加入100MS软件延时就不会出现读写错误。

请问:我原来的板子没加延时没返现这个问题,现在的板子跟原来的电路没什么区别,但是却出现了这个问题,不知道为什么,对于STM32这里是否加上好些,还是根本就不要加延迟,我的程序哪里有问题?
此帖出自stm32/stm8论坛

最新回复

                                 学习到不少东西  详情 回复 发表于 2009-12-24 19:13
点赞 关注
 

回复
举报

12

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
自顶
在线等答复!!
此帖出自stm32/stm8论坛
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 看样子楼主很急,帮不了你,等待高手
此帖出自stm32/stm8论坛
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 

感谢hsbjb的回复!
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 同样的程序在原来的板子上是好的,新板子上有问题,你还是应该在你的板子上找问题。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 这个问题应该和STM32关系不大,而是FRAM的问题。FRAM在上电后也要进行一些内部初始化,所以在上电之后很快就对它进行操作,它可能还没有“准备好”,所以会出现有时出错的情况。一定延时之后,FRAM初始化完毕,再进行操作就不会错了。
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

7
 
刚刚查了下FRAM手册这里的确有个第一次上电操作时间tPU 原文如下:

//6.2. 首次访问时上电
//用户在FM25L256B 上电时间超过10ms 之后才可以访问它。用户必须遵守时序参数
//t PU ,这是从V DD (最小值)到第一次访问开始的最小时间。

我试过延时10m这个最小值可能不行,20ms就没问题了。

谢谢desert_hawk!!!
送分!
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 怎么没加上分呢?
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 楼主啊,你还没结贴呢,呵呵。这个帖子的50分也送我吧。
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

10
 
楼主,你的问题还没有解决呢!!

你说过“我原来的板子没加延时没返现这个问题,现在的板子跟原来的电路没什么区别”,就是这一点误导了所有人(包括你)的判断,既然现在加延时可以解决,那么原来的板子没有延时却没有问题,这该怎么解释呢?难道真的是电路没有区别吗?

请仔细检查一下,以解大家之惑。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 这个问题应该和电路关系不大,估计是程序有区别,楼主以前的程序应该没有上电后就很快操作FRAM。
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

12
 
可能高兴的太早了,呵呵
好分析一下:
原来的板子我估计是晶振可能稳定性差点,
while (RCC_GetSYSCLKSource() != 0x08) {}
执行时候已经有了延时,所有后面可能无需延时就可以操作FRAM了
但是新版(其实晶振及FRAM这里并未改动,但是其他的I/O改动可能导致整体稳定性增强)可能是这方面好些,从而前面延时时间较短所以会出现FRAM上电tPU时间不够吧?
以上只是推测 ,还没想出来有什么好办法验证下!
(估计以前的板子也是在临界状态)

【注】程序老板子跟新板子是一样的。
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 既然这样,你就在开始操作FRAM之前通过一个I/O口输出一个脉冲,用示波器观察VDD与这个脉冲的关系,这样就可以准确地知道从上电至开始操作FRAM时的时间,从而可以精确地知道是否确实是由于上电延迟的问题了。
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

14
 
                                 也可能与器件开始工作的门限电压有关。如果STM32开始工作的门限电压低于FRAM,那么FRAM必定会晚于STM32开始工作,这时候电路板上的器件变化(耗电量的改变,滤波电容大小的改变)就会影响到电压上升的速度,也就会改变STM32和FRAM开始工作的时间差了。
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

15
 


还有个情况也说下,也能说明是电压刚上电不稳的情况
就是我用JLINK仿真器仿真,无需加延时也OK。拿下仿真器重新上电不加延时就不行。

基于以上我分析是由于加入仿真器,程序是由仿真器控制的程序运行及复位过程,在这之前板子早已上电所以
FRAM有足够时间来稳定。
为了验证我的分析,我又将板子单独供电运行(脱离仿真器)
发现不加延时不行,但是在经过我手动复位后发现可以正常运行。
OK,得出结论,还是因为刚上电瞬间FRAM的tUP时间不够导致的 FRAM读写操作失败!!!

因为我的示波器只有一个探头,所以无法捕捉上电瞬间VDD与 FRAM之间的关系。
不过我相信以上的两个实验足以证明了我的推断!
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

16
 


之前的板子只能是说 稳定性不如我新板子,其它没找出原因!
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

17
 
                                 刚才详细查了下,STM32上电后在电压大于2V的1-4.5ms之后开始工作,而FM25L256在上电后电压大于2.7V的10ms后才可以操作,如果楼主的新板子由于器件原因上电后电压上升较慢,就有可能出现此问题了。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

18
 
恩 对的
好了 知道原因就好了,再次感谢 desert_hawk  香水城 等大侠的帮助!
结贴!
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

19
 
                                 学习到不少东西
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表