通信接口
•通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统
•通信协议:制定通信的规则,通信双方按照协议规则进行数据收发
| 名称 | 引脚 | 双工 | 时钟 | 电平 | 设备 |
|---|---|---|---|---|---|
| USART | TX(数据发送脚)、RX(数据接收脚) | 全双工 | 异步 | 单端 | 点对点 |
| I2C | SCL(时钟)、SDA(数据) | 半双工 | 同步 | 单端 | 多设备 |
| SPI | SCLK(时钟)、MOSI(主机输出数据脚)、MISO(主机输入数据脚)、CS(片选:指定通信对象) | 全双工 | 同步 | 单端 | 多设备 |
| CAN | CAN_H、CAN_L(差分数据脚,2个脚共同表示一个差分数据) | 半双工 | 异步 | 差分 | 多设备 |
| USB | DP、DM(差分数据脚) | 半双工 | 异步 | 差分 | 点对点 |
| 全双工:通信双方可以同时进行双向通信,一般来说,全双工都有2根通信线 | |||||
| 半双工:可以双向通信,但在一个时刻,只能一方在发送,另一方在接受,一般来说,半双工有一根数据线,(CAN和USB的差分线是组合的一根数据线) | |||||
| 单工:只能由一个设备到另一个设备 |
I2C和SPI有单独的时钟线,所以它们是同步的,接收方可以在时钟信号的指引下采样。
其他的没有时钟线,需要双方约定一个采样频率,还需要加上帧头帧尾进行对齐,也就是异步通信
单端信号的引脚高低电平都是对地的电压差,因此单端信号通信双方必须共地。
差分信号:是靠2个差分引脚的电压差来传输信号,可以不需要GND,差分信号传输速度和距离都很高,性能好
串口通信
•串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信
•单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力
硬件电路
简单双向串口通信有两根通信线(发送端TX和接收端RX)
TX与RX要交叉连接
当只需单向的数据传输时,可以只接一根通信线
当电平标准不一致时,需要加电平转换芯片

电平标准
•电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:
•TTL电平:+3.3V或+5V表示1,0V表示0
•RS232电平:-3-15V表示1,+3+15V表示0
•RS485电平:两线压差+2+6V表示1,-2-6V表示0(差分信号)
串口参数及时序
•波特率:串口通信的速率(每秒传输码元的速率,在二进制下,等于比特率,单位是bit/s)
•起始位:标志一个数据帧的开始,固定为低电平(固定为低电平是因为要打破空闲状态的高电平)
•数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行
•校验位:用于数据验证,根据数据位计算得来
•停止位:用于数据帧间隔,固定为高电平(为下一个起始位做准备)
数据位,低位先行。
例如要发送一个数据0x0F,二进制就是0000 1111
要从低位先反过来发送,即先发送1111,再发送0000
校验位包括奇校验和偶校验。
奇校验:包括校验位在内,会出现奇数个1
偶校验:包括校验位在哪,出现偶数个1
例如,发送0000 1111,总共是4个1,4个0。
目前是4个1,是偶数个,如果使用奇校验,校验位是1,就是0000 1111 1,算上校验位是5个1,是奇数。
奇偶校验的检出率比较低,比如有2位数据同时出错,奇偶特性不变,就校验不出了。更高检出率,需要使用CRC校验。