原创 信号线小电阻的作用

2015-7-19 11:44 2208 23 9 分类: 消费电子

在一块新的PCB上,测试系统能否正常运行的时候,发现系统上电后没有正常启动。 
系统框图如下: 
这里写图片描述 
在上电的时刻,CPU A(GPIO电平2.6V)会向串口发送启动日志数据,CPU A启动后,使能CPU B(GPIO电平 3.3V)模块的电源芯片,CPU B开始工作。 
经分析,发现是上电时刻CPU A的Rx接收到数据,导致CPU A进入非正常启动状态。

猜想CPU A的Rx端接收到信号的原因可能为: 
CPU A发送启动日志数据后 CPU B有回复,造成CPU A的Rx接收到数据; 
考虑到CPU A启动后才使能CPU B的电源芯片,于是测试CPU A的控制CPU B电源芯片的引脚。发现在复位后的瞬间会出现一个50us左右的一个使能信号,可能在此时CPU B进入工作接收到CPU A的数据,并回复。 
但是, 
1、CPU B的启动初始化能否在50us内完成? 
2、在115200 bps的波特率下,完整接收玩一个字节需要的时间为10*1/115200=86.8 us。所以,在50us的时间内CPU B还没有收到一个完整的字符。 
这种假设不成立。

在使用示波器测量串口Rx上的电平时,发现在Rx出现了方波状带有杂波的波形,电平信号在1.8V左右。1.8V的电平信号,很可能造成Rx端接收异常的数据。 
为了使CPU A端的电平确定,尝试在CPU A端添加了1K的强上拉电阻。发现系统确实可以正常工作。此时,测试CPU A端Rx,发现出现的方波状波形在2.4V左右。虽然,这样能够暂时解决问题,但是并没根本解决问题。

在比较新旧两块PCB的时候,发现旧的PCB上在CPU A端Tx Rx存在一个120欧姆左右的小电阻,如下: 
这里写图片描述 
旧的PCB在测量CPU A端Rx处的电平时,发现电平为0。

在新的PCB上CPU A端添加两个120欧姆的小电阻后,系统上电时,CPU A端的Rx电平也为0。 
所以,此处的根本原因在于串口线上缺少了两个小电阻。

关于小电阻在信号线的作用: 
1、抑制信号反射(吸收反射的信号); 
2、提高抗干扰能力; 
3、防止GPIO被瞬间信号击坏; 
4、阻抗匹配(串接和并接的目的是一致的,只是手段不一样)。

参考连接: 
信号线时钟线地址线GPIO串联小电阻作用

文章评论7条评论)

登录后参与讨论

1989tie_959541171 2015-7-26 20:46

这里的电源上电顺序是,CPU A->CPU B, A先上电,出问题的时候,B还没有上电。

忆轻狂 2015-7-22 16:41

开机出现的杂波原因是什么?

forrest 2015-7-22 10:46

这个分析不对。是用结果倒推原因,用假设的逻辑分析问题,并没有验证。

用户1406868 2015-7-21 17:55

用户1023719 2015-7-21 11:32

显然是CPUA电源还没有供电,IO却得到一个高电平,而这个高电平有不足以让CPUA工作其他(驱动能力不够),貌似加1K上拉后供电足够让CPUA工作了。在这种情况下,串120R电阻其实还是有风险的。我觉得正确的做法是,CPUB启动后,在给CPUA加电前,把CPUB的串口置于高阻态,然后给CPUA上电即可。

用户1678053 2015-7-21 08:32

看看

用户1454308 2015-7-21 07:57

Good

用户631 2014-8-10 17:20

不错啦

用户551770 2014-7-28 06:54

又学到新知识了!

用户1774167 2014-7-24 23:01

不错啦
相关推荐阅读
catch2000 2015-07-05 17:04
协议设计中ACK机制的影响
在TCP/IP中,延时ACK和Nagle算法。  TCP为了同时处理成块数据(通常为512字节的用户数据)和交互数据(通常用户数据比较少,例如不大于10个字节),采用了延时ACK和Nagle算法...
catch2000 2015-05-23 15:48
话说物联网操作系统
最近好多家都宣布推出自己的物联网操作系统。   1. Google将要在Google I/O大会发布的Brillo; 2. 三星推出的Artik芯片搭载Mentor Graphics的...
catch2000 2015-03-31 23:52
不要采用异或来交换两个变量
在进行两个变量的时候,经常会看到有些书误人子弟的推荐使用异或的方式: 方式一 {   x = x ^ y;   y = x ^ y;   x = x ^ y; } 而不是...
catch2000 2014-10-09 07:28
为什么要测试先行
在产品的研发过程中,测试一项至关重要。不论是软件还是硬件。   软件的测试先行,在研发过程中,就做到质量的保证,因为在出现Bug的时候,容易定位Bug,而且即使是在客户端出现Bug,也能够...
catch2000 2014-10-09 07:26
C语言的面向对象编程(一)
一、前言 对于编程而言,重要的是解决问题的方式,而不是语言本身。面向对象与面向过程是解决问题和思考问题的方式。C语言常说是面向过程开发的语言,因为其缺少很多对于面向对象特性的支持。但,这并不影...
我要评论
7
23
关闭 站长推荐上一条 /2 下一条