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

ARM串行接口电路

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
*在通信领域内,有两种数据通信方式:并行通信和串行通信*串口的数据传输是以串行方式进行的。串口在数据通信中,一次只传输一个比特的数据。
7 T* B2 I8 X" u! Z7 s*串行数据的传输速度用bps或波特率来描述; E6 V/ M5 L8 u4 e1 k$ @

5 I' r% R1 V/ d% C7 s【UART】
; R% _4 F; S4 f( K" d7 Y: o( g发送数据时,CPU将数据写入UART,UART按照一定的格式从一个管脚TxD上串口发出;" e3 z  j& o4 \0 J
接受数据时,UART检测另一个管脚RxD上的信号,将串行数据放在缓冲区中,CPU即可读。9 s  ]$ U( b2 a% o
(UART之间是以全双工方式传输数据)
5 G: D' c) Y0 q* ^9 B" k* F4 H
; Q  @" O3 H) O6 e% ~4 \UART使用标准TTL/CMOS逻辑电平表示数据
) o9 D: j5 `* _. {*0-5v,0-3.3v,0-2.5v或0-1.8v
1 A4 q* ^) e) [- K0 ~7 l*高电平表示1,低电平表示06 P& E8 f* ?' [+ E, O
! b7 U/ e" z! u# a0 k3 a& _
但是在外围电平中,为了增强数据的抗干扰能力、提高传输长度,通常将TTL/CMOS逻辑电平转换为RS-232逻辑电平。例如可使用电平转换芯片:MAX3232' y) b) F: Z% p; v- C
RS-232逻辑电平(反逻辑)4 R! O0 |" x0 S9 d
3-12V:表示0
" T, b% h! P% j* \- X* V3 p-3~-12V:表示1
! W7 I& ?6 w4 B) a% h
+ P* T4 \, y' s& _4 f9 K传输数据前的准备(约定好波特率和传输格式)
$ w! y. v4 G* V2 K# K* L*有多少个数据位
3 E9 W6 ]* ]! [% N' M9 y' Q7 f*是否使用校验位
6 ?5 s$ M9 W$ @0 o, n' P, p2 p*是奇校验还是偶校验: a9 v1 G0 `. d/ X
*有多少个停止位
0 [; V" T/ ^; ?! c& C7 K2 B【奇校验/偶校验】
2 p( }' b4 H# g/ e奇校验:就是让原有数据数列中,(包括你要加上的一位)1的个数为奇数 ;3 ]- q: T; W+ u9 G1 N+ p' `5 Q
1000110(0)你必须添0这样原来的3个1已经是奇数了所以添上0还是奇数 ;4 v1 |( R& i8 x  P4 u2 h) J
偶校验:就是让原有数据序列中,(包括你要加上的一位)1的个数为偶数 ;5 n* R' C2 @' T, ^- \
1000110(1)你必须加1了这样原来的3个1已经是奇数了所以添上1还是奇数 ;: \* p4 L- r8 @" y. y
【停止位】
& g  A4 i, S) q5 i有效帧之间的空闲位 ;9 G& j  h: \# r" |) I
5 ^* |/ Y  ^. A  `) u
【异步数据传输方式】
2 a2 n) c  a' R  h/ C5 s/ |3 b" j; n1 ?- Q7 O4 |. z& K" f
) N& {. x; Z' z9 g# C
发送数据时,SOC先讲数据写入发送FIFO中,然后UART会自动将FIFO的数据复制到发送移位器中,发送移位器将数据一位一位的发送到TxDn数据线上
4 ?5 P# l9 g6 C5 j8 J1 \0 `接受数据时,接收移位器将RxDn数据线上的数据一位一位的接收进来,然后复制到接受FIFO中,SOC即可从中读取数据0 m$ p4 ~8 a, @; U

- s2 x2 {- u$ ^" ~2 s, G# G【硬件流控制】* d2 G$ U" Z; C& {. m
*如果打开串口硬件流程控制后,串口A只有在nCTS被(串口B的nRTS)激活后才能把数据发送出去 ;" Y3 `' [& j8 D; r0 F3 ]" E
*当串口A可以接受数据时,激活nRTS,准备好接受数据
/ y* s' |( d) I# m6 h
9 y) W& d, W1 k8 @0 i
% M7 {; ^% E6 e! ]* f2 k# s  C* K
【UBRDIVn】
2 `3 }/ @; C2 x# m5 a: U' P& W*在UART模块中有三个UART波特率除数因子寄存器UBRDIV0,UBRDIV1,UBRDIV2,存储在波特率除数寄存器UBRDIVn中的值用于决定波特率# d8 p. R- t1 v! Q5 D
UBRDIVn = (int)(UART Clock / (buad rate*16))- 1
4 e6 M& }" I+ _9 f: Z: Q
6 `0 }. d5 ~1 _3 e7 B1 g【ULCON】4 ?! B2 B; G+ S# G' h6 _9 O+ x" B

2 c9 Z, l+ ]# U- H* F9 E( f' b

, X* o. [2 @2 `$ q【UCONn】(选择UART时钟源、设置UART中断方式)
6 z9 t+ a$ Z6 {% S  f1 w5 Z# b# ]/ G0 B9 S6 f' @' U
/ H2 f+ F2 n! S* T5 r# t
【UFCONn】(该寄存器用于设置是否使用FIFO,设置各个FIFO的触发深度)
+ v: a& |0 T& h$ v' J9 r
: m2 M% s# [" ^9 U* i【UTRSTATn寄存器】
1 _& t: Y; v% m; J% w* _$ z(用来表明数据是否已经被发送完毕,是否已经接收数据)1 @. l8 y$ k: G! Q& V7 ]% m
! m; F: U- s, [$ X0 S

/ B* _  {7 k% Y7 a( S【UTXHn/URXHn】
# w9 i5 ^# r; m& L( {4 c& {UTXHn寄存器:SOC将数据写入这个寄存器,UART会将它保存到发送位移寄存器中,并自动发送出去1 @9 X1 f1 d/ x
URXHn寄存器:当UART收到数据时,SOC读取这个寄存器,即可获得数据
; J# I* q& f) l; F- b1 A: L3 c3 w1 O

9 d& {/ i3 P' w, z! q1 |0 ~& l, m+ d  r2 d2 j

3 G  R. N6 B* F* C% V
+ W4 Z$ g# R& z7 ]% j& Q$ x+ p4 v* p. U9 j, T% A$ L# s" m
  • 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-11-24 07:14 , Processed in 0.171875 second(s), 27 queries , Gzip On.

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

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

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