EDA365电子论坛网

标题: ARM串行接口电路 [打印本页]

作者: monsterscvb    时间: 2021-5-19 15:16
标题: ARM串行接口电路
*在通信领域内,有两种数据通信方式:并行通信和串行通信*串口的数据传输是以串行方式进行的。串口在数据通信中,一次只传输一个比特的数据。
8 t( G0 \$ k. b/ V*串行数据的传输速度用bps或波特率来描述
1 U( y7 l, K$ p1 u& w9 T  q: Q" g6 j
【UART】
+ Z+ c6 {1 S6 h发送数据时,CPU将数据写入UART,UART按照一定的格式从一个管脚TxD上串口发出;3 X1 J8 I; j$ S+ Q
接受数据时,UART检测另一个管脚RxD上的信号,将串行数据放在缓冲区中,CPU即可读。  _, M: \4 ?( t, o
(UART之间是以全双工方式传输数据)
% H1 o, U% L8 I
) W3 H1 x4 h+ p, |UART使用标准TTL/CMOS逻辑电平表示数据" Y4 E$ F% x2 v& E) ]
*0-5v,0-3.3v,0-2.5v或0-1.8v
3 P0 G# L! u4 C9 U6 {7 t*高电平表示1,低电平表示0
) R: I- r3 T  r! Z' k- S; m$ B1 K! c/ O' S* s$ W4 u( x1 z
但是在外围电平中,为了增强数据的抗干扰能力、提高传输长度,通常将TTL/CMOS逻辑电平转换为RS-232逻辑电平。例如可使用电平转换芯片:MAX3232
5 r1 _+ A2 O, p7 z. fRS-232逻辑电平(反逻辑)
. ?) G8 y  r! `$ j5 m9 E, U3-12V:表示0
5 X# p8 y. x. X4 O2 ?-3~-12V:表示1: g. @8 C: c+ B( n/ R  N
( t4 k/ A! A; u) v% c3 V4 o
传输数据前的准备(约定好波特率和传输格式)* T8 t- K( k% [  J. c$ B1 z# b
*有多少个数据位# [5 H/ b* v2 M! \
*是否使用校验位
; e$ y! I; b+ S*是奇校验还是偶校验
& {$ W- }9 a" j- O7 m: l' q*有多少个停止位. A* ~4 e: w) L* p) ?3 A
【奇校验/偶校验】/ D% X. V; n' ]- q* v5 v
奇校验:就是让原有数据数列中,(包括你要加上的一位)1的个数为奇数 ;7 Y: W$ d$ x8 j! b! |. n. h
1000110(0)你必须添0这样原来的3个1已经是奇数了所以添上0还是奇数 ;
6 i0 k0 `* R) P" C5 N; q7 A偶校验:就是让原有数据序列中,(包括你要加上的一位)1的个数为偶数 ;
9 @7 t! H9 m  I* z" Z. t1000110(1)你必须加1了这样原来的3个1已经是奇数了所以添上1还是奇数 ;
1 x) m2 f0 o% ?: u$ m【停止位】
- L- U. \  ^- R! d2 P# q4 B, L有效帧之间的空闲位 ;& q6 x3 _  n+ f: U+ n, k
3 K, V; h8 B; ^$ A8 C  ~
【异步数据传输方式】7 y+ E7 D" `3 c1 r1 `

% L/ `& n9 e) R8 W' E5 o1 G

: p# L# `  S$ N) E发送数据时,SOC先讲数据写入发送FIFO中,然后UART会自动将FIFO的数据复制到发送移位器中,发送移位器将数据一位一位的发送到TxDn数据线上6 N- L: X% T0 t0 D% y& m
接受数据时,接收移位器将RxDn数据线上的数据一位一位的接收进来,然后复制到接受FIFO中,SOC即可从中读取数据0 ]: a2 Q7 }9 g5 s$ p8 U
6 ^6 E4 v$ K- }4 B
【硬件流控制】. z- K6 A* E' G# y) G# {6 y3 [
*如果打开串口硬件流程控制后,串口A只有在nCTS被(串口B的nRTS)激活后才能把数据发送出去 ;
8 H; K1 ?# y7 n% Q' h% U*当串口A可以接受数据时,激活nRTS,准备好接受数据4 a% U) X$ B( |& s( J  `

! [  J4 w) h/ Q7 u$ R$ x1 N& l+ t' F
+ d8 R0 |8 b; Q; e8 C
【UBRDIVn】
. K4 w$ t& k; I$ G*在UART模块中有三个UART波特率除数因子寄存器UBRDIV0,UBRDIV1,UBRDIV2,存储在波特率除数寄存器UBRDIVn中的值用于决定波特率
3 L8 |9 z9 |) G* b# l7 v0 sUBRDIVn = (int)(UART Clock / (buad rate*16))- 1$ q: r: \6 o1 o& T
; u+ ?4 w% o# j5 q3 g* F6 \
【ULCON】
$ |5 q: j# w2 P( ~6 \
1 c) D" ]7 a* Q$ D6 G% s

/ A4 S) V) O7 f3 b1 K8 ]2 i【UCONn】(选择UART时钟源、设置UART中断方式)' T- p/ b1 E! P( n

6 R+ Y2 @8 y: i/ U; y% p

9 X% [1 j; E6 @6 h& j【UFCONn】(该寄存器用于设置是否使用FIFO,设置各个FIFO的触发深度)1 V1 A. ^( n% x7 ?. S& m& G8 f/ ]4 p

  Q1 ^  h& H: y9 O6 _- {【UTRSTATn寄存器】& k# V4 _! G0 ]4 m, }3 `
(用来表明数据是否已经被发送完毕,是否已经接收数据)
) R3 g" S& M9 f6 l0 T4 w
: @" f7 l1 k9 l1 k+ e

' Y$ F' a- U/ o0 V【UTXHn/URXHn】
  j1 o2 }% s/ kUTXHn寄存器:SOC将数据写入这个寄存器,UART会将它保存到发送位移寄存器中,并自动发送出去
2 M+ W% w" R; z0 y+ F5 WURXHn寄存器:当UART收到数据时,SOC读取这个寄存器,即可获得数据( n6 ~# ^4 r0 `- I

' z( e& h) V6 q/ l* H  m! q; u/ J9 j. }% Z1 y" i) L
# g9 S7 }* v! G' H, c: I
- c* L' M" E% S, K7 Q& n
/ N* @& ^2 |) `) \# ]4 q

/ F' T* U; t; r3 N2 u0 @" T
作者: qq666888qqw    时间: 2021-5-19 16:23
很详细,收了
作者: shapeofyou888    时间: 2021-5-19 17:34
发送数据时,CPU将数据写入UART,UART按照一定的格式从一个管脚TxD上串口发出




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2