电子产业一站式赋能平台

PCB联盟网

搜索
查看: 2284|回复: 2
收起左侧

01----RS485与RS232通讯协议

[复制链接]

568

主题

922

帖子

4783

积分

四级会员

Rank: 4

积分
4783
发表于 2022-6-16 09:31:18 | 显示全部楼层 |阅读模式
第一:硬件层协议
1 @, ^- i8 t; R6 T4 _$ p$ w* d+ v! \  \& s7 H$ I/ z/ Y$ }& f
4 P& w9 Z8 f7 x8 N

& m) Y" g# Z( X& q8 F1 \通讯协议主要是实现两个设备之间的数据交换功能,通讯协议分硬件层协议和软件层协议。硬件层协议决定数据如何传输问题,比如要在设备1向设备2发送0x63,0x63的二进制数为0110 0011,这8个二进制数从设备1传输到设备2,涉及到1怎么传,0怎么传的问题,这就是硬件层要解决的问题。8 L) m' K( j! F. ^
硬件层协议目前比较多见的有RS-232、RS-485、SPI、IIC等。RS-232规定,线上的电压为x伏都表示传输的是0,y伏传输的则是1。再者,比如要选择多少条线传输数据,选择什么材质的线传输输入,这些也属于硬件层协议约束的。
1 {8 x- ~5 I/ m! j6 e" {! _
+ v) [& c% L) h5 J) Y% [ 01----RS485与RS232通讯协议-1.jpg ) o; R! d* q* o0 d& Y
( B1 J1 g( A" _/ r* W. @2 L$ b
9 K: x1 c7 G! Y/ I0 i/ |' v( a

, m/ a, V4 ^# O9 m第二:RS-485通讯协议
8 D0 V+ a) o) p  s( x. V) P5 O
1 @8 A- o$ f5 f* ^7 R7 ]) p. I/ H" ]' ]! G, n# c. t: D

" a  N0 u& }* G8 S; QMCU管脚输出TTL电平,TTL电平的意思是,当MCU管脚输出0电平时,一般情况下电压是0V,当MCU管脚输出1电平时,电压是5V。因TTL电平的是由一条信号线,一条地线产生,信号线上的干扰信号会跟随有效信号传送到接收端,使得有效信号受到干扰,485通讯实际上是把MCU出来的TTL电平通过硬件层的一个转换器芯片进行转换:
: _7 b) m) K2 P! X5 k3 r
8 l! A1 O% E4 B6 g, x# S 01----RS485与RS232通讯协议-2.jpg
& Z4 k, e9 G) K8 Q) v/ R# {5 @
- m- e, _3 k. _4 G+ a' o; e9 f
" I4 A' J) H% w 01----RS485与RS232通讯协议-3.jpg
& H) W$ T1 `( M( }, ?2 \+ U" y  }- i9 I  K% r, K$ @; S+ C
$ c& C  M6 ~4 @- s
1 [# O2 B' X" x
把MCU出来的一条的TTL信号经过芯片转换为两根线(线A、线B)上的信号。当MCU给转换器输入低TTL电平时,转换器会使得B的电压比A的电压高,反之,A的电压比B的电压高。
: ]) Z! p  `, v, l1 d4 W! J485协议规约两条电平线上差值为多少表示0或者1,电压是通过仪表可以测量得到的,所以说RS-485是硬件层协议。 5 W" j3 X* Y6 |8 U# q7 \8 K
485协议的接收端可能是另一个MCU,MCU管脚也只接受TTL电平,转换芯片过来的是两条线的电压,所以需要对此两条线差分电压转换为TTL电平。
$ k5 U) r: T  Z9 I
9 L  _, c! ~4 t5 d: g* w( q- G 01----RS485与RS232通讯协议-4.jpg , u& \6 S5 U0 @/ u  \/ |

7 C* W- ?7 u/ k$ w. O把TTL转为485,实质是一个集成芯片,其间无任何程序代码,纯粹硬件逻辑。同理,将485电平转为TTL也是如此。现在很多芯片把接收和转换都集成到一块IC,注意,转换器和接收器依旧是没有同时工作的,常见的转换芯片是MAX485。 * h7 m+ s( c+ y: o; X/ h
可以这样理解,硬件层协议是公路,路的目的是为了让车辆能够过去。
# M4 _, w& b) n* j9 `2 m; G  z  V8 l7 w. P

+ Z. t1 F5 v5 h- e- j/ t第三:RS485半双工通讯: ]! g4 A. g& |/ N- v! n9 }

