目录
前言
通信在现代社会中扮演着至关重要的角色,不论是在个人生活中的手机通话、电子邮件的发送,还是在工业自动化领域的数据传输等,都离不开通信技术的支持。串行通信和并行通信作为数据传输的两种基本方式,在实际应用中各有优劣,而常见的串行通信接口、同步通信和异步通信、单工和双工、波特率和比特率等概念也是我们在通信领域中需要了解的重要知识点。
串行通信和并行通信
串行通信
并行通信
常用串行通信接口
同步通信和异步通信
同步通信需要时钟信号,异步通信不需要时钟信号
单工和双工
单工通信
双工通信
波特率和比特率
比特率
衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率(Bitrate)来表示,即每秒钟传输的二进制位数,单位为比特每秒(bit/s)。
波特率
容易与比特率混淆的概念是“波特率”(Baudrate),它表示每秒钟传输了多少个码元。而码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。
如常见的通讯传输中,用 0V 表示数字 0,5V 表示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通讯传输中,有 0V、2V、4V 以及 6V 分别表示二进制数 00、01、10、11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。
因为很多常见的通讯中一个码元都是表示两种状态,人们常常直接以波特率来表示比特率。
常见的波特率为4800、9600、115200 等。
在数字通信中,每个码元可以代表1个或多个比特。因此,数据传输速率与波特率的关系如下:
数据传输速率 = 波特率 × 每个码元所包含的比特数
。
- 如果每个波特内传输一个比特,那么波特率和比特率相等。
例如,如果波特率是1200波特,那么比特率就是1200 bps。
- 如果每个波特内传输两个比特,那么波特率和比特率就不相等。
例如,如果波特率是1200波特,而每个波特内传输两个比特,那么比特率就是2400 bps。
串口通信
串口通信指的是通过串行通信接口进行数据传输的通信方式,通常用于短距离、低速率的数据传输。
串口通信可以使用不同的串行通信协议和接口,常见的串口通信协议有UART、USART、RS-232、RS-485、SPI、I2C等
UART通信
Universal Asynchronous Receiver Transmitter 即 通用异步收发器,是一种通用的串行、异步通信总线 该总线有两条数据线,可以实现全双工的发送和接收 在嵌入式系统中常用于主机与辅助设备之间的通信
同步通信和异步通信的最大区别在于传输数据时是否需要时钟信号同步
UART的数据帧
举例:发送0x55 二进制:01010101
校验位
串口通信过程中有五种校验方式:奇校验(ODD)、偶校验(EVEN),1校验(MARK)、 0校验(SPACE),无校验(NONE)
奇校验(ODD):校验位被设置为确保数据位中1的总数为奇数。例如,数据位中的“1”总数为奇数,校验位被设置为低电平(拉低为0),否则设置为高电平。故而,如果接收方统计发现“1”总数为偶数,且校验是低电平,则校验失败,否则成功。
偶校验(Even): 校验位被设置为确保数据位中1的总数为偶数。例如,数据位中的“1”总数为偶数,校验位被设置为低电平(拉低为0),否则设置为高电平。故而,如果接收方统计发现“1”总数为奇数,且校验是低电平,则校验失败,否则成功。
1校验(MARK):1校验要求校验位始终为逻辑1,适用于古老的通讯设备。
0校验(SPACE):0校验要求校验位始终为逻辑0,也适用于古老的通讯设备。
无校验(NONE):不使用任何校验位,数据直接传输
注:部分ARM系列库要把发送的BIT长度word length
设置为9,才能正确发送校验位。
发送01和0011问题
发送01和0011,接收端如何来确定和区分
波特率
波特率决定了接收数据的速度,也就是每个电平持续的时间
累计误差消除
发送和接收的时候使用的是不同的时钟,所以即便是使用相同的波特率,也有可能因为时钟微小的不同步,造成数据的累计误差,解决方案是,UART只能一次性最多发送8bit的数据,然后重新发送,以消除累计误差
UART硬件连接
设置引脚功能的实质是让引脚在芯片内部连接到某一个对应的控制器上
USART
USART(Universal Synchronous Asynchronous Receiver and Transmitter)通用同步异步收发器,是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。
USART支持异步通信,也支持同步通信。一般使用异步通信。
USART在进行通信的时候会按照数据包的形式进行发送,帧格式如图
串口通信是一位一位地传输,每传输一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平),后面由7位或8位数据位组成,接着是一位校验位,最后是停止位。停止位后面是不定长的空闲位,停止位和空闲位都规定为高电平。
串口原理图
在开发板上默认使用的串口是串口1,有两根数据线,也就是USART0_TX和USART0_RX。串口引脚和下载引脚连接在同一个端子上,插上DAPLink就可以进行下载和串口调试。关于串口原理图如图2-1-1所示。
串口驱动流程
把DAPLink连接到开发板的端子上,打开串口调试助手(sscom5.13.1),然后会检测到一个串口。
编写代码,先要配置串口使能,配置波特率、停止位、校验位等参数。然后调用串口发送函数即可发送数据。如使用重定向还需要编写重定向函数,使用printf即可打印输出。
总结
通过本文的介绍,我们对串行通信和并行通信有了更深入的了解。串行通信通过逐位传输数据来实现信息的传输,适用于短距离、低速率的数据传输;而并行通信则是同时传输多个位,速度较快但受干扰影响较大。在串行通信中,常见的串行通信接口有UART、USART、RS-232、RS-485、SPI、I2C等,而波特率和比特率、校验位等参数也是我们在使用串口通信时需要考虑的因素。通过理解这些概念和原理,可以更好地应用于实际的通信场景中,提高通信效率和可靠性。愿本文对您加深对通信技术的理解有所帮助。