硬件_通讯总线
通讯总线
USART:
串行异步全双工
协议:
数据包:
写: 起始位 + 数据位 + 校验位 + 停止位
读:
起始位:先发出一个逻辑0的信号,表示传输数据的开始 (0)
数据位:标准的数据位可以是5、7、8位,从最低位开始传输
校验位:奇偶校验和CRC校验
停止位:数据结束的标志,可以是1位、1.5位、2位的高电平
空闲位:处于逻辑1的状态,表示当前线路上无数据传输 (1)
RS232: 串行数据通信的接口标准
1. CD ← Carrier Detect 载波检测
2. RXD ← Receive Data 接收数据
3. TXD → Transmit Data 发送数据
4. DTR → Data Terminal Ready数据终端就绪
5. GND — System Ground 系统接地
6. DSR ← Data Set Ready 数据设备就绪
7. RTS → Request To Send 请求发送
8. CTS ← Clear To Send 允许发送
9. RI → 提示信号
RS-232是为点对点(即只用一对收、发设备)通讯而设计的,实现点对点的通信方式;
RS-232串行常用速率有300 1200 9600 57600等 。
由于发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,
其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而
设计的,其驱动器负载为3~7kΩ。所以RS-232适合本地设备之间的通信.
RS485:
RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,多采用的是两线制接线方式,
这种接线方式为总线式拓扑结构,在同一总线上最多可以挂接32个节点。
波特率&&比特率
波特率可以被理解为一个设备在一秒钟内发送(或接收)了多少码元的数据,以bit为单位
串口传输速率为9600bps,每秒可传输多少字节?
起始位:1 数据位:8 停止位:1 校验位:0
传输1字节数据,需要传输10bit,因此:
9600 ÷ 10 = 960Byte
即(常规)串口9600波特率每秒传输960字节。(1K都不到,太慢了!!)
比特率:每秒传输的位数
代码示例:
I2C:
串行同步半双工
协议:
写:
读:
写: 起始—从机地址—应答—寄存器址—应答———发送数据—应答—校验信号—应答—停止
读: 起始=从机地址= 应答—寄存器址—应答———读取数据—应答—校验信号—应答—停止
起始终止:
读取写入:
应答不答:
从设备:
由IIC地址决定,8位地址,减去1位广播地址,是7位地址,2^7=128,但是地址0x00不用,那就是127个地址, 所以理论上可以挂127个从器件。每个设备都有它的设备地址。
代码示例:https://www.cnblogs.com/panda-w/p/14718506.html
SPI:
串行同步全双工
协议:
SPI通信模式:
CPOL(时钟极性):0表示SCLK=0时处于空闲态,1则反之;
CPHA(时钟相位):0表示数据采样是在奇数边沿发送在偶数边沿,1则反之;
Mode0:CPOL=0,CPHA=0
(空闲时,SCLK为低电平,数据采样在奇数边沿:
SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。)
Mode1:CPOL=0,CPHA=1
(空闲时,SCLK为低电平,数据发送在奇数边沿:
SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。)
Mode2:CPOL=1,CPHA=0
(空闲时,SCLK为高电平,数据采集在奇数边沿:
SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。)
Mode3:CPOL=1,CPHA=1
(空闲时,SCLK为高电平,数据发送在奇数边沿:
SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。)
代码示例:https://www.cnblogs.com/panda-w/p/14718487.html
四线SPI : 串行同步半双工
CLK
SIO
CS
SDC (数据命令标志)
缺点:没有指定的流控制,没有应答机制确认是否接收到数据
CAN:
全称为“Controller Area Network”,即控制器局域网
协议:
I2S:
(Inter-IC Sound Bus)音频数据传输总线
协议:
代码示例:
USB:
引脚1:电源(+5V)
引脚2:接入南桥,传输数据。
引脚3:传输数据。但两个引脚各有不同,是传输信息的高地位不同。
引脚4:地线
协议:
代码示例:
SDIO:
协议:
代码示例: