头图

SPI数据传输协议 

一、同步串行全双工

同步通信:双方在同一个时钟信号的控制下,进行数据的接收和发送,来一个时钟,发送端发送,接收端接收

异步通信:异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的

串行:就是一根数据线,类似于单车道 

并行:就是多车道了一般是8根数据线 类比于8车道

全双工是指host(主设备)与外围从设备之间的发送线和接受线各自独立,发送数据的同时也能够接收数据,两者同步进行。全双工模式可以保证主从同步读写比特流。

当数据流量不大,双向传输的频率较低时,建议采用半双工模式,它的优点是节省传输资源,传输效率高,缺点是单向传输,不能同时进行双向数据传输。当数据流量大,双向传输的频率较高时,建议采用全双工模式,它的优点是可以双向传输数据,支持实时性高的应用,缺点是传输资源受限。

SPI是串行外设接口(Serial Peripheral Interface)的缩写。是Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。

下图为一主多从的模式
image.png

image.png
image.png

SPI Flash的本质就是使用SPI的协议去对Flash 存储器进行各种读写操作。

二、SPI协议的整个工作过程如下:

当CS# go low之后,输入到从器件的CLK开始有效,全双工的传输过程开始。主器件在信号线SI上输入数据并被从器件读取,从器件输出数据到SO信号线并被主器件读取。当CS# go high之后,从器件不再被选中,结束整个传输过程。在传输的时候,不管是输入输出,通常都是以一个byte的最高有效位(MSB)开始传输。


image.png
SPI总线支持mode 0和3。这里的mode 0和3是指时钟模式,SPI协议通常有4种模式,可以通过CPOL(时钟极性 Clock Polarity)和CPHA(时钟相位 Clock Phase)来定义:

时钟极性和相位共同决定读取数据的方式,比如信号上升沿读取数据还是信号下降沿读取数据;

模式0(CPOL=0, CPHA=0):时钟空闲低电平,数据在上升沿采样,下降沿切换。

模式3(CPOL=1, CPHA=1):时钟空闲高电平,数据在上升沿采样,下降沿切换。

以下是MODE0 下仿真结果
image.png

image.png
image.png
image.png
image.png

三、整体的传输大概可以分为以下几个过程:

Step1:主机先将片选CS信号拉低,这样保证开始接收数据

Step2:当接收端检测到时钟的边沿信号时,它将立即读取数据线上的信号,这样就得到了一位数据(1bit);

Step3:主机发送到从机时:主机产生相应的时钟信号,然后数据一位一位地将从MOSI信号线上进行发送到从机;

Step4:主机接收从机数据:如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号,并且从机会将数据通过MISO信号线发送;


热心肠的保温杯
1 声望0 粉丝

许继电气软件开发工程师,专注于智能电网与能源管理