|
f/ @9 f- d' l y( m/ V
- S8 [, N% P6 S! h! S+ S. N
通用异步收发传输器是一种串行异步收发协议,应用十分广泛。UART工作原理是将数据的二进制位一位一位的进行传输。在UART通讯协议中信号线上的状态位高电平代表’1’低电平代表’0’。当然两个设备使用UART串口通讯时,必须先约定好传输速率和一些数据位。# n: l& _, ^1 p' V/ V$ B4 T
第一节 硬件连接 硬件连接比较简单,仅需要3条线,注意连接时两个设备UART电平,如电平范围不一致请做电平转换后再连接,如下图所示: C. P0 y& A6 U8 L
" F9 ]5 N" c& L+ }0 J
" {, ~+ m7 z9 v' P/ \* B: J \TX:发送数据端,要接对面设备的RX
' n: I$ c9 `! S1 X* ~8 TRX:接收数据端,要接对面设备的TX
. |. n. x3 v* m# U8 K8 O" K* Q8 gGND:保证两设备共地,有统一的参考平面; ^( }7 g/ F0 e' U ]# q! { s
第二节 软件通信协议 UART作为异步串口通信协议的一种,工作原理是将数据的字节一位接一位地传输。协议如下:; R8 I2 ]& D# \, c7 _; |& i9 f7 N

' a! ^! `2 B) p; c2 E
$ A ?2 L6 s' h% QA.空闲位:' H- B* W5 J c6 y2 s1 O
UART协议规定,当总线处于空闲状态时信号线的状态为‘1’即高电平。
, y+ E( y7 A# n% K3 \4 C% OB.起始位:: y6 f7 B) ]$ E& u! h: D. Y8 {8 k4 b! E
开始进行数据传输时发送方要先发出一个低电平’0’来表示传输字符的开始。因为空闲位一直是高电平所以开始第一次通讯时先发送一个明显区别于空闲状态的信号即为低电平。
; F3 m1 M& p# m2 H4 U* l% AC.数据位:: W$ ?0 A+ J! R3 D0 i, d
起始位之后就是要传输的数据,数据可以是5,6,7,8,9位,构成一个字符,一般都是8位。先发送最低位最后发送最高位。 B/ @. h! C# ?( D% C* t k5 n
D.奇偶校验位:# t6 I8 {9 x0 d/ \$ q+ l5 `& [! c
数据位传送完成后,要进行奇偶校验,校验位其实是调整个数,串口校验分几种方式:2 U* q" o2 a2 [& T, F4 ?) T0 m
D.1.无校验(no parity)
9 w; q/ V* m' W. A( r1 xD.2.奇校验(odd parity):如果数据位中’1’的数目是偶数,则校验位为’1’,如果’1’的数目是奇数,校验位为’0’。& d% d3 l5 G9 i3 L1 g
D.3.偶校验(even parity):如果数据为中’1’的数目是偶数,则校验位为’0’,如果为奇数,校验位为’1’。
. e* H4 ?2 _$ u g$ U' j B0 TD.4.mark parity:校验位始终为1。2 t) P6 u* \% n! j
D.5.space parity:校验位始终为0。
- H& i0 x& L" O" v* p/ IE.停止位:
; h. ^( M- o7 g$ ?5 P数据结束标志,可以是1位,1.5位,2位的高电平。' ?1 `. e; A! b6 ]( [& q
F.波特率:
3 e% @) y9 U8 U" G0 z4 o0 Z, D数据传输速率使用波特率来表示,单位bps(bits per second),常见的波特率9600bps,115200bps等等,其他标准的波特率是1200,2400,4800,19200,38400,57600。举个例子,如果串口波特率设置为9600bps,那么传输一个比特需要的时间是1/9600≈104.2us。% b) [( Q$ u* C3 P) W0 c
7 I1 Q t& Z. u
以9600 8N1(9600波特率,8个数据位,没有校验位,1位停止位)为例,这是目前最常用的串口配置,现在我们传输’O’'K’两个ASCII值,'O’的ASCII为79,对应的二进制数据为01001111 ,'K’对应的二进制数据为01001011 ,传输的格式数据如下图所示:
7 K5 C! z8 k6 ~9 e' H
) A& p6 L' @$ h" u* Q# N串口波特率为9600,1bit传输时间大约为104us,传送一个数据实际是10个比特(开始位,8个数据位,停止位),一个bytes传输速率实际为9600*8/10=7680bps。
& m! ^1 m* _& x$ `==========
: ?& A1 I. T2 S' E [1 a, C/ e往期回顾:【蓝桥杯嵌入式】第五章 LCD R- O w& ~7 b" `) R. c/ U
【蓝桥杯嵌入式】第四章 按键控制LED
2 A5 O5 ~3 N2 C8 v R- [【蓝桥杯嵌入式】第三章 LED流水灯
5 z! s3 r7 u1 n6 T) `【蓝桥杯嵌入式】第二章 软件安装2 W/ ?* y( Z( S! D9 @ y0 b2 N
【蓝桥杯嵌入式】第一章 大赛概述
+ a. H/ [- c5 ^: M==========% S9 {/ u* _. |( I4 o+ T

( M5 C6 ~8 |, X) m7 T) q7 G' [* O' j( o, L2 g6 I
+ a' y+ J5 Y7 E$ d |
|