1、UART主要用途:
打印调试信息;
外接各种模块:GPS、蓝牙;
通过三根线进行数据传输: 发送、接收、地线:
2、数据格式:
开始位
数据位
停止位
校验位( 以前的数据没那么稳定,所以有校验位):
奇校验
偶校验
怎么规定奇偶校验位的?
数据位+校验位 中 为 1 的个数是奇数个/偶数个
3、以ARM发送数据"A"给PC的逻辑电平为例:
① 双方约定波特率:
每一bit占据的时间
A --> 01 00000 1
②原来是高电平,ARM拉低,保持1bit时间
③拉低的那一瞬间,PC在低电平开始处计时
④ARM根据数据驱动Txd引脚的电平
Txd[0] = Data[0]
Txd[1] = Data[1]
Txd[2] = Data[2]
…
Txd[3] = Data[7]
⑤PC机在数据位的中间读取引脚状态
Data[0] = Rxd[t0]
Data[1] = Rxd[t1]
Data[2] = Rxd[t2]
…
Data[7] = Rxd[t7]
4、逻辑电平为1,引脚上的电压为多少V?
比如超过2V就代表逻辑1,低于0.7V就代表逻辑0
在12V ~ 3V之间代表逻辑1,在-12V ~ -3V之间代表逻辑0
5、PC是232电平,ARM芯片是TTL电平,之间就需要连接一个电平转换芯片
现在的电脑没有串口了,所有是USB串口芯片进行转接(可以在原理图上搜索下TXD):
6、ARM芯片是如何发送/接收数据?
要发送数据时,CPU控制内存要发送的数据通过FIFO传给UART单位,UART里面的移位器,依次将数据发送出去,在发送完成后产生中断提醒CPU传输完成。
接收数据时,获取接收引脚的电平,逐位放进接收移位器,再放入FIFO,写入内存。在接收完成后产生中断提醒CPU传输完成。
7、波特率的理解
波特率:
每一bit占据的时间
ARM芯片的波特率和数据格式为:
115200 8n1
波特率115200
8位数据位
0位校验位
1位停止位
每发送1byte 需要时间为 t = 10/115200s
(10bit的原因是:1位开始位 8位数据位 1位停止位)
每1s能发送 字节数为 1 / (10/115200s) = 11520byte