一图流
总线
概念
连接多个部件的信息传输线,是各部件共享的传输介质
类型
片内总线:连接处理器内核和外设的总线,在芯片内部
片外总线:连接芯片和其他芯片或者模块的总线
总线的通信
总线通信的方式
串行通信
-
数据按位顺序传输,同一时刻只能收或发1bit位信息,因此只用1根信号线
-
优点:占用引脚资源少
-
缺点:速度相对较慢
并行通信
-
数据各个位同时传输,同一时刻可以收或发多个bit位的信息,因此需要多根信号线
-
优点:速度快
-
缺点:占用引脚资源多
通信的类型
-
单工:只能收或者只能发,只有一条单向管道
-
半双工:可以收,也可以发,但不能同时收发,只有一条双向管道
-
全双工:同一时刻既接收,又发送,有两条相反的管道
同步通信和异步通信
同步通信
一般情况下,同步通信指的是通信双方根据同步信号进行通信的方式。比如通信双方会存在一个时钟线用于传输时钟信号,大家根据时钟信号的变化进行通信
异步通信
指数据传输速度匹配依赖于通信双方自己独立的系统 时钟,大家约定好通信的速度。异步通信不需要同步信号,但是并不是说通信的过程不同步
不同种类的串口有不同的通信类型
-
UART属于串行全双工异步通信
-
IIC串行半双工同步通信
-
SPI串行全双工同步通信
UART
概念
UART(Universal asynchronous receiver/transmitter):通用异步接收发送器
串口用于两个模块之间进行异步全双工串行通信
特点
两个芯片各有一个RXD、一个TXD、一个GND接口,一个芯片的RXD连接另一个芯片的TXD
RXD:数据接收引脚
TXD:数据发送引脚
GND:接地引脚
这抗干扰能力弱,旁边有干扰源就会对收发的电平数据造成干扰,进而导致数据失真
一般适用于一块板子上面的两个芯片之间进行数据传输
由于数异步通信,所以需要再发送数据前先约定传输速度——波特率(bit/s)
串口数据帧格式
由于双方时钟不一样,就算提前约定好了波特率,随着传输数据量的增加,双方数据收发就会累计一定的误差,为了规避这个误差,我们需要对传输收发的数据进行约定,规范好收发的格式来消除误差
数据帧
空闲位:当不进行数据收发时,数据线处于高电平状态
起始位:1bit 低电平 一帧数据传输的开始
数据位:5-8位数据位,进行传输的数据
校验位:1bit 可有可无
奇校验:一帧数据传输后保证数据位和校验位1的个数是一个奇数
X51->0101 0001 此时校验位为0
0X53->0101 0011 此时校验位为1
偶校验:一帧数据传输后保证数据位和校验位1的个数是一个偶数
0X51->0101 0001 此时校验位为1
0X53->0101 0011 此时校验位为0
停止位:1-2bit 高电平,一帧数据传输结束的标志,在停止位器件重新校准时钟,清除累计的误差
一般数据格式常设置为8N1:8bit数据位,没有校验位,1bit停止位
IIC
概念
I2C总线是PHLIPS公司在八十年代初推出的一种串行的半双工总线,主要用于连接整体电路
I2C总线为两线制,只有两根双向信号线。一根是数据线SDA,另一根是 时钟线SCL
IIC支持多主机多从机通信和一主机多从机通信
硬件连线
SCL:时钟线,用于传输时钟信号
SDA:数据线,用于传输数据
寻找从机
每一个设备都会有一个自己的从机地址,这个从机地址就是设备的ID号
主机在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/W),用“0”表示主机发送数据(W),“1”表示主机接收数据(R)
总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己被主机寻址,根据R/W位将自己定为发送器或接收器
信号
概念
iic总线是一种同步通信总线,也就表示通信双方的通信过程要在各种时钟信号的作用下实现:起始信号、终止信号、应答信号、非应答信号、数据接收和发送信号
起始信号
时钟线为高电平时,数据线由高电平变成低电平
终止信号
时钟线为高电平时,数据线由低电平变成高电平
数据接收和发送
-
时钟信号为高电平期间,数据线上的数据必须保持稳定
-
只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化
-
一个时钟周期,接收方和发送发完成了一位数据的接收和发送
应答和非应答
-
发送方在发送完数据,接收方都会反馈一个反馈信号,这个信号就是应答信号和非应答信号
-
应答信号:接收方收到数据,继续进行下一个8bit数据的接收
-
非应答信号:接收方接收到数据,不进行下一次数据的接收
IIC主机和从机通信过程
主机给从机发送多个字节的数据
主机发送起始信号
主机发送7bit从机地址+1bit写标志
从机回应应答
主机发送8bit从机寄存器地址
从机回应应答
主机发送8bit数据
从机应答
主机再次发送8bit数据
从机应答
。。。。
主机发送终止信号
主机读取从机多个字节的数据
主机发送起始信号
主机发送7bit从机地址+1bit写标志
从机回应应答
主机发送8bit从机寄存器地址
从机回应应答
主机发起重复起始信号
主机发送7bit从机地址+1bit读标志
从机回应应答信号
从机发送8bit数据
主机回应应答信号
从机发送8bit数据
主机回应应答
。。。。
主机回应非应答信号
主机发起终止信号
iic总线通信的速率
100K
400K
1M
3.4M
SPI
概念
SPI(Serial Peripheral interface)串行外围设备接口
是一种高速的,全双工,同步的通信总线
在芯片的管脚上只占用四根线,节约了芯片的管脚,为PCB的布局上节省空间,提供方便
SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间,OLED 数码管、LCD
SPI总线支持一主机多从机通信
接线方式
基本接线方式
MISO:数据输入/输出引脚,用于从模式发送数据,主模式接收数据
MOSI:数据输入/输出引脚,用于主模式发送数据,从模式接收数据
SCK:串口时钟,作为主设备的输出,从设备的输入
CSN:从设备选择,用来选择主/从设备
四线制
-
一主机多从机时会使用CSN来选择从机
三线制
-
一主机一从机时可以去掉CSN
时序分析
时钟极性
-
时钟极性为1:空闲状态下时钟线保持高电平
-
时钟极性为0:空闲状态下时钟线保持低电平
时钟相位
-
以时钟极性为起始标记的每一个周期内,在第一次变化的为0,第二次变化的为1
-
时钟相位为1:在时钟后沿进行数据采样,时钟前沿进行数据输出
-
时钟相位为0:在时钟前沿进行数据采样,时钟后沿进行数据输出