串行通信和并行通信

串行通信
367.png

并行通信
366.png

单工和双工

单工通信
368.png
双工通信
369.png

波特率和比特率

衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率(Bitrate)来表示,即每秒钟传输的二进制位数,单位为比特每秒(bit/s)。
容易与比特率混淆的概念是“波特率”(Baudrate),它表示每秒钟传输了多少个码元。而码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。
如常见的通讯传输中,用 0V 表示数字 0,5V 表示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通讯传输中,有 0V、2V、4V 以及 6V 分别表示二进制数 00、01、10、11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。
因为很多常见的通讯中一个码元都是表示两种状态,人们常常直接以波特率来表示比特率。
常见的波特率为4800、9600、115200 等。

串口通信

串口通信指的是通过串行通信接口进行数据传输的通信方式,通常用于短距离、低速率的数据传输。
串口通信可以使用不同的串行通信协议和接口,常见的串口通信协议有UART、
USART、RS-232、RS-485、SPI、I2C等

UART通信

Universal Asynchronous Receiver Transmitter 即 通用异步收发器,是一种通用的串行、异步通信总线 该总线有两条数据线,可以实现全双工的发送和接收 在嵌入式系统中常用于主机与辅助设备之间的通信

同步通信和异步通信的最大区别在于传输数据时是否需要时钟信号同步

UART的数据帧

370.png
举例:发送0x55 二进制:01010101
371.png
校验位
串口通信过程中有五种校验方式:奇校验(ODD)偶校验(EVEN)1校验(MARK)0校验(SPACE)无校验(NONE)

发送01和0011问题

372.png
发送01和0011,接收端如何来确定和区分
波特率
波特率决定了接收数据的速度,也就是每个电平持续的时间
累计误差消除
发送和接收的时候使用的是不同的时钟,所以有可能时钟不同步造成数据的累计误差,解决方案是,UART只能一次性最多发送8bit的数据,然后重新发送消除累计误差

UART硬件连接

373.png
374.png

设置引脚功能的实质是让引脚在芯片内部连接到某一个对应的控制器上

USART

USART(Universal Synchronous Asynchronous Receiver and Transmitter)通用同步异步收发器,是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。
USART支持异步通信,也支持同步通信。一般使用异步通信。
USART在进行通信的时候会按照数据包的形式进行发送,帧格式如图
image.png
串口通信是一位一位地传输,每传输一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平),后面由7位数据位组成,接着是一位校验位,最后是停止位。停止位后面是不定长的空闲位,停止位和空闲位都规定为高电平。

串口原理图

在开发板上默认使用的串口是串口1,有两根数据线,也就是USART0_TX和USART0_RX。串口引脚和下载引脚连接在同一个端子上,插上DAPLink就可以进行下载和串口调试。关于串口原理图如图2-1-1所示。
image.png

串口驱动流程

把DAPLink连接到开发板的端子上,打开串口调试助手(sscom5.13.1),然后会检测到一个串口。
编写代码,先要配置串口使能,配置波特率、停止位、校验位等参数。然后调用串口发送函数即可发送数据。如使用重定向还需要编写重定向函数,使用printf即可打印输出。