一、通信方式
1.1 常用通信方式
串行:1-2根数据线,发送接收数据是按照顺序一位一位传输,成本低,适合远距离通信
并行:二进制数据有多少位就有多少根数据线,适合近距离传输数据
1.2 串行通信种类
串行又分为同步通信与异步通信:判断标准为有无时钟线,同步通信有时钟线。
同步通信:数据帧格式:起始位+数据位+校验位+停止位,时钟线控制传输速率
异步通信:数据帧格式:同步字符+数据流,波特率控制传输速率0
单工:在数据传输上,只支持单方向的传输,只能接收或发送
半双工:支持双方向传输,但同一时刻只能接收或发送
全双工:支持双方向传输,在同一时间段即可以发送也可以接收
例:USART——全/半双工——异步串行通信——传输距离15米左右
二、SPI通信
SPI通信协议是一种高速、全/半双工、同步的通信总线
2.1 SPI通信接口
四线制:MOSI(DO):master output slave input 主器件数据输出,从器件数据输入
MISO(DIO):主器件数据输入,从器件数据输出
NSS(CS):片选。从器件使能信号,由主器件控制(片选管脚是一个普通的IO口)。
SCLK/CLK/SCL/SLK:时钟线,产生数据所需的脉冲信号,控制速度(主器件产生)
三线制:MISO:双向数据线(可以接收可以发送)
NSS(CS):片选。从器件使能信号,由主器件控制(片选管脚是一个普通的IO口)。
SCLK/CLK/SCL/SLK:时钟线,产生数据所需的3脉冲信号,控制速度(主器件产生)
2.2 SPI通信物理拓扑
2.3 SPI通信原理
(1)、NSS控制从器件是否被选中,当片选信号为规定的信号时,对从器件的操作才有效
(2)、MISO或MOSI根据时钟线发出的脉冲信号完成数据的传输
时钟的上升沿或者下降沿改变数据,在紧接着的下降沿或者上升沿时被读取。
(4)、SPI通信协议是一个数据交换协议,主器件给从器件一个位的数据,从器件必定会返回一个位的,数据。(写操作时,主器件发送需要写入的数据,从器件必定会返回一个随机值;读操作时,主器件发送一个随机值,从器件返回需要读取的数据)
2.4 SPI通信数据传输方式
SPI通信一共有4种传输方式,根据时钟极性和时钟相位的选择不同而不同
时钟极性(CPOL):时钟极性决定了SPI通信在空闲状态时,时钟线的电平状态
(1)CPOL = 0,SCLK时钟线在空闲状态下为低电平
(2)CPOL = 1,SCLK时钟线在空闲状态下为高电平
时钟相位(CPHA):时钟相位决定了数据线上第一个数据被采集的时钟。
(1)CPHA = 0,MOSI或者MISO数据线上的数据会在SCLK时钟线的“奇数边沿”被采集
(2)CPHA = 1,MOSI或者MISO数据线上的数据会在SCLK时钟线的“偶数边沿”被采集
SPI传输模式 | 时钟极性(CPOL) | 时钟相位(CPHA) | 时钟空闲状态 | 数据采集时刻 |
0 | 0 | 0 | 低电平 | 时钟奇数边沿采集 |
1 | 0 | 1 | 低电平 | 时钟偶数边沿采集 |
2 | 1 | 0 | 高电平 | 时钟奇数边沿采集 |
3 | 1 | 1 | 高电平 | 时钟偶数边沿采集 |