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

ARM串行接口电路

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
*在通信领域内,有两种数据通信方式:并行通信和串行通信*串口的数据传输是以串行方式进行的。串口在数据通信中,一次只传输一个比特的数据。
1 A0 q- M+ Q6 L7 i*串行数据的传输速度用bps或波特率来描述6 A$ Q6 W+ Y8 K6 P: S" R8 d
: }5 e, A6 }$ g/ {0 h& v
【UART】
. R; N3 h3 V- p发送数据时,CPU将数据写入UART,UART按照一定的格式从一个管脚TxD上串口发出;
4 F2 L  J% A+ n$ N) T, x接受数据时,UART检测另一个管脚RxD上的信号,将串行数据放在缓冲区中,CPU即可读。
/ C. k6 H0 e9 f+ W(UART之间是以全双工方式传输数据)
7 D3 J0 V7 l! q, p4 B2 S! d) h* F& y* N. F2 Q" {6 j
UART使用标准TTL/CMOS逻辑电平表示数据# A. y0 q7 D2 ^+ s) V% |9 P. i9 W5 _
*0-5v,0-3.3v,0-2.5v或0-1.8v0 Z9 r9 r7 C- f5 `9 r
*高电平表示1,低电平表示0
" E+ I4 n9 c7 [3 M  n5 f( o& U% M1 Q" i$ ?' Y
但是在外围电平中,为了增强数据的抗干扰能力、提高传输长度,通常将TTL/CMOS逻辑电平转换为RS-232逻辑电平。例如可使用电平转换芯片:MAX32322 O* s% R( d" x- |
RS-232逻辑电平(反逻辑)
+ n8 b2 T1 m( M: L% }5 p3-12V:表示0' ~$ I0 P4 l& Q2 @' q
-3~-12V:表示1
$ @/ u4 {( {1 N/ ^% y4 H5 f
/ e* q  P$ ?& u  Z5 y3 W  F+ @1 h" Q传输数据前的准备(约定好波特率和传输格式)
( T$ x3 O, C( F9 F# ]  `6 h- \2 b*有多少个数据位
3 n, I% ?6 X+ Z% a5 {0 G*是否使用校验位1 S  t( r8 P, m5 ?" J* e
*是奇校验还是偶校验( V, P( k# W; q9 _
*有多少个停止位
2 d$ i2 _% L4 |【奇校验/偶校验】9 W+ K+ ~4 g& Z, }9 `$ _
奇校验:就是让原有数据数列中,(包括你要加上的一位)1的个数为奇数 ;
) I' L* v, c7 t1 Q  s) o3 `1000110(0)你必须添0这样原来的3个1已经是奇数了所以添上0还是奇数 ;; @- Q+ ^! J8 p* l9 `( @; U
偶校验:就是让原有数据序列中,(包括你要加上的一位)1的个数为偶数 ;( b( k5 d: b6 f* v( B! I' H
1000110(1)你必须加1了这样原来的3个1已经是奇数了所以添上1还是奇数 ;& p/ j+ X4 c/ {
【停止位】
2 E, g, l/ m0 T* c$ O% ~3 q有效帧之间的空闲位 ;' i- D" ?6 L8 m, n3 w

$ s$ G; @! N: ^! d) @+ d2 |1 L【异步数据传输方式】
8 ^  F9 m. J. H- ]6 X' h7 F. d7 R+ [# Q- U7 W# {6 R

# ~$ H1 r  I# [发送数据时,SOC先讲数据写入发送FIFO中,然后UART会自动将FIFO的数据复制到发送移位器中,发送移位器将数据一位一位的发送到TxDn数据线上
3 U& X2 K) C4 A接受数据时,接收移位器将RxDn数据线上的数据一位一位的接收进来,然后复制到接受FIFO中,SOC即可从中读取数据( @# R) s' Q6 n" `* }
9 B4 _7 P1 q4 \8 ~+ o# b+ R
【硬件流控制】4 C) u. @4 }0 K8 _) ?/ d
*如果打开串口硬件流程控制后,串口A只有在nCTS被(串口B的nRTS)激活后才能把数据发送出去 ;# l: ], ]" S, v. R2 s3 @7 c
*当串口A可以接受数据时,激活nRTS,准备好接受数据
& T$ I* w$ ^# _) q0 F5 U
* c# [: }4 H# X  G+ y* M
5 l: r  f9 i5 s9 Y+ h$ b
【UBRDIVn】
. T* S. Y1 f7 e*在UART模块中有三个UART波特率除数因子寄存器UBRDIV0,UBRDIV1,UBRDIV2,存储在波特率除数寄存器UBRDIVn中的值用于决定波特率
+ P; i# T" D" SUBRDIVn = (int)(UART Clock / (buad rate*16))- 1
: m1 x' V" j" H& y$ z7 u& q; Z; ^8 n  g  C/ F5 V
【ULCON】$ l9 \8 V" ~9 C( D( @9 O
7 X' h* v) c7 D8 t5 L
% V3 m0 Y7 u! Z7 Z/ z& C
【UCONn】(选择UART时钟源、设置UART中断方式)% [, f, K. ~& q( ?

  v; k  k7 T5 Z, ^8 o; t. V% h( k8 k
" w. u5 c1 k5 O" t1 T
【UFCONn】(该寄存器用于设置是否使用FIFO,设置各个FIFO的触发深度)
2 W8 X4 p) o- F8 |' ~5 |4 @( i3 G3 P
【UTRSTATn寄存器】: J5 [( N  l) |: _2 _/ p
(用来表明数据是否已经被发送完毕,是否已经接收数据)0 @& i; O9 p5 |8 f8 h0 p
: ]% E: y+ {" \/ |1 ?5 ]) V9 P

: y* g, O# R9 l, x- p【UTXHn/URXHn】
4 K0 ^4 T0 P: l- J  v/ |5 l* C5 x6 sUTXHn寄存器:SOC将数据写入这个寄存器,UART会将它保存到发送位移寄存器中,并自动发送出去
1 G# l, Y0 c( R0 K7 |  N( P; X! _- U8 rURXHn寄存器:当UART收到数据时,SOC读取这个寄存器,即可获得数据8 k) h: {) c: }5 d/ ^3 R  H6 y  J
% Q6 |7 K" d* _' F7 C" g
8 }2 {& b0 l- A  Y# Y

1 X' S% N, e* h$ j5 E7 ]0 i* Y" h
7 l! u, i4 @! v2 s7 Q$ p3 b/ b
; m7 {; w" O+ ?
9 U: o& Q" \0 ]+ C, T# c7 Z
  • TA的每日心情
    开心
    2022-12-27 15:46
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    2#
    发表于 2021-5-19 16:23 | 只看该作者
    很详细,收了
  • TA的每日心情
    开心
    2022-12-5 15:37
  • 签到天数: 2 天

    [LV.1]初来乍到

    3#
    发表于 2021-5-19 17:34 | 只看该作者
    发送数据时,CPU将数据写入UART,UART按照一定的格式从一个管脚TxD上串口发出
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-23 19:43 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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