博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
485通信自动收发电路,历史上最详细的解释
阅读量:2094 次
发布时间:2019-04-29

本文共 1984 字,大约阅读时间需要 6 分钟。

作者:瑞生,来源:科技老顽童

微信公众号:芯片之家(ID:chiphome-dy)

上边的485通信自动收发电路,实测波特率9600不会有问题,但是,波特率115200的话,曾经出现过问题。

我们先看看普通的收发电路

普通的485电路,除了“用RXD连接485芯片的RO引脚、用TXD连接485芯片的DI引脚”,还会用一个单片机的普通IO引脚连接到RE、DE引脚上。

当单片机要发送数据的时候,控制CTRL为高电平,数据通过TXD发送出去。

当单片机要接收数据的时候,控制CTRL为低电平,数据通过RXD接收回来。

然而,自动收发,就是不用单片机引脚CTRL,当数据进来的时候,数据会自动通过RXD到单片机,当需要发送数据时,自动通过TXD发送出去。也就是只需要连接单片机的RXD和TXD引脚就可以,无需用单片机引脚连接485芯片的DE RE引脚

文章中第一张图,就是实现自动收发的电路,实际上,自动收发的电路,还有好几种连接方法。今天,我们只研究这一种我经常用的。

很多人,都会使用这个电路,但是不知道其中的原理。(是的,就是在说你呢!)

所以今天我来给大家解释一下其中的工作原理,详细到每个元器件

电阻R1的作用:

RXD连接电阻R1到485芯片的RO,这里R1的作用是限流,保护引脚。R1的大小,可以选择330欧、470欧、560欧、1K。

电阻R2、R3和三极管Q1:

电阻R2、电阻R3和NPN三极管Q1组成一个典型的三极管开关电路。R3是限流电阻,最好选择4.7K,也可以选择10K。R2是上拉电阻,可以选择4.7K,也可以选择10K。

R3为什么最好选择4.7K,我之前写过一篇文章,详细的提到过,主要是你需要了解三极管工作在放大区、截至区和饱和区的特点。上瑞生网,搜索“三极管”,有一篇文章的题目叫做《把三极管当开关用 基极限流电阻怎么选》。

NPN三极管,高电平导通,这个大家都知道。当TXD高电平,三极管导通,RE DE引脚接地,进入接收模式。当TXD低电平,三极管截止,RE DE引脚接高电平,进入发送模式。

电容C1:

C1是电源旁路电容,作用是给485芯片提供一个干净的电源,使它稳定的工作。

你在设计电路板的时候,如果芯片没有特殊要求,需要把每个芯片旁边放上一个0.1微法电容。在PCB布线的时候,电容到电源引脚的距离最好在2mm以内。

电阻R4和R5:

R4是下拉电阻,接到B上。R5是上拉电阻,接到A上。为什么要这样做,下面会讲,现在还不是时候,请继续往下看。

双向稳压二极管D1、D2、D3:

这里使用的双向稳压二极管型号是SMAJ6.5CA。他们的作用是把A、B引脚对地的电压以及A和B引脚之间的电压,牵制到6.5V以内,保护485芯片。

从SP3485芯片手册得到,AB的耐压值是正负15V以内。

有人很好奇,为什么会看这两个参数?因为AB这两个引脚就是Drivers output和Receivers input。请看下图:

接线端子P1:

是用来连接外面需要通信的A和B电线的。(这个好像不用说啊!)


现在,每个元器件就介绍完了,接下来说说为什么可以实现自动收发功能

你们最大的疑问就是:DI引脚本来是接TXD的,但是电路中直接接地了,那岂不是发送的数据会一直都是0?

答案就在下方。

发送数据过程:

发送数据,用的是单片机的TXD引脚,也就是说,在TXD引脚上表现数据。

例如要发送数据0x55,写成二进制就是0x01010101,TXD引脚上就会依次的用高低电平体现1和0。

当TXD发送0时,三极管不导通,DE接高电平,进入发送模式,485芯片会把DI上的电平反应到AB引脚上输出,因为DI已经接地,所以AB引脚会传输0。你看看,当TXD发送0时,AB引脚发送0。

当TXD发送1时,三极管导通,RE接低电平,进入接收模式,485芯片的AB引脚进入高阻状态,因为R5把A拉高,R4把B拉低,所以,AB传输的是1。你看看,当TXD发送1时,AB引脚发送1。

总结,TXD发1,AB就发1;TXD发0,AB就发0。

接收数据过程:

接收数据,用的是单片机引脚RXD,也就是说,在RXD引脚上表现数据。

在接收数据的过程中,TXD引脚是一直保持高电平的,当TXD是高电平时,RE是低电平,正好调理成了接收状态,然后485芯片的RO引脚(也就是接RXD的引脚)就会反应AB传输过来的数据。


知道了这个电路的接收和发送数据的过程,那就已经完全了解了。你现在如果感觉到还是迷迷糊糊,自己做一个电路,实践一下,思路立马会变得清晰。

今天的分享,是否对你有帮助呢?关于电路的学习,希望大家enjoy!喜欢请 点赞并转发 支持我们,您的转发就是我们继续创作的 最佳动力,谢谢大家!

-END-

点击关注下方公众号,一起学习嵌入式。

转载地址:http://bgkhf.baihongyu.com/

你可能感兴趣的文章
数据重生:让神经机器翻译中的不活跃样本“复活”
查看>>
【Java】【28】提高List的removeAll方法的效率
查看>>
【JS】【31】读取json文件
查看>>
OpenSSL源代码学习[转]
查看>>
google app api相关(商用)
查看>>
linux放音乐cd
查看>>
GridView+存储过程实现'真分页'
查看>>
flask_migrate
查看>>
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>