終於講透了,史上最詳細的RS485自動收發電路你一定要掌握

2022-01-09 12:00:02

摘要:關於485通訊大家肯定不陌生,那麼你會設計一個485電路而且能自帶收發功能的嗎?或者還是直接隨便找一個電路甚至不管其中的原理就用上了。485通訊一般離不了微控制器控制,所以一般微控制器尤其是STM32微控制器之類的開發板上面都有RS485通訊模組,因為485通訊只需要你的MCU有串列埠就可以了。

下面再某寶上找了幾款STM32開發板上面關於485通訊模組的電路圖,發現有幾家竟然電路圖一模一樣,而且畫法也一模一樣。

  • 原子哥
  • 硬石
  • 普中
  • 洋桃
  • 安富萊
  • 野火

正點原子

普中科技

硬石電子

洋桃電子

安富萊電子

野火電子

可以發現,485通訊模組大家普遍用的只有兩種晶片,SP3485和MAX485,而且原理圖畫的都差不多。

1、傳統RS485電路

不管是SP3485還是MAX485它們電路都是一樣的。

先說一下原理:因為微控制器通訊一般是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為低,接收器使能,反之接收器禁止。

這樣就得到了一個結論

  1. ED: 1 傳送使能;0傳送禁止
  2. 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引腳上表現資料。要傳送資料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。

一句話:TXD發1,AB就發1;TXD發0,AB就發0

接收資料過程

接收資料,用的是微控制器引腳RX,在RXD引腳上表現資料。在接收資料的過程中,TX引腳是一直保持高電平的,當TXD是高電平時,RE是低電平,正好變成了接收狀態,然後485晶片的RO引腳(也就是接RX的引腳)就會接收AB傳輸過來的資料。

怎麼樣神奇吧

那麼有沒有一款晶片可以自帶自動切換收發功能的呢?答案是有的。

3、自動切換方向晶片-MAX13487

為了克服軟體參與的方向控制不確定性,美信公司釋出了宣稱首款支援晶片自動換向的RS485晶片—MAX13487。

對比其他的RS485晶片,MAX16487的RE引腳有兩個用處

  1. RE為低電平時,開啟RO方向的接收資料。
  2. RE為高電平時,晶片進入自動方向切換模式。

我們將RE連線高電平,即自動換向模式。

對應的原理圖就是下面這樣:

直接將PIN2和PIN3接到VCC即可實現自動收發功能。而且MAX13487E還要便宜一些。

那麼如果現在然你設計一個485電路,你會採取那種方案呢?