原创 再次强烈体会到电源对电子电路的影响

2008-11-23 19:34 6561 6 9 分类: 电源/新能源

最近做了一个MSP430F2232+nRF24L01做无线通信的系统,为了扩展无线通信距离在nRF24L01的输出端又添加了功率放大器PA2423L,使得输出通信距离可以扩展到数百米。最初调试驱动程序时都是使用两节AA电池供电的,每次将电源接口从板子上拔下来算是断电,重新插上去就是上电了!程序写好了后,测试一切正常没有问题。


但是,将整套东西交给朋友测试后,在他那里却发现了问题!他使用的是直流稳压电源为板子供电,稳压电源的输出端与板子的电源输入接口始终保持连接。每次关掉稳压电源的算是给板子断电,打开稳压电源算是给板子上电。故障现象是:每次给板子上电后,程序启动正常,但是运行完10S倒计时部分后,就会卡死,不在继续往下执行。但是,如果保持直流电源一直处于打开状态,而将电源接口拔下来作为给板子断电的方式,将电源接口插上去作为给板子供电的方式的话,在10S倒计时后能够正常运行了,也即程序正常工作!


这是为什么呢?到底是软件的原因还是硬件的原因呢?如果是软件的原因那么为什么插拔板子的电源接口时程序能够正常运行,如果是硬件原因那么为什么直接开关直流电源时10S倒计时程序也能运行呢?这个害得我苦思冥想大半天的问题,最终还是被我解决了。


原来,最初的程序结构是这样的:上电后设置msp430的系统时钟,初始化msp430内部的SPI模块,通过SPI端口初始化nRF24L01,然后进入10S倒计时,倒计时结束后发送无线链接数据,然后读取传感器数据,显示数据。经调试发现,在倒计时结束后,发送数据时MCU进入死循环等待,为什么呢?原来MCU向nRF24L01写完发送数据后,需要等待nRF24L01返回一个发送结束标志,如果没有这个结束标志MCU就一直等待下去!所以在直接开关直流电源时出问题的原因就是nRF24L01一直没有返回发送数据结束标志!可是初始化nRF24L01后向其中写数据后它就会自动发送自动返回发送接收标志了,这个不应该有问题的,如果说nRF24L01没有返回发送结束标志,那只能说明数据没有发送出去,为什么没有发送出去呢?只能是初始化不成功了!但是初始化怎么可能会有问题呢,以前一直是好用的呀!莫非是上电时电源波动太大对MCU造成了影响,可以如果真是这样的话,MCU就不能正常工作了,那为什么还能正确执行10S倒计时程序呢?


后来,我抱着试试看的心态,将初始化nRF24L01的程序放到了10S倒计时的后面,重新编译下载测试,哇塞,10S倒计时部分后程序继续运行,液晶显示了传感器数据,一切正常了!这时候无论怎么开启和关闭直流电源都程序可以正确运行了!看来真的是开启直流电源时干扰了板子,只不过干扰的不是MCU的运行,而是MCU与nRF24L01接口的SPI总线吧!我猜测可能是上电时电源波动太大影响了SPI总线(总线时钟为4MHz)上的数据传递,导致初始化nRF24L01失败,所以当MCU试图控制nRF24L01发送数据时就会陷入永远等不到发送结束标志的死循环中了!而10S倒计时过后,电源已经稳定了,此时不会对SPI造成影响,所以这时再初始化nRF24L01就是成功的了,也就能够控制nRF24L01收发数据了!


而保持直流电源一直开启,直接插拔板子的电源接口时由于直流电源的输出是稳定的不会对SPI造成影响,所以那种情况下MCU中的程序能够正确运行!使用电池时程序正确执行也是同样的道理了!(以上分析仅为个人观点,不能保证一定正确;如有高见,欢迎交流!)


