目录

一.SPI简介

二.SPI协议

物理层:

协议层:

1.SPI的基本通讯过程

2.通信模式

三.STM32中的SPI

SPI框图:

1.通信引脚

2.时钟控制逻辑

3.数据控制逻辑

4.整体控制逻辑

四.CubeMX配置SPI

1.配置时钟源

2.SPI配置

3.时钟源设置

4.项目文件设置


一.SPI简介

SPI(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工通信,被广泛应用在设备与MCU之间要求通信频率高的场合

二.SPI协议

物理层:

主机MCU与从机通过四条线连接,其中SCK、MOSI、MISO三条线共用,SS为从设备选择信号线,使SPI可以支持多设备。

NSS:片选信号线,每个从设备都有一条独立片选信号线,独占主机的一个引脚,有多少个从设备就有多少片选信号线。当主机要选定从设备时,将该设备的SS线电平拉低,即片选有效,接下来主机开始与被选中的从机通信,当主机将SS线电平拉高结束通信。
SCK:时钟信号线,用于通讯数据同步。由通讯主机产生,并决定通讯频率。
MOSI:master output,slave input主设备输出从设备输入引脚,主机通过这条线向从机发送数据。
MISO:master input,slave output主设备输入从设备输出引脚,从机通过这条线向主机发送数据。

MOSI与MISO两条信号线使SPI可以实现全双工通信,如果只需要单向通信则可以少使用一条信号线。

协议层:

SPI协议层定义了通讯的起始信号和停止信号、数据有效性、时钟同步等环节。

1.SPI的基本通讯过程

①:片选信号线选择从设备,通讯开始。

②④:SCK触发信号,MOSI与MISO变化等待采样。

③⑤:SCK采样信号,主机与从机分别对MISO、MOSI信号进行采集。

多次的触发、采样组成SPI数据传输过程。

⑥:片选信号线停止信号,通信停止。

2.通信模式

SPI有四种通讯模式,他们的主要依靠总线空闲时SCK的时钟状态和数据采样时刻来区别。

时钟极性CPOL:CPOL是指NSS总线空闲时SCK的电平信号,如果SCK为高电平,CPOL=1;SCK为低电平,CPOL=0。如上方时序图中CPOL=0.

时钟相位CPHA:CPHA是指数据的采样时刻,SCK的信号可以看作方波,CPHA=0时会在SCK的奇数边沿采样;CPHA=1时会在SCK的偶数边沿采样。如上方时序图中CPHA=1.

三.STM32中的SPI

SPI框图:

1.通信引脚

STM32的多个SPI被引出到不同引脚上,使用时必须配置指定引脚。

2.时钟控制逻辑

SCK时钟信号线由波特率发生器根据“控制寄存器 CR1”中的 BR[0:2]位控制,对fpclk分频后的频率就是SCK的时钟频率,其中的 fpclk频率是指 SPI 所在的 APB 总线频率,APB1 为 fpclk1,APB2 为 fpckl2。

3.数据控制逻辑

SPI的MOSI及MISO都连接到数据移位寄存器上 ,向外发送数据时,数据寄存器会以发送缓冲区为数据源,把数据一位一位地发送出去;接收数据时,数据移位寄存器将数据线采样到的数据一位一位地存储到接收缓冲区中。通过写SPI数据寄存器(SPI_DR)可以将数据存到填充到发送 F 缓冲区中,通过读SPI数据寄存器(SPI_DR)可以获取接收缓冲区中的内容。其中数据帧长度可以通过控制寄存器( SPI_CR1)的DFF位配置成 8 位及 16 位模式;配置 LSBFIRST 位可选择 MSB 先行还是 LSB 先行。

4.整体控制逻辑

整体控制逻辑负责协调整个 SPI 外设,控制逻辑的工作模式根据我们配置的 控制存器(CR1/CR2) 的参数而改变。在外设工作时,控制逻辑会根据外设的工作状态修改 状态寄存器(SR),我们只要读取状态寄存器相关的寄存器位,就可以了解 SPI 的工作状态了

四.CubeMX配置SPI

1.配置时钟源

设置高速外部时钟HSE 选择外部时钟源

2.SPI配置

这里选择全双工模式,不启用硬件NSS

选择数据格式(8位/16位、高位优先/低位优先) 、时钟极性、时钟相位

配置引脚复用

3.时钟源设置

fpclk设置为72mHz

4.项目文件设置

然后点击GENERATE CODE 创建工程即可。

STM32 SPI介绍及CubeMX配置相关推荐

  1. stm32 spi nss硬件模式配置参考程序

    By: Ailson Jack Date: 2020.11.27 个人博客:http://www.only2fire.com/ 本文在我博客的地址是:http://www.only2fire.com/ ...

  2. STM32CubeIDE开发(十), stm32的CRC计算CubeMX配置及HAL库底层实现分析

    一.stm32的CRC 1.1 CRC的简介及MCU关联说明 STM32的CRC(Cyclic Redundancy Check,循环冗余校验)计算单元使用一个固定的多项式发生器,从一个32位的数据字 ...

  3. 【stm32】手把手用cubemx配置血氧传感器(MAX30102)

    一.前言 网上流传血氧传感器的代码有好几个版本,听说这个不准,那个不准的.突然间我看到了一篇好文章,大概是自己用软件测试测量结果是否准确,秀的我头皮发麻呀(外部中断触发),本文将通过他的例程来手把手教 ...

  4. STM32——SPI接口原理与配置

    一.SPI接口简介 SPI是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口,是Motoroal首先在其MC68HCXX系列处理器上定义的. SPI是一种 ...

  5. STM32开发(14)----CubeMX配置ADC

    CubeMX配置ADC 前言 一.什么是ADC? 二.实验过程 1.单通道ADC采集 STM32CubeMX配置 代码实现 2.多通道ADC采样(非DMA) STM32CubeMX配置 代码实现 3. ...

  6. CUBEMX配置STM32实现FTP文件传输以及使用SNTP获取网络时间并写入RTC

    CUBEMX配置STM32实现FTP文件传输以及使用SNTP获取网络时间并写入RTC 引言 FTP代码库的移植 Cubemx配置SNTP以及RTC RTC配置方法 SNTP配置方法 FATFS载入RT ...

  7. 【CubeMX配置STM32驱动超声波模块(HC-SR04)】

    CubeMX配置STM32以驱动超声波模块(HC-SR04) 一.CubeMX配置STM32 1.选择定时器 选择输入捕获模式 预分频设置为71,向上计数,自动重装值65535 然后将名字改为ECHO ...

  8. CubeMX配置STM32实现httpd服务器CGI功能并使用网页控制STM32单片机(四)

    CubeMX配置STM32实现httpd服务器CGI功能并使用网页控制STM32单片机 引言 CubeMX配置HTTPD的CGI功能 实验过程 发现的问题 总结 引言 在前三篇文章中自己介绍了如何配置 ...

  9. c语言定时器定时1ms程序,STM32 Cubemx 配置定时器定时1mS

    最近才发现原来我把定时器里的配置参数代表的意义给搞混了,这里记录一下,防止以后自己忘记. 以建立一个定时1mS定时器为例: 1.先打开定时器 2.配置好时钟 3.配置定时器设置 重点来了,以前在这里我 ...

最新文章

  1. noip2016前的话[漫谈]
  2. Python脑电数据的Epoching处理
  3. gentoo.tw的临时解决方法[转贴]
  4. 北京沙龙报名 | 关于Dubbo开源的那些事儿
  5. netty系列之:在netty中处理CORS
  6. java泛型(三)、通配符的使用
  7. MAVEN集成测试环境搭建
  8. Android开发笔记(四十七)Runnable接口实现多线程
  9. 2020年研究生入学考试991考试大纲
  10. 设置视图IOS开发(97)之自定义视图之使用XIB自定义一个UIView
  11. 1+2+3+...+100 不允许使用乘法和除法,条件分支循环等
  12. CGAffineTransformMakeRotation 实现旋转
  13. 《Attention-based LSTM for Aspect-level Sentiment Classification》阅读笔记
  14. vscode常用emmet语法及快捷键
  15. 12864与24C04的原理和使用方法——以电子密码锁为例(上篇)
  16. 虚拟仿真港珠澳大桥,大湾区综合管理信息系统
  17. Android保存图片到本地或者数据库,并通知相册更新
  18. 时间序列分析中的移动平均趋势剔除法
  19. 最新的AS下载地址,更新及时
  20. 作文未来的计算机医生300字,未来医生的好帮手作文300字

热门文章

  1. _pickle.PicklingError: Can‘t pickle <class ‘__main__.MLPmodel‘>: attribute lookup MLPmodel on __main
  2. Apache Traffic Server 5.3.2及6.2.1的使用初探索
  3. 常见的五种HDMI接口类型,你知道多少?
  4. “GPT+健康医疗”赋能医疗行业“数智化”发展,景联文科技提供高质量医疗数据库
  5. vscode 自动补全插件
  6. 创建Vue项目以及使用
  7. SRAM和DRAM的比较
  8. Numpy 基础经典练习题100道---中英双语
  9. 20180828-B · NFL Stats · ggplot2 geom_tile 热力图 热图 theme guides 字体设置 画图 图例 背景 注释 标签 · R 语言数据可视化 案例 源码
  10. 面向对象软件工程方法学与传统方法学的异同