原创 [博客大赛]74HC595驱动8段数码管的时钟线处理

2013-12-25 13:21 1936 27 27 分类: MCU/ 嵌入式 文集: 硬件小模块

问题:当多个数码管串联时,不论是多少个,为什么处在末端的几个模块都有可能出现乱码?

 

使用示波器的10x探头观察,会发现高速时钟线上会出现驻波(standing wave)。其实信号线上都会有驻波,只是强度大小不同而已。

驻波强度和信号的0/1频率没有关系,而是上升下降斜率的频率有关。

 

一般来说,判断电平值的信号线,驻波并没有多大的影响;但是读取边沿的信号线,驻波的影响就不可忽视。驻波造成了74HC595的时钟线读取错误:本来应该读取1个数据的时候,它读取了多个进去。

 

解决方法有两个:

第一,降低信号线频率,将GPIO_Speed_50MHz改为GPIO_Speed_2MHz

降低了信号线频率,驻波的强度也会随之降低,原来会出现的乱码现象也会消失。

从前我一直不明白,既然STM能够做到50MHIO口操作频率,为什么还要提供2M10M50M三种选项呢?直接都设置成50MHz不就可以了吗?

原来它们是有各自适用的范围的。

 

 

第二,使用GPIO_Speed_50MHz频率,但是在信号线上串联一个68 ohms的电阻。

在高速时钟线上,阻抗不匹配会导致信号的反射,也就是信号的振铃效应。一般来说,对直流通路而言,输出引脚的阻抗较低,而输入引脚的阻抗较高;在高速频率下,传输线还具备大概认为是50 ohms的特征阻抗。信号遇到高阻抗的输入引脚,反射回来叠加到输出引脚上,形成驻波。因此,通常在高速时钟线上串联一个47 ohms100 ohms的电阻,吸收掉它。

如果串联的电阻为10欧姆,信号振铃几乎没有改善;

如果串联的电阻为120欧姆,信号变形严重;

如果串联的电阻为68欧姆,信号振铃得道很好的改善。

 

 

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
27
关闭 站长推荐上一条 /3 下一条