这是才想起来,以前听老工程师讲过,他们在写51单片机的程序时,上电后的第一件事通常是让MCU什么也不做,只是执行NOP循环、等待几秒钟(如果系统允许的话),然后才执行初始化和系统程序!当时一直不明白原因,现在自己遇见了才知道,上电过程中电源的不稳定对电子系统的影响是相当巨大,所以我们在设计软件程序时必须仔细考虑审慎处理上电初始化部分啊,否则可能对后面程序的执行造成重大影响呢!

文章评论4条评论)

登录后参与讨论

用户377235 2012-11-29 19:37

我也碰到类似的问题,回去试一下

用户1405829 2009-6-15 17:12

看来电源真的非常重要啊~~~

用户1411055 2009-1-6 13:46

CC2500+CC2591是在CC2500的基础上扩展CC2591;CC2500+CC2591且是集FSK/ASK/OOK/MSK.调制方式于一体的收发模块。它提供扩展硬件支持实现信息包处理、数据缓冲、群发射、空闲信道评估、链接质量指示和无线电波唤醒,可以采用曼彻斯特编码进行调制解调它的数据流。性能优越并且易于应用到你的产品设计中,它可以应用于2400-2483.5MHz ISM/SRD频段的系统,消费类电子产品、无线游戏控制器、无线音频传输和其他的无线系统中。 我们目前有支持2400-2483.5MHz范围的 ISM频段的模块。 Features 基本特征 1 Low current consumption. ●低电流损耗 2 Easy for application. ●方便投入应用 3 Efficient SPI interface ●高效的串行编程接口 4 Operating temperature range ●工作温度范围:﹣40℃~+85℃ 5 Operating voltage ●工作电压:1.8~ 3.6 Volts. 6 Available frequency at ●有效频率:2.4-2.483GHz 7 Programmable output power and hi sensitivity ●灵敏度高、输出功率可编程 距离可以做到1公里以上,不知道有没有兴趣,QQ:79416991 http://chushiwei0903.b2b.hc360.com/supply/48152675.html

用户204274 2008-12-20 12:33

上电等待10S才能正常工作,此产品要是用在军事方面,恐怕你的武器还没有准备好,已经被敌人消灭了,说着玩的,LZ别生气。这种软件延时太长,不可行,还是在电源上下点功夫比较好,个人建议。
相关推荐阅读
用户1196937 2010-08-22 14:51
电影《唐山大地震》的原型———小说《余震》
...
用户1196937 2010-08-09 23:19
skyeye的问题及解决方法
第一次用skyeye,从网上下到了它的testsuit,可是执行时确总是出现各种问题,先将解决方法描述如下:1. skyseye的正确命令格式如下(用skyeye -h查看):#skyeye -hSk...
用户1196937 2010-08-08 21:38
【转载】Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍作者:北南南北来自:LinuxSir.Org提要:Linux 磁盘分区表、文件系统的查看、统计的工具很多,有些工具是多功能的,不仅仅是查...
用户1196937 2010-08-08 19:29
Fedora 11和Ubuntu 9.10安装vmware tools 解决文件共享的问题(转)
转帖原文:用vmware workstation 6.0安装了fedora 11。由于要解决屏幕分辨率和文件共享的问题,就尝试安装 vmware tools。但是每次编译都有很多错误。鼠标移动是没有问...
用户1196937 2010-08-04 23:05
Fedora11下编译Skyeye1.3.0中的问题描述及解决方法
最近因为工作需要,自己找来skyeye的源码编译了一下,编译过程中遇到了不少问题,在google的帮助下都一一解决了,这里记录一下,希望能对需要的人有所帮助。按照源码中INSTALL文件提示的步骤编译...
用户1196937 2010-07-19 22:52
Stay Hungry, Stay Foolish -苹果总裁史蒂夫乔布的演讲
Stay Hungry, Stay Foolish 求知若饥,虚心若愚 Steve Jobs于2005年对斯坦福毕业生演讲全文今天,很荣幸来到各位从世界上最好的学校之一毕业的毕业典礼上。我从来没从大学...
我要评论
4
6
关闭 站长推荐上一条 /2 下一条