关于光耦隔离与SP3485E芯片一起使用无法拉高485使能引脚问题

文章讲述了在使用STM32F407ZG的工控板时,遇到485接口无法发送数据的问题,分析了可能的原因,包括接线、初始化、GPIO复用、程序设置等,最终发现问题是光耦隔离的限流电阻值不正确导致。通过更换电阻解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于光耦隔离与SP3485E芯片一起使用无法拉高485使能引脚问题

问题描述

最近在做的一个项目,定制了一块STM32F407ZG的工控板,工控板载4个485接口全部都是只能接收数据,不能对外发送数据。

可能的问题原因

1.接线不正确:接线不正确导致485收发出现问题。
2.程序端口初始化问题:控制光耦隔离的输入脚IO的初始化和置位状态有问题。
3.GPIO复用问题:控制对应串口的GPIO不是正点原子默认的GPIO,而是经过复用的其他IO,复用问题。
4.程序设置与485E芯片收发模式不对应:对于使能引脚的电平要根据光耦的输出情况确定输入IO与RE的关系,可能模式没有对应。
5.光耦隔离或者SP485E这两块IC内部本身存在问题。

问题探究

如图,SP485E芯片的2号引脚RE和3号引脚DE分别控制485的收发状态,同时两引脚连接在一起,RE低电平有效,DE高电平有效,保证了485E的半双工工作状态。无法对外发送数据即485_RE使能网络无法提供高电平。
SP485E外围电路
寻找到提供485_RE网络的端口,发现其在光耦隔离继电器的输出端,由GPIO_PF4控制,电路逻辑为:PF4低电平,二极管导通发光,光耦隔离内部右边光敏元件受光导通,485_RE输出电压接近5V为高电平,反之为低电平。
光耦隔离电路
真实输出结果理应与仿真结果一致。

在这里插入图片描述

经过端对端的电平测量,发现485_RE无法输出高电平,最高输出电压仅不到1V,远小于驱动电压,其他3个引脚均正常。进一步用示波器测量,而485_RE竟然输出占空比52%,波峰波谷绝对值相近,周期20ms,而正电压有效值为5.8V(8.3/21/2),负电压有效值为6.3V(9.0/21/2),很奇怪为什么会出现正弦波
在这里插入图片描述
为排除程序影响,直接将光耦隔离的PF4引脚跳起,焊接到杜邦线上,杜邦线直接接GND,观察输出485_RE,发现依旧没有高电平输出,对几个光耦都如此实验,结果相同。
在这里插入图片描述
为进一步确定问题,进行对比实验,将其中一个光耦隔离卸下,短接PF4与485_RE引脚(上图中红色导线),测试485功能,发现收发正常。
在这里插入图片描述
初步确定为光耦隔离的问题,但同一块板子上四个光耦隔离都有问题,实在是难以令人信服。将从板子上取下来的 问题 光耦隔离芯片,按照原理图重新搭建外围电路,观察输出,发现输出正常,排除光耦本身的问题,问题依旧锁定在板子本身。
在这里插入图片描述
我是做软件的,不太清楚电路上的问题,为我们做工控板的工程师明确说电路没有问题,但目前我也找不到可能的原因了,为大家提供一些debug思路,这个板子现在拆除光耦隔离直接短接GPIO与485的使能脚进行使用。如果有人知道原因还忘不吝赐教,感谢!

2024.03.28 问题解决 答案补充

困扰了我这么久的问题,终于找到了原因,在这里感谢瀚海蓝帆工程师的帮助!
问题出自光耦隔离的限流电阻R24,如下图,但看原理图没有一点问题,但犯罪就在这个R24,实际焊在电路板上的不是330R,而是10K
在这里插入图片描述
这样的话,流经发光二极管的电流只有不到0.3mA,如此微弱的电流自然是无法驱动发光二极管的,所以光耦输出无法导通,就一直是低电平,接到SP3485E的使能引脚,就只能低电平有效的接收了,无法发送。

更换了270R的限流电阻,再次测试光耦隔离的输出,得到4.5V的高电平。顺利解决!

板子是买的工控板,搞这种情况确实非常坑人。
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值