RS485自动收发电路震荡的问题

电路

RS485自动收发电路震荡的问题_第1张图片

设计初衷

        电源5V

        选择5V的原因,差分2.5V比1.5V可以提高传输能力

        TTL输入

        3.3V电平满足需求

        TTL输出

        4.5V了,MCU是3.3V平台

这样就分为两种情况

        MCU接收端可以容忍5V输入

        MCU接收端不可以容忍5V输入,就要进行电压转换,我这里使用的是电阻分压 注意就是这里引发的震荡。

        为什么选择电阻分压,当时的思考是,无论MCU是否能容忍5V这样总该不会有问题。

        MCU串口接收引脚

        事后写文档才开始去详细看IO引脚接受电平情况

        PA3,PC5

RS485自动收发电路震荡的问题_第2张图片

        引脚说明        

RS485自动收发电路震荡的问题_第3张图片

 通过查阅MCU数据手册可以看到PA3,PC5都可以接受5V电平。

震荡

        这路串口我使用了shell 交互功能;//就是因为有shell这个电路才震荡的。

shell有一个功能:无论什么输入都会有输出;

现象描述

        电路上电,就看到了串口接收引脚一直有数据,串口发送引脚也一直发送数据;

整个MCU一直被这个收发占用了。

调试

        原理图/PCB检查       

        因为这个收发电路是晚上抄别人的,自己第一次这样使用,怀疑原理图/封装 哪里没有连接正确。

        没有发现问题;

        R59接收电阻去掉

        这样就相当于接收接地了,MCU正常运行了,串口输出也正常。

        485芯片坏了吗?

        换了485芯片,问题依旧。

        单独测试接收

        将R57电阻对地,示波器解码功能测试接收到的数据正常。

        此时空闲的时候接收引脚是呈现高电平约5V的。

        单独测试发送 

        上位机收到数据也是正常;

        此时空闲的时候接收引脚是呈现高电平约1.2V的。

        到这里1.2V没有引起我的注意。

        收发电路全部还原测试 

        这时候又恢复了震荡状态,测试注意到了 接收引脚电路是在变化,但是低电平只有1.2V.

        这时候我才意识到,接收引脚是因为收发切换导致的电平变化,并不是有实际的数据。

        与上面的测试收据对应起来了。

        查485芯片数据手册

RS485自动收发电路震荡的问题_第4张图片

        啊哈 ,破案了

震荡的原因

        板卡上电 -> 485芯片接收状态(1脚高电平) -> MCU输出log信息 -> 485芯片发送状态(1脚高阻)由R44,D28,R59,R58 分压约1.2V  -> MCU接收到数据,shell解析,输出解析内容 -> 485芯片发送状态(1脚高阻)由R44,D28,R59,R58 分压约1.2V  -> MCU接收到数据,shell解析,输出解析内容......无限循环。

解决方案

  • 将R58去掉;//我的选择
  •  增加电平转换芯片

这两种方案都是可以的。

小结 

        这都是满满的经验啊。

        刚遇到这个问题我也是很纳闷,怀疑USB转485坏了,怀疑MCU坏了....开始烦躁。

        此时不应该继续这种坏情绪。

        喝杯咖啡 / 出去走走 / 小憩一会。。。

        思路理清楚在继续调试,就会高效很多。

你可能感兴趣的:(电子线路,单片机,嵌入式硬件,RS485,自动收发,震荡)