8 D# x* z0 R: ?
- p/ e# }: t) ^2 d/ Y1 K, p
3 z  f* Y4 L% d7 C8 M) \- v# z' a9 t! i
01----RS485与RS232通讯协议-5.jpg 2 n  b2 d* x! V8 b
4 M/ R# f" i8 u& h
首先了解什么是单工通讯,单工通讯是指数据只能朝着一个方向传输的通讯方式。而半双工通讯则是指对于通讯两端,不能同时相对方法发送数据,必须错开时间段发送。 + p) q8 v" d- G8 y# y  F7 H7 j
RS-485的通讯线只有2条,且这两条通讯线在一次传输中都需要用到,因此485只可实现半双工通讯。485实现半双工通讯,会遇到一个问题,MCU1向MCU2发数据时,并不知道线上是否正传来MCU2数据,因为没有其他线可用来判断对方的收发状态,那么可能也会导致数据冲突。因此,RS-485要实现半双工通讯,就需要上层的软件协议加以规约,也就是做到”不能你想发数据就发数据”。可以理解,软件层协议就好像交通规则,它能让数据有序传输。$ |" i  b- _' m0 T

5 j- g0 o8 U! m6 O" Z5 u0 Z' l* }9 f0 z/ c% E1 u0 b8 b
" T, I$ \+ ^! x/ ^& q
第四:RS232通讯
: i) X! B& G/ l# X8 X* P: v0 y# W! Z; r2 n- F% U" o
1 x7 g' u8 `2 O: l9 f
       RS-232是美国电子工业联盟制定的串行数据通信接口。现在RS232接口常用于仪器仪表设备,PLC以及嵌入式领域当作调试口来使用。
' B, c# t6 Q- D* O2 j
/ c) n7 ~9 e6 ^+ V* E
- g/ `, C6 v7 l* ?5 _( f( y1 t第五:RS232接口形态   ! r: U# x  H# L4 L( f4 c1 D7 E
5 y2 V* Y# m/ m
4 ?# W. k! {$ f8 K% a! ?8 p, u
按照引脚数量分类有两种:: Y+ N4 [2 Z; w2 X% W: @9 D
25pin–DB25 协议标准推荐的接口类型
9 {% j% ?' r6 f, H9 v3 A& M5 ~2 Z由于接口物理尺寸较大,很少使用,此处不做具体介绍。
, t' ^+ N5 q6 \' @& g5 n) r9pin—DE9(通常误叫做DB9) 自IBM PC/AT开始改用9针连接器起,目前是主流接口形态。9针RS232接口按照接口类型,又可以分为:
+ H) Q1 Q" ^0 C- P  t公头(Male):带针脚1 K4 N4 ^8 f9 \9 X. d: T2 u
2 |$ C" L% B& z0 Z4 h( {6 ?4 ]
01----RS485与RS232通讯协议-6.jpg
8 V7 }" `7 j7 P( G# T7 r
% m4 ~; q+ a  T8 }母座(Female):带孔座) L* b! p+ ]  q6 W& A( d

% k0 J& U1 |2 }- _' z 01----RS485与RS232通讯协议-7.jpg $ C* F3 c2 D; Y' r5 G9 j; v

5 W1 M: M! k0 ]+ e) n
0 f+ Y" n- ?0 B- ?3 g& e. Z1 i2 M1 q) L& E2 n3 K8 N3 [+ i# P+ |4 P  Z

7 f( N  Y! _$ ^ 01----RS485与RS232通讯协议-8.jpg
' E. g% x% m' C2 n( r6 ]+ @: a4 O' K5 l
( A7 w8 `7 ^+ @) J3 `2 G2 S0 K

; w: w4 b, T/ k5 c其中DTR/DSR和RTS/CTS用于硬件流控。; ?; z1 _2 U) X1 h
      DTR/DSR状态表明DTE和DCE处于可用状态,有时候设备上电这两个信号即有效,表示设备本身可用使用,但要开始进行数据传输通讯,则需要RTS/CTS流控信号。# ]' D# f+ j5 {" Q1 D; P5 D
      RTS即DTE发送数据时,该信号有效(ON),向DCE请求发送数据;CTS是对请求发送RTS信号的响应,当DCE已经准备好接收数据时,该信号有效(ON),通知DTE可用使用TXD发送数据了。
0 B4 R: K! A& D! h) T, h, f$ c比如A向B发送数据简单如下逻辑:- J" w+ V6 T% F; j+ A( I( V3 n
A先设置RTS为1,表示要发数据给B; I% ?7 `& }) ?3 w* N4 U
B检测到RTS为1,先看看自己是否准备好:' ~; x, Z8 Z+ G0 P
如果准备好,就设置CTS为1表示A可用发数据给B了& h7 K( Q2 v" L! n5 Q$ b0 w1 r
如果没有准备好,继续处理自己的数据。弄完了,再将CTS设置为1,让A发数据' w4 E5 n( c0 v. @/ P. k( l' M$ b! u
A发现CTS置1了,将数据通过TXD信号线发送出去9 A+ G9 K7 N9 C& D
A每发送一次数据给B之前,都会继续上面的逻辑
* q; G! |6 R' W$ N, D7 f! r; Z/ lA发送完数据后,就将RTS置0,表示数据发送完毕
* i" c* O0 b5 y/ G4 u6 ^- M% R
$ ]$ `6 X. b" k( j! e; A
" }5 P5 G/ Y9 C  S* q第六:RS232硬件连接方式7 c0 w: o* V8 ?, D

