摘要:關於485通訊大家肯定不陌生,那麼你會設計一個485電路而且能自帶收發功能的嗎?或者還是直接隨便找一個電路甚至不管其中的原理就用上了。485通訊一般離不了微控制器控制,所以一般微控制器尤其是STM32微控制器之類的開發板上面都有RS485通訊模組,因為485通訊只需要你的MCU有串列埠就可以了。
下面再某寶上找了幾款STM32開發板上面關於485通訊模組的電路圖,發現有幾家竟然電路圖一模一樣,而且畫法也一模一樣。
可以發現,485通訊模組大家普遍用的只有兩種晶片,SP3485和MAX485,而且原理圖畫的都差不多。
不管是SP3485還是MAX485它們電路都是一樣的。
先說一下原理:因為微控制器通訊一般是TTL電平,而我們的外接裝置如果是485裝置,通訊的電平就是485電平,這兩者的電平是不一樣的,所以兩者不能直接相接一起。中間需要一個電平轉換的晶片來協商一下,所以就有了我們的485晶片。因為485通訊是半雙工的,就是傳送資料的時候不能同時接收資料,所以我們又把485晶片叫做半雙工收發器。而SP3485晶片就是一款非常經典的低功耗半雙工收發器,滿足RS-485序列協定要求。
然後這款晶片的引腳定義如下:
現在你可能有疑問?這個引腳怎麼叫做接收器也叫輸出器啊?還真人這麼問。一般在485裝置的資料向MCU傳送時我們把晶片叫做接收器,因為它接收了外界的資料。在MCU向485裝置傳送資料時我們把晶片叫做驅動器,因為這時候像是我們驅動了晶片讓它向外傳送資料。
SP3485的驅動器輸出是差分輸出,空載時輸出電壓的大小為0V~+3.3V。SP3485有一根使能控制線(高電平有效)。DE上的邏輯高電平(1)將使能驅動器的差分輸出。
SP3485接收器的輸入是差分輸入,接收器的輸入電阻通常為15K。如果RE為低,接收器使能,反之接收器禁止。
這樣就得到了一個結論
因此,我們一般將ED和RE接在一起,微控制器MCU向外傳送資料時,將USART_EN置位1,微控制器MCU接收外界送資料時,將USART_EN置位0,即可。
當然我們在寫程式時候,就相對會比較麻煩,因為我們要在接收和傳送時將USART_EN引腳置位不同的電平。
那麼有沒有一種可以自動收發功能的電路呢?
答案是有的,只要我們在這個電路的基礎上加一個三極體就可以解決了。
大家看我們在前面電路的基礎上加了一個經典的三極體開關電路。電阻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傳輸過來的資料。
怎麼樣神奇吧!
那麼有沒有一款晶片可以自帶自動切換收發功能的呢?答案是有的。
為了克服軟體參與的方向控制不確定性,美信公司釋出了宣稱首款支援晶片自動換向的RS485晶片—MAX13487。
對比其他的RS485晶片,MAX16487的RE引腳有兩個用處
我們將RE連線高電平,即自動換向模式。
對應的原理圖就是下面這樣:
直接將PIN2和PIN3接到VCC即可實現自動收發功能。而且MAX13487E
還要便宜一些。
那麼如果現在然你設計一個485電路,你會採取那種方案呢?