uart串口通信
1.串行,全双工,异步通讯
2.空闲时,RXD和TXD默认高电平
3.数据起始位为低电平
4.串口发送数据过程中,低位在前,高位在后
5.串口数据一般为8位
6.串口可选择是否开启数据校验,校验位:单个字节数据校验,对数据中高低电平数据个数进行计数,常见的有奇偶校验
7.停止位:高电平,一般有1,1.5,2位
8.串口数据位数或者叫码元为固定
9.串口传输速率:波特率,表示1秒传输数据位数。
相同电平情况下,如低电平高电平。通过掐时间确认数据为01还是0011。
10.累计误差消除:
两个单片机通讯,波特率可能会存在一定误差,如果单个数据字节长度过长,会导致误差累加,严重时会导致数据错误。所以规定串口传送的字符5-8位均可
11.硬件连接:交叉连接,单片机A的txd与单片机B的rxd相连,单片机A的rxd与单片机B的txd相连。
UART相关问题
1. 为什么uart属于异步通信
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)属于异步通信,原因在于其数据传输方式不依赖于统一的时钟信号来同步发送方和接收方。以下是具体原因:
- 无共享时钟信号
UART通信中,发送方和接收方没有共享的时钟信号来同步数据传输。相反,双方依靠预定义的波特率(Baud Rate)来确定数据传输速度。接收方通过检测起始位和停止位来解析数据,而不是依赖外部时钟。 - 起始位和停止位
UART通过起始位和停止位来标识数据的开始和结束:
- 起始位:标志数据帧的开始,接收方检测到起始位后开始读取数据。
- 停止位:标志数据帧的结束,接收方知道数据已传输完毕。
这种机制使UART无需外部时钟信号即可实现数据同步。
-
波特率匹配
UART通信要求发送方和接收方的波特率一致,但双方不需要实时同步。接收方根据起始位和波特率计算每个数据位的采样时间,从而实现数据的正确解析。 -
非阻塞通信
UART通信是异步的,发送方发送数据后无需等待接收方的即时响应,可以继续执行其他任务。接收方在数据到达时处理数据,双方无需同时在线或实时同步。 -
灵活性
UART通信适用于多种场景,如串口通信、调试接口等,因其无需复杂的时钟同步机制,硬件实现简单且成本低。
总结
UART属于异步通信,因为它:
- 不依赖共享时钟信号;
- 通过起始位和停止位实现数据同步;
- 双方只需波特率一致,无需实时同步;
- 发送方发送数据后无需等待接收方响应。
这些特性使UART成为一种简单、灵活且广泛应用的异步通信协议。
IIC总线
- 串行、半双工、同步通信
- 用于近距离、低速的芯片通信
- 有两根双向的信号线(一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步)
- IIC硬件结构简单,成本较低
- 应用场合:一个电路板上几个芯片需要简单的传输数据的时候用I2C
I2C其它问题
1.I2C是同步还是异步
I2C(Inter-Integrated Circuit)是一种同步通信协议。以下是关键点:
-
同步通信:I2C使用时钟信号(SCL)来同步数据传输,发送方和接收方依赖此时钟信号进行数据交换。
-
主从架构:I2C采用主从模式,主设备生成时钟信号并控制通信,从设备响应主设备的指令。
-
信号线:
- SCL(Serial Clock Line):传输时钟信号。
- SDA(Serial Data Line):传输数据。
-
通信过程:主设备通过SCL控制通信时序,SDA在时钟信号的控制下传输数据。
总结:I2C是同步通信协议,依赖时钟信号实现数据传输。