串口问题案例分享

最近在调试一个新板子的时候,发现一个问题,板子使用的是一个国产的处理器芯片,表现为如果板子232串口的发送和接收与电脑串口连接时,板子可以正常进入系统。

但是如果板子与电脑只接232串口的发送信号,不接232串口的接收信号或者232串口的发送和接收信号都不接,板子不能进入系统,只能进入到UBOOT,并且log打印还会有乱码。

这块板子的处理器芯片串口部分的电路示意图是这个,串口信号从处理器出来是1.8V,经过一个1.8V转3.3V的电平转换芯片变成3.3V的串口信号,再经过一个MAX3232芯片,将3.3V串口信号变成RS232电平的串口信号,最后经过TVS防护电路连接到连接器。

串口问题案例分享_第1张图片

发送信号是从板子处理器端出来,在电脑端接收;

接收信号是从电脑端出来,板子处理器端接收;

板子处理器芯片在系统启动时会一直发送log信息,也就是启动时串口的发送信号会在一段时间内一直有数据,但是在电脑端只要不按按键,接收信号一般不会有数据。

串口问题案例分享_第2张图片


在板子连接了232串口的发送和接收信号时,我们测量232串口的发送和接收信号,当有发送信号有数据时,波形是这一个。

这个黄色的是发送信号,蓝色的是接收信号。

可以看到接收信号一直是一个负值,也就是232电平的逻辑1。

串口问题案例分享_第3张图片

 当板子没有连接232串口的接收信号只连接了发送信号时,我们测量232串口的发送和接收信号, 波形是这一个。

大家可以看到,232串口接收信号在发送信号变化时,也会莫名其妙的产生信号。

串口问题案例分享_第4张图片

 我们再看下串口232的接收信号和3.3V的接收信号。

大家可以看到由于232接收上莫名其妙的信号   导致3.3V的接收上也会有数据。

串口问题案例分享_第5张图片

 讲到这里也就解释了为什么不接232串口的接收信号,板子会进入到UBOOT,因为当系统启动时,在UBOOT界面会等待两秒,如果这两秒时间内你在电脑界面按任意的按键,进程就会就会进入到UBOOT而不会进入后面的系统,

串口问题案例分享_第6张图片

 但是我们在电脑端明明是没有按按键的,结合测量的波形,我猜测系统检测到有按键按下是由于232串口上莫名其妙的信号组成个了某个按键,从而导致启动时错误的进入了UBOOT。

知道了启动进入UBOOT的原因是由于串口接收端上这些莫名其妙的信号,接下来我们分析串口接收端上这些莫名其妙的信号是怎么来的。

我们再来看到板子没有连接232串口的接收信号只连接了发送信号时,232串口接收和发送的波形。

串口问题案例分享_第7张图片

 大家可以看到只有发送信号跳变的时候,接收信号才会产生这个莫名其妙的信号,并且从这个波形看这个莫名其妙信号很像电容的充放电。

但是整个串口电路上没有放电容啊,经过排查,最后我发现是因为串口的防护电路部分引入了电容,防护电路接了三个TVS管,大家都知道TVS管是有结电容,查数据手册才知道这个TVS管的结电容在1nF左右。

串口问题案例分享_第8张图片

 然后MAX3232芯片内部在接收端是有一个5K的下拉电阻的。

串口问题案例分享_第9张图片

 再加上TVS管的结电容,就构成了一个RC电路,由于电容两端电压不能进行突变,所以在串口发送信号的上升沿和下降沿,电容会进行放电和充电,也就很好的与我们测量的这个波形相对应了。

串口问题案例分享_第10张图片

 知道了原因,整改的话当然也就很容易了,我们只需要换结电容比较小的TVS管即可。

你可能感兴趣的:(电子电路知识,单片机,嵌入式硬件,电路,硬件,数字电路)