找回密码
 注册
关于网站域名变更的通知
查看: 510|回复: 2
打印 上一主题 下一主题

ARM串行接口电路

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-5-19 15:16 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
*在通信领域内,有两种数据通信方式:并行通信和串行通信*串口的数据传输是以串行方式进行的。串口在数据通信中,一次只传输一个比特的数据。
; Y! j, p/ r0 \: s) f7 c: ?# M) D+ d*串行数据的传输速度用bps或波特率来描述6 M/ c8 l8 W4 M( I  H- z1 L
% Q4 J; k, R* g. T) e* S
【UART】
$ b! V  [7 R# B* a发送数据时,CPU将数据写入UART,UART按照一定的格式从一个管脚TxD上串口发出;5 Y0 `+ _: D1 l/ w1 A5 A- O2 e* J
接受数据时,UART检测另一个管脚RxD上的信号,将串行数据放在缓冲区中,CPU即可读。
! @) z* e0 F9 R% s' M(UART之间是以全双工方式传输数据)7 D& e  k, A& g( s. h$ y
3 n6 j1 c) |# `
UART使用标准TTL/CMOS逻辑电平表示数据
& ~% Z8 B6 E9 j5 J*0-5v,0-3.3v,0-2.5v或0-1.8v' Q# ]: [7 j+ m& d5 I1 m
*高电平表示1,低电平表示0
/ ^) _! G. g' s2 L* t# I/ W  M
6 k) R; R9 i8 |, a但是在外围电平中,为了增强数据的抗干扰能力、提高传输长度,通常将TTL/CMOS逻辑电平转换为RS-232逻辑电平。例如可使用电平转换芯片:MAX3232
! Y) M$ S& ?2 {RS-232逻辑电平(反逻辑)
/ P- L8 C6 P( m, W/ ?4 s3 F% G3-12V:表示0" t# z3 U& d  g5 i/ V$ H9 `
-3~-12V:表示19 O+ ^' U8 F0 X2 `

2 M6 F% k9 P  z' v3 @, L" \4 d传输数据前的准备(约定好波特率和传输格式)+ G9 g4 C& ?* b0 [5 [
*有多少个数据位! {5 r% N& P- R$ s
*是否使用校验位
8 r. S+ u" I3 m0 k2 d*是奇校验还是偶校验! O0 C) k. x& j6 q0 L; N
*有多少个停止位  V0 K6 f3 `2 a
【奇校验/偶校验】0 ~' Q- Q% B) Q8 c  d! ^: Q1 O
奇校验:就是让原有数据数列中,(包括你要加上的一位)1的个数为奇数 ;
9 ~& k. [$ X" i: H1000110(0)你必须添0这样原来的3个1已经是奇数了所以添上0还是奇数 ;$ @5 `( p  {$ k# t* \! }
偶校验:就是让原有数据序列中,(包括你要加上的一位)1的个数为偶数 ;8 p; V8 v$ _: t* b3 m
1000110(1)你必须加1了这样原来的3个1已经是奇数了所以添上1还是奇数 ;
* O# u( I( O* z. G) H8 A  R/ S+ f【停止位】
, u, _; h; l' }1 E1 G) l) X' o有效帧之间的空闲位 ;
5 I* I/ P9 A; K  ]  A) F- _' h$ P  z1 h1 a
【异步数据传输方式】
* ~! G0 E) S; Y$ Y, y, s  {0 N9 a. n
- Z3 ^8 A3 A, u0 e  y- y
发送数据时,SOC先讲数据写入发送FIFO中,然后UART会自动将FIFO的数据复制到发送移位器中,发送移位器将数据一位一位的发送到TxDn数据线上
) Q+ @! r5 {4 p; i接受数据时,接收移位器将RxDn数据线上的数据一位一位的接收进来,然后复制到接受FIFO中,SOC即可从中读取数据( c, b% E/ p' v$ f2 ~2 I% ]

7 l1 K: p: z& Q【硬件流控制】
( M" w4 f  ?8 r+ i1 P6 y; _*如果打开串口硬件流程控制后,串口A只有在nCTS被(串口B的nRTS)激活后才能把数据发送出去 ;
) g. r- k1 Q. r' r; L# {2 S*当串口A可以接受数据时,激活nRTS,准备好接受数据. u* Q/ ?5 l- O0 o. \! u2 w
& h0 b8 A( j$ J% _& e5 }
1 i# K6 y( k+ J1 E6 ^' e
【UBRDIVn】
/ }2 q* @: \& m1 P/ H*在UART模块中有三个UART波特率除数因子寄存器UBRDIV0,UBRDIV1,UBRDIV2,存储在波特率除数寄存器UBRDIVn中的值用于决定波特率" W" l: S9 C3 u) ]# E
UBRDIVn = (int)(UART Clock / (buad rate*16))- 1! u( T' M" f9 j& S4 ?7 e( T
7 H3 f5 B# u9 B
【ULCON】/ a' j9 u& ~9 v" r) Y, h4 ]

5 y9 \2 y+ ?$ R. u: d' O9 V
% b, s! A6 p2 P
【UCONn】(选择UART时钟源、设置UART中断方式)
' h) I6 L. f  n4 v+ H7 m& T/ R" D3 T2 T0 C" ]7 L# \0 ^7 }

7 S* B- ]' R6 \( }, X3 T$ `【UFCONn】(该寄存器用于设置是否使用FIFO,设置各个FIFO的触发深度)( S* J9 m7 K: I6 l

4 P8 M( ], @& n【UTRSTATn寄存器】) c& A: S8 Q. }" S
(用来表明数据是否已经被发送完毕,是否已经接收数据). G6 h% Z" n# @: _. G2 n$ J7 z1 {
) u% {/ w2 M% S" a9 O7 O

7 h1 T6 v! S% x【UTXHn/URXHn】
& f1 j! {  }# SUTXHn寄存器:SOC将数据写入这个寄存器,UART会将它保存到发送位移寄存器中,并自动发送出去( |8 V1 q$ a( P
URXHn寄存器:当UART收到数据时,SOC读取这个寄存器,即可获得数据
% x6 u, t) d  D; G
3 \, E+ v* S' m( F) S! z, o  Y# r; @! \* Z6 i% x4 H- ^

' B& [' M  ~# ?. T
! S9 a  i( C' `( b$ ?

0 z; l! c" V' a: J0 d9 E6 O6 E+ K+ K8 u* g" T* J
  • TA的每日心情
    开心
    2022-12-5 15:37
  • 签到天数: 2 天

    [LV.1]初来乍到

    3#
    发表于 2021-5-19 17:34 | 只看该作者
    发送数据时,CPU将数据写入UART,UART按照一定的格式从一个管脚TxD上串口发出
  • TA的每日心情
    开心
    2022-12-27 15:46
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    2#
    发表于 2021-5-19 16:23 | 只看该作者
    很详细,收了
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 10:59 , Processed in 0.171875 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表