通信协议——SPI

一、协议介绍

1. 简介

        串行外设接口(Serial Peripheral interface,SPI)是一种总线通信协议,已经广泛应用在众多MCU、存储芯片、电源芯片、LCD中。

2. 信号及接口

信号/接口含义I/O备注
SCK时钟信号主机O,从机I
CS片选信号主机O,从机I
MISO主设备输入,从设备输出信号

主机I,从机O

MOSI主设备输出,从设备输入信号主机O,从机I
D2“四线模式”下第2位数据线I/O部分设备支持四线传输模式
D3“四线模式”下第3位数据线I/O部分设备支持四线传输模式

        SPI主机和从机的信号线连接示意图如下所示:

二、功能介绍

1. SPI模块框图

         SPI时钟信号由外部输入,经过模块内部分频后生成SPI时钟信号。

2. 数据采样格式

        SPI通过CPHA(相位)和CPOL(极性)来确定数据的采样格式,其中CPOL表示时钟在空闲时的状态,CPOL=0时,时钟SCK空闲时为低电平;当CPOL=1时,时钟SCK空闲时为高电平。当CPHA=0时表示在时钟的奇数边沿采样;CPHA=0时表示在时钟的偶数边沿采样。

        SPI总线只能在固定时钟边沿进行数据采样和数据跳变,具体采样格式如下所示:

CPOLCPHA
00上升沿采样,下降沿跳变
01下降沿采样,上升沿跳变
10下降沿采样,上升沿跳变
11上升沿采样,下降沿跳变

         波形示意如下所示:

3. 通信模式

        SPI通信模式:

                            按照数据传输方向分类分为:全双工模式单工模式

                            按照数据传输的线数分类分为:单线模式双线模以及四线模式

        所以SPI通信模式分为:单线全双工模式、双线单工模式、四线单工模式

        (注意:此处的“线”仅代表数据传输线)

3.1 单线全双工模式时序

        单线全双工模式是主从机通信双方可以同时发送和接收数据,每个数据传输方向上只使用一根数据线来发送/接收数据,即主机通过MOSI发送,从机通过MISO发送。

        在SPI数据传输过程中,当发送方把数据准备好后,主机拉低片选信号时主机产生时钟信号,同时,发送方发送准备好的数据。当通信完成后,主机会拉高片选结束通信。

        通常,MCU会支持用户配置两个延时:

                                                                        ①片选拉低后延时产生时钟

                                                                        ②通信结束后延时拉高片选

        单线全双工模式时序图如下:

3.2 双线单工模式时序(部分MCU支持)

        双线单工模式是指,在同一时刻的同一方向上,有两根数据线进行数据传输,在一个时钟周期,MOSI发送数据的第0位,MISO发送数据的第1位。如下图所示:

3.3 四线单工模式时序(部分MCU支持)

         四线单工模式是指,在同一时刻的同一方向上,有四根数据线进行数据传输,需要额外使用两根线。在一个时钟周期,MOSI发送数据的第0位,MISO发送数据的第1位,C2发送数据的第2位,C3发送数据的第3位。

4.  NSSP模式

        该模式是在两个连续的数据帧传输间将生成NSS脉冲,即只有在数据传输期间片选信号才有效。对大多数的SPI应用,基本上都是传输开始把NSS拉低,传输完成再拉高。对串行输入并行输出的移位寄存器,数据接口与时钟接口先发送串行数据到移位寄存器,然后NSSP脉冲发出,移位寄存器才会把数据发出去并重新锁存。

三、应用流程

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]中提供的信息,可以使用STM32的HAL库来模拟SPI方式驱动W25Q128存储芯片。首先需要进行模拟SPI方式的IO配置,然后使用相应的驱动代码来实现功能。 W25Q128是一款SPI接口的NOR Flash芯片,具有128 Mbit的存储空间,相当于16M字节。NOR Flash是一种常用的用于存储数据的半导体器件,具有容量大、可重复擦写、按扇区/块擦除、掉电后数据可继续保存的特性。Flash的物理特性是只能写0,不能直接写1,写1需要进行擦除操作。 根据引用\[3\]中的实验,可以通过硬件接线将W25Q128模块与STM32连接起来,其中VCC接3.3V,CS接PA4,CLK接PA5,DO接PA6,DI接PA7。然后可以使用CubeMX进行相应的配置。 要获取W25Q128的ID,可以使用SPI通信协议来读取芯片的ID寄存器。具体的代码实现可以参考引用\[1\]中提供的驱动代码。 #### 引用[.reference_title] - *1* [STM32CubeMX | STM32使用HAL库模拟SPI方式驱动W25Q128存芯片](https://blog.csdn.net/qq153471503/article/details/106895933)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [STM32之SPI和W25Q128](https://blog.csdn.net/weixin_49001476/article/details/130909856)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值