秉火429笔记之十七 SPI--操作FLASH

这篇博客详细介绍了STM32的SPI协议特性和架构,包括通讯引脚、时钟控制逻辑和数据控制逻辑。内容涵盖SPI协议概述、STM32 SPI外设功能、通信过程、硬件设计和软件设计,特别强调了STM32 SPI的全双工同步传输、波特率控制及数据传输流程。
摘要由CSDN通过智能技术生成

目录

1. SPI协议概述

2. STM32 SPI特性及架构

2.1 SPI外设简介

2.2 STM32的SPI架构剖析

2.2.1 通讯引脚

2.2.2 时钟控制逻辑

2.2.3 数据控制逻辑

3. 通信过程

4. 硬件设计

5. 软件设计


1. SPI协议概述

关于SPI协议不做赘述,见详解。

https://blog.csdn.net/XieWinter/article/details/94738361

2. STM32 SPI特性及架构

STM32芯片也集成了专门用于SPI协议通讯的外设。

2.1 SPI外设简介

STM32的SPI外设可用作通讯的主机及从机,支持最高的SCK时钟频率为fpclk/2 (STM32F429型号的芯片默认fpclk1为90MHz,fpclk2为45MHz),完全支持SPI协议的4种模式,数据帧长度可设置为8位或16位,可设置数据MSB先行或LSB先行。

双线双工模式: 通常使用

双线单向模式:MOSI/MISO数据线向一个方向传输数据,可以加快一倍的速度

单线模式:半双工

● 基于三条线的全双工同步传输

● 基于双线的单工同步传输,其中一条可作为双向数据线

● 8 位或 16 位传输帧格式选择

● 主模式或从模式操作

● 多主模式功能

● 8 个主模式波特率预分频器(最大值为 fPCLK/2)

● 从模式频率(最大值为 fPCLK/2)

● 对于主模式和从模式都可实现更快的通信

● 对于主模式和从模式都可通过硬件或软件进行 NSS 管理:动态切换主/从操作

● 可编程的时钟极性和相位

● 可编程的数据顺序,最先移位 MSB 或 LSB

● 可触发中断的专用发送和接收标志

● SPI 总线忙状态标志

● SPI TI 模式

● 用于确保可靠通信的硬件 CRC 功能:

       — 在发送模式下可将 CRC 值作为最后一个字节发送

      — 根据收到的最后一个字节自动进行 CRC 错误校验

● 可触发中断的主模式故障、上溢和 CRC 错误标志

● 具有 DMA 功能的 1 字节发送和接收缓冲器:发送和接收请求

2.2 STM32的SPI架构剖析

 

2.2.1 通讯引脚

SPI的所有硬件架构都从图 中左侧MOSI、MISO、SCK及NSS线展开的。

处于不同外设总线上的SPI,最高通信速率有所差异。其中SPI1、SPI4、SPI5、SPI6是APB2上的设备,最高通信速率达45Mbtis/s,SPI2、SPI3是APB1上的设备,最高通信速率为22.5Mbits/s。

2.2.2 时钟控制逻辑

SCK线的时钟信号,由波特率发生器根据“控制寄存器CR1”中的BR[0:2]位控制,该位是对fpclk时钟的分频因子,对fpclk的分频结果就是SCK引脚的输出时钟频率。

2.2.3 数据控制逻辑

SPI的MOSI及MISO都连接到数据移位寄存器上,数据移位寄存器的数据来源及目标接收、发送缓冲区以及MISO、MOSI线。

通过写SPI的“数据寄存器DR”把数据填充到发送缓冲区中,通讯读“数据寄存器DR”,可以获取接收缓冲区中的内容。

其中数据帧长度,可以通过“控制寄存器CR1”的“DFF位”配置成8位及16位模式;配置“LSBFIRST位”可选择MSB先行还是LSB先行。

3. 通信过程

 主模式收发流程及事件说明如下:

(1) 控制NSS信号线,产生起始信号(图中没有画出);

(2) 把要发送的数据写入到“数据寄存器DR”中,该数据会被存储到发送缓冲区;

(3) 通讯开始,SCK时钟开始运行。MOSI把发送缓冲区中的数据一位一位地传输出去;MISO则把数据一位一位地存储进接收缓冲区中;

(4) 当发送完一帧数据的时候,“状态寄存器SR”中的“TXE标志位”会被置1,表示传输完一帧,发送缓冲区已空;类似地,当接收完一帧数据的时候,“RXNE标志位”会被置1,表示传输完一帧,接收缓冲区非空;

(5) 等待到“TXE标志位”为1时,若还要继续发送数据,则再次往“数据寄存器DR”写入数据即可;等待到“RXNE标志位”为1时,通过读取“数据寄存器DR”可以获取接收缓冲区中的内容。

4. 硬件设计

FLASH芯片中还有WP和HOLD引脚。WP引脚可控制写保护功能,当该引脚为低电平时,禁止写入数据。我们直接接电源,不使用写保护功能。HOLD引脚可用于暂停通讯,该引脚为低电平时,通讯暂停,数据输出引脚输出高阻抗状态,时钟和数据输入引脚无效 。详情见芯片数据手册

“dummy”指该处可为任意数据,

5. 软件设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值