1. 串行通信和并行通信
1.1 串行通信
串行通信是一种数据传输的方式,它是指将数据按照一位一位的顺序依次发送和接收,常用于远距离通信、嵌入式系统和低带宽传输场景下。串行通信相对于并行通信而言,只需要传输一条数据线,相对简单、可靠,但传输速率较慢。
1.2 并行通信
并行通信是指在计算机系统中同时进行多个任务或操作的一种通信方式,可以提高计算机系统的性能和效率,加快任务的执行速度,常应用于多种场景,如多线程编程、分布式计算和高性能计算等。
2. 常用串行通信接口
3. 同步通信和异步通信
同步通信需要时钟信号,异步通信不需要时钟信号
4. 单工和双工
4.1 单工通信
在单工通信中,信息只能在一方向上传输。只有发送方可以发送信息,而接收方只能接收信息,不能发送信息。
4.2 双工通信
在双工通信中,每个通信实体都可以同时发送和接收数据,而不需要等待对方的响应或者轮流传输数据。双工通信可以分为半双工和全双工两种模式。
- 半双工通信是指通信双方可以交替地进行数据传输,但不能同时进行数据传输。在半双工通信中,一方发送数据时,另一方必须等待接收完成后才能发送数据。
- 全双工通信是指通信双方可以同时进行数据的发送和接收。在全双工通信中,一方可以发送数据的同时,另一方也可以同时发送数据,实现双方的同时通信。
5. 波特率和比特率
5.1 比特率
衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率(Bitrate)来表示,即每秒钟传输的二进制位数,单位为比特每秒(bit/s)。
5.2 波特率
容易与比特率混淆的概念是“波特率”(Baudrate),它表示每秒钟传输了多少个码元;而码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。因为很多常见的通讯中一个码元都是表示两种状态,所以常常直接以波特率来表示比特率,常见的波特率为4800、9600、115200 等。
在数字通信中,每个码元可以代表1个或多个比特。因此,数据传输速率与波特率的关系如下:
数据传输速率 = 波特率 × 每个码元所包含的比特数
。- 如果每个波特内传输一个比特,那么波特率和比特率相等(例如,如果波特率是1200波特,那么比特率就是1200 bps)。
- 如果每个波特内传输两个比特,那么波特率和比特率就不相等(例如,如果波特率是1200波特,而每个波特内传输两个比特,那么比特率就是2400 bps)。
6. 串口通信
串口通信指的是通过串行通信接口进行数据传输的通信方式,通常用于短距离、低速率的数据传输。
串口通信可以使用不同的串行通信协议和接口,常见的串口通信协议有UART、USART、RS-232、RS-485、SPI、I2C等
7. UART通信
Universal Asynchronous Receiver Transmitter 即通用异步收发器,是一种通用的串行、异步通信总线 该总线有两条数据线,可以实现全双工的发送和接收 在嵌入式系统中常用于主机与辅助设备之间的通信(同步通信和异步通信的最大区别在于传输数据时是否需要时钟信号同步)。
7.1 UART的数据帧
举例:发送0x55 二进制:01010101
7.2 校验位
串口通信过程中有五种校验方式:奇校验(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):不使用任何校验位,数据直接传输。
7.3 UART硬件连接
设置引脚功能的实质是让引脚在芯片内部连接到某一个对应的控制器上。
8. USART
USART(Universal Synchronous Asynchronous Receiver and Transmitter)通用同步异步收发器,是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。USART支持异步通信,也支持同步通信。一般使用异步通信。
串口通信是一位一位地传输,每传输一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平),后面由7位或8位数据位组成,接着是一位校验位,最后是停止位。停止位后面是不定长的空闲位,停止位和空闲位都规定为高电平。
9. 串口驱动流程
把DAPLink连接到开发板的端子上,打开串口调试助手(sscom5.13.1),然后会检测到一个串口。
编写代码,先要配置串口使能,配置波特率、停止位、校验位等参数。然后调用串口发送函数即可发送数据。如使用重定向还需要编写重定向函数,使用printf即可打印输出。