*【编者按】*随着信息技术的飞速发展,芯片作为现代电子设备的核心组成部分,其应用领域的拓展与性能的提升都成为了业界关注的焦点。在芯片应用过程中,各位小伙伴可能会遇到各种各样的问题。“RS485自动收发电路”作为芯片应用中的一项关键技术,其在数据传输和通信方面发挥着不可或缺的作用。启明智显在多个尺寸的中控屏和串口屏上基于ESP32-S3方案和Model系列产品实现了对RS485通信的支持。RS485通信的引入不仅增强了产品的通信能力,也扩大了其应用范围,使其能够适应更多复杂和多样化的应用场景。今天小编给大家整理了关于RS485自动收发电路的问题整理。
问:RS485_COMACT_IO这种方式是这个芯片独有的吗?
一般单片机的开发板上面都有RS485通信模块,尤其是STM单片机之类的开发板,因为485通讯只需要MCU上面具备串口就可以使用。
485通讯模块大家普遍用的只有两种芯片,SP3485和MAX485。但不管是SP3485还是MAX485,他们的电路都是一样的。因为单片机通信一般是TTL电平,而我们的外接设备如果是485设备,通信的电平就是485电平,这两者的电平是不一样的,所以两者不能直接相接一起。中间需要一个电平转换的芯片来协商一下,所以就有了我们的485芯片。因为485通信是半双工的,就是发送数据的时候不能同时接收数据,所以我们又把485芯片叫做半双工收发器。
以SP485芯片为例,它的电路图如下:
• 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引脚置位不同的电平。
问:那有没有一种可以自动收发功能的电路呢?
答:有的!只要我们在这个电路的基础上加一个三极管就可以解决了。
大家看:我们在前面电路的基础上加了一个经典的三极管开关电路。电阻R6、电阻R7和NPN三极管Q1组成一个典型的三极管开关电路。R7是限流电阻,最好选择4.7K,也可以选择10K。R6是上拉电阻,可以选择4.7K或者10K。当TX高电平,三极管导通,RE和DE引脚接地,进入接收模式。当TX低电平,三极管截止,RE和DE引脚接高电平,进入发送模式。
问:DI引脚本来是接TX的,现在直接接地了,那岂不是发送的数据都是0?可以正常工作吗?
答:可以的。
在发送数据时,用的是单片机的TX引脚,也就是说,在TX引脚上表现数据。要发送数据0x32,写成二进制就是0x00110010,TXD引脚上就会依次的用高低电平体现1和0。当TX发送0时,三极管不导通,DE接高电平,进入发送模式,485芯片会把DI上的电平反应到AB引脚上输出,因为DI已经接地,所以AB引脚会传输0。所以,当TXD发送0时,AB引脚发送0。当TX发送1时,三极管导通,RE接低电平,进入接收模式,485芯片的AB引脚进入高阻状态,因为R3把A拉高,R2把B拉低,所以,AB传输的是1。所以,当TXD发送1时,AB引脚发送1。
而在接受数据过程中,用的是单片机引脚RX,在RXD引脚上表现数据。在接收数据的过程中,TX引脚是一直保持高电平的,当TXD是高电平时,RE是低电平,正好变成了接收状态,然后485芯片的RO引脚(也就是接RX的引脚)就会接收AB传输过来的数据。
总结
- RS485_COMACT_IO这种方式并非某个芯片独有,485通讯只需要MCU上面具备串口就可以使用。
- SP3485接收器的输入是差分输入,接收器的输入电阻通常为15K。如果RE为低,接收器使能,反之接收器禁止。因此,我们一般将ED和RE接在一起,单片机MCU向外发送数据时,将USART_EN置位1,单片机MCU接收外界送数据时,将USART_EN置位0,即可。
- 只要我们在这个电路的基础上加一个三极管就可以实现电路自动收发功能。
- DI引脚本来是接TX的,现在直接接地了,仍然可以正常工作。