|
我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師% ~/ c4 n" J- H- K
關(guān)注我,一起變得更加優(yōu)秀!RS485是工業(yè)控制場景下,應(yīng)用得非常廣泛的通信協(xié)議,RS485的差分物理信號(hào)在電磁環(huán)境復(fù)雜的工業(yè)現(xiàn)場,有強(qiáng)大的抗干擾能力。3 U, T) r4 t0 } K
0 y0 b) e, M8 o對于平時(shí)專注于應(yīng)用軟件開發(fā)的工程師,使用RS485進(jìn)行數(shù)據(jù)傳輸,只要關(guān)注串口的數(shù)據(jù)收發(fā)器即可,但其實(shí)在硬件層面,RS485通信的數(shù)據(jù)收發(fā),也需要遵循一定的機(jī)制。
3 S- Q" E6 w; i+ f f" a
/ z% N7 j' n# x" P" K/ PRS485通信接口特點(diǎn)4 E- ^5 |2 n8 G1 f
5 M4 ` k- e& A) K, f: [9 I* m' G
作為工業(yè)領(lǐng)域上較常用的通信方式,RS485總線具有以下諸多特點(diǎn):
% S! l$ a$ G4 I! |$ l/ I
* H* X3 H7 A* a3 n1 z x: [: C1、收發(fā)器輸出A、B之間的電平為+2V~+6V,是邏輯“1”;為-6V~-2V,是邏輯“0”。信號(hào)電平比RS232降低了,不易損壞接口芯片。另有“使能”控制信號(hào),可使收發(fā)器處于高阻狀態(tài),切斷與傳輸線的連接。3 P/ Y( `" w! z$ ]5 B- i
: `' q) S" F4 r: \+ q( S
2、接收器的輸入靈敏度為200mV。即在當(dāng)接收端A、B之間的電平相差200mV時(shí)即可輸出邏輯。
" d/ P/ w4 u, c2 n2 ?# u
5 J- I! o3 ]0 F: T! }/ x3、傳輸速率高(10Mbps),傳輸距離達(dá)到1200m)。
' W1 P0 g V. y$ l
. p3 b# l7 ], ], k! J4 @; }4、具有多站點(diǎn)傳輸能力,即總線上允許掛接多達(dá)128個(gè)收發(fā)器,可建立設(shè)備網(wǎng)絡(luò)。# Z9 H8 W1 T/ t( `$ j
4 F7 o1 I) }$ h/ |4 @* J
5、RS485收發(fā)器共模電壓范圍為-7V~+12V,只有滿足該條件,整個(gè)網(wǎng)絡(luò)才能正常工作。當(dāng)網(wǎng)絡(luò)線路中共模電壓超出此范圍時(shí)就會(huì)影響通信的穩(wěn)定,甚至損壞接口。
# _+ K8 _. d9 x5 K
$ T, f) m9 `# K3 Q6 m# U% U5 ARS485收發(fā)控制方法
4 U4 N6 c R7 E' {1 D
& k- L1 J$ e bRS485屬于半雙工總線,在實(shí)際使用時(shí)一般采用主機(jī)輪詢或令牌傳遞的方法來分配總線控制權(quán),RS485設(shè)備需要進(jìn)行發(fā)送和接收的方向轉(zhuǎn)換。! m2 h0 Y! d! x! y- T5 d/ Q, R$ s
% e0 X7 q9 D# W5 u9 c比較通用的做法是,每個(gè)RS485設(shè)備在平時(shí)均處于接收狀態(tài),只有在自己有數(shù)據(jù)要發(fā)送時(shí)才轉(zhuǎn)換到發(fā)送狀態(tài),數(shù)據(jù)發(fā)送完畢后再次切換回接收狀態(tài)。
# i5 h) {" E( U5 {9 Z: }
" u- f! I! U8 A2 I9 V7 X第一種:程序換向控制8 ~$ R! S( @4 E2 t+ b, y2 {6 k( Q
$ j# E' _9 d4 `* g" R# E
最常用的RS485收發(fā)換向方法是程序換向,即由MCU的一個(gè)I/O端口控制RS485收發(fā)器件的收發(fā)使能引腳,在平時(shí)使RS485收發(fā)器件處于接收狀態(tài)。- f, g3 N+ f3 T0 @5 a& |+ P
! ]) Z! X3 A; M
如下圖,這里485芯片用TI的SN65LBC184,最大速率達(dá)到250Kbps,當(dāng)有數(shù)據(jù)需要發(fā)送時(shí),MCU將RS485收發(fā)器件引腳(網(wǎng)絡(luò)RS485_EN2)置于發(fā)送狀態(tài),完成數(shù)據(jù)發(fā)送后,再把RS485收發(fā)器件切回接收狀態(tài)。
3 C/ j& e) f% C7 F$ O/ l2 @2 {6 _, m$ O
3b5wtklvlk164026769621.png (103.64 KB, 下載次數(shù): 0)
下載附件
保存到相冊
3b5wtklvlk164026769621.png
2024-11-26 23:40 上傳
1 E( v; ^5 G( S+ F4 N這種方式簡單易行,不需增加額外成本,這種方法很多人都會(huì)知道并且基本上都用的方法。, J, B5 w1 L, e; `
第二種:自動(dòng)換向/ T+ W0 d- H2 u% s
但是,當(dāng)我們采用某種硬件平臺(tái)的工控主板或核心板進(jìn)行二次開發(fā)時(shí),由于工控主板或核心板上沒有預(yù)留出足夠的I/O端口,使得RS485收發(fā)的程序換向方法無法實(shí)現(xiàn)。/ p& d4 x6 B2 q9 Y
在某些特定的情況下,開發(fā)平臺(tái)的底層驅(qū)動(dòng)未對外開放,難以對底層進(jìn)行二次開發(fā),這種情況下即便有足夠的I/O端口也無法實(shí)現(xiàn)程序換向。 K2 S( P0 L+ W' |6 R+ \
為此,我們需要采用另外一種換向技術(shù),即自動(dòng)換向技術(shù)。8 Q0 W$ v' S( m+ J
自動(dòng)換向其實(shí)就是對使能引腳不需要單獨(dú)的I/O口來控制,而是由發(fā)送引腳發(fā)送數(shù)據(jù)時(shí)候順便控制了。- R' f; b o& w) K: f
要實(shí)現(xiàn)這種方法可以使能那里加一個(gè)反相器,如下圖,在空閑狀態(tài)下,串口的發(fā)送信號(hào)TXD2為高電平,經(jīng)過反相器后輸出低電平,使SN65LBC184處于接收狀態(tài),而RS485總線由于上下拉電阻的作用處于A高B低的狀態(tài)。
- J3 y4 T2 S @% J, ^0 ~# k: @當(dāng)發(fā)送數(shù)據(jù)時(shí),TXD2信號(hào)線上的低電平比特位控制SN65LBC184進(jìn)入發(fā)送狀態(tài),將該比特發(fā)送出去。而高電平比特位則使SN65LBC184處于接收狀態(tài),由RS485總線上下拉電阻把總線置于A高B低的狀態(tài),即表示發(fā)送了高電平。# O; J ?/ E, {0 [6 O& U
ejq2ugp4uox64026769721.png (103.02 KB, 下載次數(shù): 0)
下載附件
保存到相冊
ejq2ugp4uox64026769721.png
2024-11-26 23:40 上傳
# U0 `8 |4 Y. O- E4 J1 S, q反相器也可以用三極管代替,如下圖所示,工作原理和加反相器一樣。
! V7 f! f) j8 B3 A2 Q但是這種方法在發(fā)送高電平時(shí)的驅(qū)動(dòng)能力有限,因此會(huì)限制通訊距離,一般適用于距離不遠(yuǎn)場合。; S% C9 k2 K' e5 V# F$ i9 L: h5 Y
t3e34oi54b064026769821.png (69.72 KB, 下載次數(shù): 0)
下載附件
保存到相冊
t3e34oi54b064026769821.png
2024-11-26 23:40 上傳
9 D. w$ ]6 S1 T8 m! _# z7 D
其實(shí),為了省去控制的麻煩,也可以采用專門的、帶有AutoDirection功能的485芯片,比如MAX13487E,它省去了常用的485使能信號(hào),從而簡化了設(shè)計(jì)電路。
4 q/ h2 y4 L. p; }4 U6 g1 ?
1taj0wvturs64026769921.png (130.64 KB, 下載次數(shù): 0)
下載附件
保存到相冊
1taj0wvturs64026769921.png
2024-11-26 23:40 上傳
: B1 u) c; e0 F來源:牛x的工程師網(wǎng)友。1 z, d: ]! k: j0 j4 g/ ^
j1n4ifocilx64026770022.png (769.97 KB, 下載次數(shù): 0)
下載附件
保存到相冊
j1n4ifocilx64026770022.png
2024-11-26 23:40 上傳
- @4 V9 O; |6 h# B! p
; Y) h( I# P- g( [
* o% b3 j7 ? R6 ^: n3 j-END-- y: D. f ^) D/ `
往期推薦:點(diǎn)擊圖片即可跳轉(zhuǎn)閱讀
6 b; E: N0 v1 x" F$ s; l
/ B9 W: K# {+ J& \1 Q- \
# _ b1 r% c( L! Y! {4 v
! A, c0 M, M) P, Z* Q
; f) P$ f& D/ ^ C0 E
jpqh0b3lxwl64026770122.jpg (90.88 KB, 下載次數(shù): 1)
下載附件
保存到相冊
jpqh0b3lxwl64026770122.jpg
2024-11-26 23:40 上傳
# d) J% d/ }1 l/ d0 m0 P . |& c# l' r/ G7 x, W1 v
嵌入式應(yīng)用程序開發(fā),經(jīng)常使用哪些數(shù)據(jù)結(jié)構(gòu)?; s) d. T* E8 V+ b# w
0 ?9 e |( [0 D3 Z2 H6 B. O
: b0 N. V9 b" ~3 c& W + |" p# r9 E" d7 ?
$ ?3 T6 k4 p" B( O" b; n
e4liopiuqhq64026770222.jpg (100.64 KB, 下載次數(shù): 0)
下載附件
保存到相冊
e4liopiuqhq64026770222.jpg
2024-11-26 23:40 上傳
5 I p) K! t/ i% i
& J/ w1 k* F' q8 O8 a 嵌入式 C 語言運(yùn)行時(shí)的錯(cuò)誤處理機(jī)制
# U5 J) {; I& Q' \1 ]' t" M" C
2 X) j* Q, R5 [4 I 7 I; ~, h6 s3 q, O% E
- w" [3 G; w9 a. ]5 P w) ^/ @/ Z
rrbuwireyqh64026770322.jpg (219.91 KB, 下載次數(shù): 1)
下載附件
保存到相冊
rrbuwireyqh64026770322.jpg
2024-11-26 23:40 上傳
. s' d9 p# \3 F % }+ R- w+ ?" ^; T) @
今年快過完了,明年準(zhǔn)備進(jìn)廠搞嵌入式工控,提前了解各方行業(yè)信息!+ X) D0 ~+ m3 U" @/ y
2 s' M* ~' l9 c& ?' O$ b" O0 j
- Y) Y7 I" F( e+ W( p4 I2 Q6 r/ C. \; z
% y k: @. x) ^7 \7 s( f 我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師, e! c& i, B" g( K$ H1 Z
關(guān)注我,一起變得更加優(yōu)秀! |
|