SPI协议功能要点?
2021-07-04

一、SPI只有主模式和从模式之分

没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据。

你要收一个数据必须也要先发一个数据。

二、SPI的相位和极性

CPOL和CPHA,分别都可以是0或时1,对应的四种组合就是:

Mode 0 CPOL=0, CPHA=0

Mode 1 CPOL=0, CPHA=1

Mode 2 CPOL=1, CPHA=0

Mode 3 CPOL=1, CPHA=1

其中,关于时钟的极性(Clock Polarity=IDLE state of SCK,就是当SCLK在数发送8个bit比特数据之前和之后的状态)和相位:

CPOL=0表示空闲时时钟线为低电平(导致一个时钟周期的第一个跳变沿是上升沿)

CPOL=1表示空闲时时钟线为高电平(导致一个时钟周期的第一个跳变沿是下降沿)

CPHA=0表示在一个时钟周期的第一个跳变沿

CPHA=1表示在一个时钟周期的第二个跳变沿

三、软件中如何设置SPI的相位和极性

1、SPI分主设备和从设备,两者通过SPI协议通讯。

2、关于设置SPI的模式,实际上是从设备的模式,决定了主设备的模式。所以要先去搞懂从设备的SPI是何种模式,

然后再将主设备的SPI的模式,设置和从设备相同的模式,即可正常通讯。

3、对于从设备的SPI是什么模式,有两种:

(1)固定的,有SPI从设备硬件决定的

SPI从设备,具体是什么模式,相关的datasheet中会有描述,需要自己去datasheet中找到相关的描述,即:

关于SPI从设备,在空闲的时候,是高电平还是低电平,即决定了CPOL是0还是1;

然后再找到关于设备是在上升沿还是下降沿去采样数据,这样就是,在定了CPOL的值的前提下,对应着可以

推算出CPHA是0还是1了。

(2)可配置的,由软件自己设定

从设备也是一个SPI控制器,4种模式都支持,此时只要自己设置为某种模式即可。

然后知道了从设备的模式后,再去将SPI主设备的模式,设置为和从设备模式一样,即可。

对于如何配置SPI的CPOL和CPHA的话,不多细说,多数都是直接去写对应的SPI控制器中对应寄存器中的CPOL和CPHA

那两位,写0或写1即可。

四、SPI NOR实例————W25Q128

1.容量:

16MB(65536个page,每个page 256字节)

2.写入特性,写入单位page():

(注意:写入单位是page,并不是说,一次一定要写256字节,而是一次最多可以写256字节。比如你只需要写10个字

节,你先计算好你写入地址在哪个page,以及page内部偏移值,然后,给flash发送写page命令,然后把要写入的地

址发给flash,最后把要写入的数据按字节发给FLASH就行了)

3.擦除特性,擦除单位sector/32KB-block/64KB-block/整片擦除:

(1)4KB大小sector擦除:一次擦除16个page(4KB sector)

(2)32KB大小block擦除:一次擦除128个page(32KB block)

(3)64KB大小block擦除:一次擦除256个page(64KB block)

(4)整片擦除

4.写入之前最好先擦除一下,让被写入单元值为0xFF

大家都在看
本站系本网编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容!本站文章版权归原作者所有,内容为作者个人观点。本站只提供参考并不构成任何投资及应用建议。本站拥有对此声明的最终解释权。