【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构

这篇具有很好参考价值的文章主要介绍了【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

随着嵌入式系统的迅猛发展,STM32系列微控制器在各种应用中得到广泛应用。在嵌入式系统设计中,串行外设接口(SPI)是一种常见且重要的通信协议。为了更便捷地配置和使用SPI,STMicroelectronics提供了一款强大的工具——STM32 CubeMX。本文将着重介绍STM32 CubeMX中SPI的层次结构、SPI协议以及SPI控制器的结构。


一、SPI 程序层次

1.1 硬件原理图

以 SPI 接口的 Flash 为例,它跟主控的连接图如下:
【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c语言,mcu,51单片机,cubeMX
其中DI为SPI设备发给主控的。SCK为时钟(所以SPI协议是一种同步协议)
主控发出。DO为主控发送给SPI设备的,CS为片选引脚,我们可以通过CS片选引脚来选中不同的SPI设备,可以实现一主多从。

1.2 硬件框图

我们会编写程序通过SPI控制器来操作Flash,SPI来帮我们传递数据。
【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c语言,mcu,51单片机,cubeMX

1.3 软件层次

要操作 Flash,涉及这几个层次的程序:
① 应用程序:我来决定“在哪个位置、读写什么数据”
② Flash 驱动:我知道发送什么格式的 SPI 数据才能读、写、擦除 Flash
③ SPI 控制器驱动(HAL):我可以发送 SPI 数据

【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c语言,mcu,51单片机,cubeMX

二、SPI协议

2.1 硬件连线

SPI(Serial Peripheral Interface,串行外设接口)是由摩托罗拉(Motorola)在
1980 前后提出的一种全双工同步串行通信接口,它用于 MCU 与各种外围设备以串行方式进
行通信以交换信息,通信速度最高可达 25MHz 以上。

SPI 接口主要应用在 EEPROM、FLASH、实时时钟、网络控制器、OLED 显示驱动器、AD
转换器,数字信号处理器、数字信号解码器等设备之间。

SPI 通常由四条线组成,一条主设备输出与从设备输入(Master Output Slave Input,
MOSI),一条主设备输入与从设备输出(Master Input Slave Output,MISO),一条时钟信
号(Serial Clock,SCLK),一条从设备使能选择(Chip Select,CS)。
SPI 可以一个主机连接单个或多个从机,每个从机都使用一个引脚进行片选,物理连
接示意图如图所示:
【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c语言,mcu,51单片机,cubeMX
我们可以通过把SCLK时钟,输入和输出所有从机共用一根线,通过CS引脚(片选引脚)来区分发送和接收哪个设备。
这样就可以使用I2C的一主多从

2.2 如何访问SPI设备

首先,使能片选引脚,在片选引脚有用的期间再去访问
那怎么发数据和读数据呢?
假设主控要发送0x56(二进制:0101 0110)给Flash,时序如下:
【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c语言,mcu,51单片机,cubeMX
首先发送CS片选信号,选中他,在每个时钟周期传输一位。第一个时钟周期传递最高位。然后其他的位就接着传输。

在一开始的时候,这个SCK是高电平还是低电平?
这是可以设置的。(CPOL)

传输数据时,是在第一个跳边缘("跳边缘"通常指的是在数字信号中的变化,特别是从低电平到高电平或从高电平到低电平的变化。)传输数据还是在第二个跳边缘传输数据?
这也是可以设置的(CPHA)

通过上面的CPOL和CPHA的组合,可以组合成4个SPI不同的模式
【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c语言,mcu,51单片机,cubeMX
比如说我们可以组合成下面这个时钟时序图:
【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c语言,mcu,51单片机,cubeMX
当CPHA为1时在第二个跳边缘传输数据
【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c语言,mcu,51单片机,cubeMX
当CPHA为1,CPOL不同时,可以观察到,他们的初始电平分别为高电平和低电平

无论哪种模式,我们都可以同时发送和同时接收8位数据

2.3 SPI 框图

在我们实际编程中我们是不需要这样去控制引脚的
我们编写的程序将会通过内部的SPI控制器去访问外部的SPI设备,这个SPI控制器帮我们实现时序,进行读写。

SPI控制器框图:
【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c语言,mcu,51单片机,cubeMX

  1. 当我们要操作SPI的时候,我们要去设置他的模式:时钟平时是什么电平,在第几个跳边缘传输数据
  2. 我们需要设置时钟的频率
  3. 我们可以去写数据了
    比如上面的框图,他有SPI控制寄存器2,控制寄存器1,我们可以设置控制寄存器1的时钟平时是什么电平,在第几个跳边缘传输数据:
    【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c语言,mcu,51单片机,cubeMX

然后我们就可以通过写/读缓冲区来得到数据了
【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c语言,mcu,51单片机,cubeMX


总结

STM32 CubeMX作为一款强大的开发工具,为嵌入式系统设计提供了便利。在SPI层次结构的配置中,CubeMX提供了直观而灵活的界面,使得用户能够轻松定制SPI通信的各种参数。同时,SPI协议和SPI控制器结构的详细配置也为开发者提供了更高的灵活性和控制权。通过深入了解STM32 CubeMX中SPI的层次结构、协议和控制器结构,开发者能够更加高效地设计和实现复杂的嵌入式系统。文章来源地址https://www.toymoban.com/news/detail-829080.html

