大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
一、UART硬件连接
UART有4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)。如下图:
引脚介绍:
-
-
VCC:供电pin,一般是3.3v,在我们的板子上没有过电保护,这个pin一般不接更安全
-
GND:接地pin,有的时候rx接受数据有问题,就要接上这个pin,一般也可不接
-
RX:接收数据pin
-
TX:发送数据pin
-
二、UART通信简介
UART最好的一点是它只使用两根线就可以在设备之间传输数据。在UART通信中,两个UART直接相互通信。发送UART将来自CPU等控制设备的并行数据转换为串行形式,并将其串行发送到接收UART,接收UART然后将串行数据转换回接收设备的并行数据。在两个UART之间传输数据只需要两根线。数据从发送UART的Tx引脚流向接收UART的Rx引脚:
UART以异步方式发送数据,这意味着没有时钟信号将发送UART的位输出与接收UART的位采样同步。发送UART不是时钟信号,而是将开始和停止位添加到正在传输的数据包中。这些位定义数据包的开始和结束,因此接收UART知道何时开始读取位。
当接收UART检测到起始位时,它开始以称为波特率的特定频率读取输入位。波特率是数据传输速度的度量,以每秒位数(bps)表示。两个UART必须以大致相同的波特率运行。发送和接收UART之间的波特率只能相差10%左右。
两个UART还必须配置为发送和接收相同的数据包结构。
UART协议如下:
空闲位:
UART协议规定,当总线处于空闲状态时信号线的状态为‘1’即高电平。
起始位:
开始进行数据传输时发送方要先发出一个低电平’0’来表示传输字符的开始。因为当UART数据传输线不传输数据时,它通常保持在高电压电平。为了开始数据传输,发送UART将传输线从高电平拉至低电平一个时钟周期。当接收UART检测到高电压到低电压转换时,它开始以波特率的频率读取数据帧中的位。
数据位:
起始位之后就是要传输的数据。如果使用奇偶校验位,则它可以是5位到8位长。如果不使用奇偶校验位,则数据帧可以是9位长,一般都是8位。在大多数情况下,数据首先以最低有效位发送。
奇偶校验位:
数据位传送完成后,要进行奇偶校验,校验位其实是调整个数,串口校验分几种方式:
-
-
1.无校验(no parity)
-
2.奇校验(odd parity):如果数据位中’1’的数目是偶数,则校验位为’1’,如果’1’的数目是奇数,校验位为’0’。
-
3.偶校验(even parity):如果数据为中’1’的数目是偶数,则校验位为’0’,如果为奇数,校验位为’1’。
-
4.mark parity:校验位始终为1
-
5.space parity:校验位始终为0
-
停止位:
数据结束标志,可以是1位,1.5位,2位的高电平。为了通知传输数据包的结束,UART发送端会将数据传输线从低电压驱动至高电压至少两位持续时间。
波特率:
数据传输速率使用波特率来表示,单位bps(bits per second),常见的波特率9600bps,115200bps等等,其他标准的波特率是1200,2400,4800,19200,38400,57600。举个例子,如果串口波特率设置为9600bps,那么传输一个比特需要的时间是1/9600≈104.2us。
三、UART传输步骤
3.1 发送UART从数据总线并行接收数据:
3.2 发送UART将起始位,奇偶校验位和停止位添加到数据帧:
3.3 整个数据包从发送UART串行发送到接收UART。接收UART以预先配置的波特率对数据线进行采样:
3.4 接收UART丢弃数据帧中的起始位,奇偶校验位和停止位:
3.5 接收UART将串行数据转换回并行并将其传输到接收端的数据总线:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/193834.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...