波特率
就是每秒传送的bit数。
UART常用的波特率:
1200 baud = 1200bit/s ≈ 833.3333 μs/bit
2400 baud = 2400bit/s ≈ 416.6666 μs/bit
4800 baud = 4800 bit/s ≈ 208.3333 μs/bit
9600 baud = 9600bit/s ≈ 104.1666 μs/bit
19200 baud = 19200bit/s ≈ 52.0833 μs/bit
38400 baud = 38400bit/s ≈ 26.0416 μs/bit
57600 baud = 38400bit/s ≈ 17.3611 μs/bit
115200 baud = 115200bit/s ≈ 8.6805 μs/bit
总线空闲状态
当总线空闲时,常为1(高电平)。
数据传送单位
以字节为一个传输单位。
每个单位字节按如下顺序包含以下内容:
Frame | 起始位 | 数据位 | 奇偶校验位 | 停止位 |
Size | 1 bit | 5-9 bit | 0-1 bit | 1-2 bit |
起始位:0b0
(必须是0)
数据位:0bxxxx_xxxx
(通常为8 bit,也可能是5 bit、6 bit、7 bit、9 bit,根据实际通信协议决定)
(发送时,先发低位,后发高位;接收时,先收高位,再收低位)
奇偶校验位:0bx
(分为无校验、奇校验、偶校验、常1、常0,根据实际通信协议决定)
停止位:0b1
(必须是1。通常是1 bit,也可能是2 bit或其他,根据实际通信协议决定)
举例
发送端向接收端按以下协议传输数据:
通信数据量 | 2 byte |
波特率 | 4800 baud |
起始位 | 1 bit |
停止位 | 1 bit |
数据位 | 8 bit |
奇偶校验位 | Odd(奇校验) |
若某次通信建立后,传输指令0xA5 0x04,波形如下:
(上图采用plant uml工具绘制,代码如下:)
@startuml
hide time-axis
scale 1 as 25 pixels
robust "发送端" as TX
TX has 1,0
@0
TX is 1
@1
@2
' 发送开始
'起始位
@3
TX is 0
'数据位0xA5 先低后高
@4
TX is 1
@5
TX is 0
@6
TX is 1
@7
TX is 0
@8
TX is 0
@9
TX is 1
@10
TX is 0
@11
TX is 1
'奇偶校验位
@12
TX is 0
'停止位
@13
TX is 1
'一个单位完成,开始发下一个单位
'起始位
@14
TX is 0
'数据位0x04 先低后高
@15
TX is 0
@16
TX is 0
@17
TX is 1
@18
TX is 0
@19
TX is 0
@20
TX is 0
@21
TX is 0
@22
TX is 1
'奇偶校验位
@23
TX is 0
'停止位
@24
TX is 1
@30
highlight 3 to 4 #lightblue
highlight 4 to 12 #lightgreen
highlight 12 to 13 #lightyellow
highlight 13 to 14 #pink
highlight 14 to 15 #lightblue
highlight 15 to 23 #lightgreen
highlight 23 to 24 #lightyellow
highlight 24 to 25 #pink
legend
Bule: 起始位
Green: 数据位
Yellow: 奇偶校验位
Pink: 停止位
end legend
@enduml