到了这里,关于【STM32 CubeMX】SPI层次结构SPI协议与SPI控制器结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CAN总线基础详解以及stm32的CAN控制器

    目录 CAN简介 CAN总线拓扑图 CAN总线特定 CAN应用场景 CAN的物理层 CAN的协议层 CAN数据帧介绍 CAN位时序介绍 数据同步过程 硬件同步 再同步 CAN总线仲裁 stm32的CAN控制器 CAN控制器介绍 CAN控制器模式 CAN控制器框图 接收过滤器 CAN控制器波特率计算 CAN相关寄存器 CAN主控制寄存器(

    2024年01月25日
    浏览(37)
  • STM32F4X SDIO(四) SDIO控制器

    STM32F4X内部有一个SDIO控制器,开发者可以使用这个控制器跟SD卡进行通信,下面就来简单了解一下STM32F4X的SDIO控制器的使用。 下图为STM32F4X的SDIO控制器框图,框图可以分为以下5部分, 适配器寄存器 、 FIFO 、 控制单元 、 命令路径 、 数据路径 。 SDIO控制器时钟 STM32F4X的所有

    2024年02月07日
    浏览(44)
  • 基于 STM32+FPGA 的通用工业控制器设计(一)系统方案设计

    本章首先介绍了现有 PLC 系统的概况,然后提出了本文设计的通用工业控制器的 整体方案架构,分析了硬件和软件上需要实现的功能,最后对各部分功能进行分析并提 出具体的实现方案。 2.1 PLC 系统简介 可编程逻辑控制器( Programmable Logic Controller , PLC )是以微处理器为基

    2024年02月15日
    浏览(44)
  • STM32 FSMC (Flexible static memory controller) 灵活静态内存控制器介绍

    说到STM32的FSMC(Flexible Static Memory Controller),这个玩意儿可真是STM32家族的“多面手”。想象一下,如果STM32是个热衷于DIY的工程师,那FSMC就是他的瑞士军刀,无论是连接SRAM、PSRAM、NOR/NAND Flash还是LCD模块,FSMC都能应对自如,简直就是连接外部存储和记忆界的“桥梁”。 FSM

    2024年02月21日
    浏览(42)
  • 运动控制器设计——基于FreeModbus在STM32F4平台实现ModbusTCP和ModbusRTU

    本文笔者最近的项目是设计一款运动控制器,MCU使用的是STM32F429,要求是通过Modbus TCP协议实现与示教器通讯,并通过ModbusRTU实现与触摸屏通讯。 本文将介绍在STM32F4上实现 ModbusTCP和ModbusRTU通讯 的过程。笔者才疏学浅,如有错误还请指正。 Modbus协议是典型的主-从通讯结构,链

    2024年02月05日
    浏览(41)
  • 基于STM32 ARM+ FPGA 的软体机器人的 CAN总线运动控制器的设计

    针对在软体机器人控制时 , 多电机协同控制过程中难度大 、 通用性差 、 协同性差等缺点 , 设计了基于 ARM 和 FPGA 的软体机器人的控制器局域网络 ( controller area network , CAN ) 总线运动控制器 , 采用 ARMCortex-M4 为内核的 STM32F407 开发板和 AX7102 FPGA 开发板设计一种基于 C

    2024年02月13日
    浏览(48)
  • 开放式高实时高性能PLC控制器解决方案-基于米尔电子STM32MP135

    随着工业数字化进程加速与IT/OT深入融合,不断增加的OT核心数据已经逐步成为工业自动化行业的核心资产,而OT层数据具备高实时、高精度、冗余度高、数据量大等等特点,如何获取更加精准的OT数据对数字化进程起到至关重要的作用,同时随着国内工业控制系统逐步进入中

    2024年03月24日
    浏览(38)
  • 了解SPI总线CAN控制器 MCP2515配置 一文即可

    最近工作中遇到需要6路CAN通信的情况,单片机自带的4路已不满足实际需求,故采用了SPI总线的CAN控制器芯片MCP2515,通过SPI通信的CAN扩展芯片最高可实现 1Mbps 的遵循 CAN 2.0B 的协议通信,配置起来也比较繁琐,故写诞生了这篇文章。本篇中仅对基础功能进行测试,如有疑问可

    2024年02月06日
    浏览(42)
  • 12.5在Linux中编写队列模式的SPI控制器驱动

    在Linux内核中更加推荐使用队列模式的SPI控制器驱动,而且队列模式的SPI控制器驱动也更加简单,只需要在驱动中实现单个spi_transfer的传输即可,将spi_message拆解为spi_transfer、片选GPIO控制、统计信息更新等均由SPI核心去完成。 实现设置SPI总线的函数setup,用于设置SPI总线,若

    2024年01月20日
    浏览(41)
  • 9-基于STM32无刷直流电机控制器的设计仿真与实现(原理图+源码+仿真工程+论文+PPT+参考英文文献)

    包含此题目毕业设计全套资料: 原理图工程文件 原理图截图 仿真模型工程文件 仿真截图 低重复率文档(22642字) 英文文献及翻译 资料链接 1.基于单片机实现无刷直流电机控制器的设计,完成系统芯片选型; 2.确定无刷直流电机控制器的总体设计方案; 3.给出系统的硬件设计

    2024年02月07日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包