:你一定很熟悉485通信,那么你会设计一个485电路并带来自己的收发功能吗?或者直接找到一个电路,甚至使用原理。485通信通常与单片机控制是不可分割的,所以一般的单片机,特别是STM32单片机等开发板上有RS485通信模块,因为485通信只需要你MCU有串口就可以了。
下面在某宝上找几个STM32开发板上关于485通信模块的电路图,发现有几个电路图完全一样,画法也完全一样。
- 原子哥
- 硬石
- 普中
- 洋桃
- 安富莱
- 野火
可以发现,485通信模块中常用的芯片只有两种,SP3485和MAX485,原理和图片都差不多。
1、传统RS485电路
不管是SP3485还是MAX他们的电路都一样。
先说原理:因为单片机通信一般都是TTL电平,如果我们的外部设备是485设备,通信电平是485电平,两者是不同的,所以两者不能直接连接在一起。中间需要一个电平转换芯片来协商,所以我们有一个485芯片。因为485通信是半双工的,所以我们在发送数据时不能同时接收数据,所以我们称485芯片为半双工收发器。SP3485芯片是一款非常经典的低功耗半双工收发器RS-485串行协议要求。
然后片的引脚定义如下:
- RO 接收器输出
- RE 接收器输出使能(低电平有效)
- DE - 驱动器输出使能(高电平有效)
- DI 一 驱动器输入
- GND 一 连接地
- A - 驱动器输出/接收器输入(同相)
- B - 驱动器输出/接收器输入(反相)
- VCC -芯片供电
?这个引脚怎么叫接收器,也叫输出器?真人问这个问题。485设备的数据一般向MCU发送时,我们称芯片为芯片,因为它收到了外部数据。MCU当我们向485设备发送数据时,我们称芯片为芯片,就像我们驱动芯片向外发送数据一样。
SP3485驱动器输出为差分输出,空载时输出电压为0V~ 3.3V。SP3485有一条使能控制线(高电平有效)。DE上逻辑高电平(1)将输出能量驱动器的差异。
SP3485接收器的输入是差分输入,接收器的输入电阻通常是15K。如果RE为低,接收器使能,否则禁止接收器。
这样,我得出了结论
- ED: 1 发送使能;禁止0发送
- RE: 0 接收使能;1禁止接收
所以,我们一般都会ED和RE单片机连接在一起MCU向外发送数据时,将USART_EN位置1,单片机MCU接收外部发送数据时,将USART_EN位置0,就可以了。
当然,我们在写程序的时候会比较麻烦,因为我们在接收和发送的时候会比较麻烦USART_EN引脚置位不同的电平。
有没有一种电路可以自动收发功能?
答案是肯定的,只要我们在这个电路的基础上加一个三极管就可以解决。
2动切换收发RS485电路
看,我们在前电路的基础上增加了一个经典的三极管开关电路。R6、电阻R7和NPN三极管Q1形成典型的三极管开关电路。R7是限流电阻,最好选择4.7K,也可以选择10K。R6是上拉电阻,可选择4.7K或者10K。
大家都知道,学过模电,NPN三极管,高电平导通。当TX高电平,三极管导通,RE和DE引脚接地,进入接收模式。TX低电平,三极管截止,RE和DE高电平引脚,进入发送模式。
疑问?
DI引脚本来是接TX是的,现在直接了,不是所有发送的数据都是0吗?能正常工作吗?
发送数据过程
用单片机发送数据TX引脚,也就是说,在TX在引脚上显示数据。发送数据0x三二进制是0x00110010,TXD引脚将依次用高低电平反映1和0。
当TX三极管发送0时不导通,DE485芯片将连接高电平并进入发送模式DI上电平反应AB因为DI已经接地了,所以AB引脚会传输0。因此,当TXD发送0时,AB引脚发送0。
当TX三极管导通发送1时,RE485芯片连接低电平,进入接收模式AB由于引脚进入高阻状态,导脚进入高阻状态R3把A拉高,R2把B所以,AB传输是1。所以,当TXD发送1时,AB引脚发送1。
。
接收数据过程
用单片机引脚接收数据RX,在RXD在引脚上显示数据。在接收数据的过程中,TX当引脚保持高电平时,TXD是高电平时,RE是低电平,正好变成接收状态,然后485芯片RO引脚(即接RX接收引脚)AB传输的数据。
!
那么有没有芯片可以自动切换收发功能呢?答案是肯定的。
3.芯片自动切换方向-MAX13487
为了克服软件参与方向控制的不确定性,美信公司宣布—MAX13487。
对比其他的RS485芯片,MAX16487的RE引脚有两种用途
- RE打开低电平时RO方向接收数据。
- RE芯片在高电平时进入自动方向切换模式。
我们将RE连接高电平,即自动换向模式。
对应的原理图如下:
直接将PIN2和PIN3接到VCC可实现自动收发功能。MAX13487E
更便宜。
那么如果现在然你设计一个485电路,你会采取那种方案呢?