' Q2 d0 g9 q, t7 `6 V. ~  Y- \0 d6 c5 O& q% y+ `2 z, U! z
. w3 j& k& n# b, Z; f. G: R$ I0 X# C
连接分为3种
  k& A. Z$ _  u( R, d. b2 ^$ l) p5 p; R- P9 {8 q* q
& k7 d; L' y- I: x
第一种:9线方式连接示意图, Q6 K8 v* M0 ~' I1 n) y/ D9 @

2 W. P& X" f1 `) ?" k 01----RS485与RS232通讯协议-9.jpg
/ w# T% M% d+ M/ O& m
, e+ A7 Y! I+ T$ X) X& D
3 {, Y3 s" _& }
; x/ Q1 H* [0 h$ X* ]
: F: B9 K, P* C- _5 |+ B( O: Q7 R$ r" Z  c) }) @
第二种:5线方式连接示意图' g+ j5 Y" ~8 O/ b2 n
- p3 i8 C" K# G# j- I# K

7 }3 |" h, L3 z$ |. c! i! e" b  l5 S% L& b; q& c1 d: Q
2 }$ c3 X- C, P: B3 c
01----RS485与RS232通讯协议-10.jpg 0 D2 H( c! t- P1 G4 Y4 i* b: Y
: W$ n1 l4 W& A  x
7 T3 E# _$ b* C( H

8 L# O0 t$ @/ ~" \( K- z0 i第三种:3线式连接示意图$ x: W+ U6 x3 k; U
! [2 D, c" N7 Y& ?4 V1 I( C
01----RS485与RS232通讯协议-11.jpg 1 _+ Z% v7 F0 W$ j7 A/ w
& _, ?( T: i* Q6 k% Q' g
注:3线连接中,DTE使用TXD和RXD两条数据线,无法实现硬件流控功能,在做大量数据传输应用时,建议使用5线或9线连接方式。( w$ u/ j+ `+ u
6 j, S) D+ S$ R- J) E" g* p5 |4 k

1 J! b/ l2 M- g. b第七:电平及时序1 r7 }) G# C7 n# h# i+ ~
9 }' E! \! [1 M, T

& }) G7 X% o0 x' K3 A2 B; e3 s) t* m  k9 M
01----RS485与RS232通讯协议-12.jpg " C8 _8 z  }  v, S% D

, g" o" t+ t, k7 }/ x( s
4 O* d9 v8 n. U: {
+ V) g. S# I5 C3 J& l7 u" [4 f0 h下图是使用RS232接口按照UART串口协议进行传输,UART协议具体请参考 UART详解。图中传输的数据为0100 1011b 即0x4B,按照1bit开始位,8bit数据位,1bit停止位格式传输。
7 y; q; _/ j- u! S6 _: M  G1 |2 C& K: m# a
01----RS485与RS232通讯协议-13.jpg
. v4 H( a' K, [" [& n  \: x# ^4 |' Q% t( b, Z3 _3 i) z

1 B  J$ I1 n/ W( A2 D$ Q; |# H( @4 O8 ^2 a( u3 M- [  b
第八:最大通讯距离及速率  w. H# Y8 T+ g6 V) Q

6 s$ B3 n! g5 N. Y2 X- ^协议最初规定设备最大速率为20kbps。% P& P. s: C  L6 `

& V3 \4 s! t8 X* S 01----RS485与RS232通讯协议-14.jpg
0 \2 p( Y' F! S
- G- d' q1 M, K* O0 d  k2 B; ~6 \8 J) X! f- }; @" l& j

- x6 u1 ^  I& x) h3 I; j注:协议规定最大速率为20kbps,现在看来这个速率已经很低了。一些芯片制造商已经做出了高速率的芯片驱动,具体速率上限请查看器件手册。
回复

使用道具 举报

0

主题

237

帖子

737

积分

二级会员

Rank: 2

积分
737
发表于 2023-5-10 22:30:36 | 显示全部楼层
888888888888888888888888
回复 支持 反对

使用道具 举报

0

主题

237

帖子

737

积分

二级会员

Rank: 2

积分
737
发表于 2023-5-15 09:23:45 | 显示全部楼层
111111111111111
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表