当前位置: 首页 > news >正文

带你了解STM32:SPI通信(硬件部分)

目录

1.SPI外设简介

2.SPI框图

SPI核心部分(数据寄存器和移位寄存器结合工作,实现连续数据流)

控制逻辑

3.SPI基本结构

4.主模式全双工连续传输

5.非连续传输

6.软件/硬件波形对比

7.硬件SPI读写W25Q64

第一步:按图接线到面包板上

第二步:复制软件SPI读写W25Q64代码,将底层代码MySPI修改为硬件触发(非连续传输)即可,其他模块无需更改

第三步:SPI模块修改

硬件SPI读写W25Q64完整代码

8.SPI相关库函数


1.SPI外设简介

STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU的负担

可配置8位/16位数据帧(16位数据帧少用)、高位先行/低位先行(SPI基本都是高位先行)

时钟频率: f_PCLK / (2, 4, 8, 16, 32, 64, 128, 256)

支持多主机模型、主或从操作

可精简为半双工/单工通信

支持DMA

兼容I2S协议(音频传输协议)(手册有详细介绍)

STM32F103C8T6 硬件SPI资源:SPI1、SPI2


2.SPI框图

SPI核心部分(数据寄存器和移位寄存器结合工作,实现连续数据流)

LSBFIRST控制位:控制低位先行或者高位先行,给0高位先行,给1低位先行

接收缓冲区(RDR)和发送缓冲区(TDR),就是数据寄存器DR,占用同一个地址

写入数据先在TDR,然后到移位寄存器,移位寄存器在把接收到的数据,放在接收缓冲区里

控制逻辑

波特率发生器:产生SCK时钟,内部主要就是一个分频器,输入时钟是PCLK,72MHz或36MHz,右边的寄存器通过BR0、BR1、BR2控制波特率发生器

寄存器SPE:SPI使能,就是SPI_Cmd函数配置的位

寄存器BR:配置波特率,就是SCK时钟频率

寄存器MSTR:配置主从模式,1是主模式,0是从模式

寄存器CPOL和CPHA:选择SPI的4种模式

状态寄存器TXE:发送寄存器空

状态寄存器RXNE:接受寄存器非空

其余的看手册


3.SPI基本结构


4.主模式全双工连续传输

如果没有极致的追求,一般不使用

这个图使用了模式3演示


5.非连续传输

这个图使用了模式3演示

流程:1.等待TXE为1;2.写入发送的数据至TDR;3.等待RXNE为1;4.读取RDR的数据。之后交换字节,都是重复这4步,将这四步封装为一个函数,调用一次交换一个字节


6.软件/硬件波形对比


7.硬件SPI读写W25Q64

第一步:按图接线到面包板上

第二步:复制软件SPI读写W25Q64代码,将底层代码MySPI修改为硬件触发(非连续传输)即可,其他模块无需更改

第三步:SPI模块修改

初始化步骤:1.开启时钟,开启SPI和GPIO的时钟;2.初始化GPIO口,其中SCK、MOSI是由硬件外设控制的输出信号,所以配置为复用推挽输出,MISO是硬件外设的输入信号,配置为上拉输入,SS是软件控制的输出信号,配置为通用推完输出;3.配置SPI外设,使用一个结构体选参数;4.开关控制

其他不用修改,这里的标志位不用手动清除,自动清除了,但是在STM32的大部分标志位是需要手动清除的

硬件SPI读写W25Q64完整代码


8.SPI相关库函数

恢复缺省配置、初始化

结构体变量初始化

外设使能

中断使能

DMA使能

写DR数据寄存器

读DR数据寄存器

获取标志位、清除标志位、获取中断状态、清除中断挂起位

剩下的都是I2S和一些很少使用的库函数

http://www.dtcms.com/a/486257.html

相关文章:

  • CentOS下安装配置JDK24和tomcat11
  • springboot mybatisplus 配置SQL日志,但是没有日志输出
  • Windows下安装配置JDK24和tomcat11
  • 建个大型网站要多少钱房产信息网网站
  • 贵阳建站公司做的不错的h5高端网站
  • 实践 3:Vim 编辑器的使用
  • UG(NX)转换为3DXML全流程技术指南,附迪威模型网在线方案,适用于技术人员与学生
  • Python爬虫第4课:XPath与lxml高级解析技术
  • 使用 EasyExcel 封装通用 Excel 导出工具类
  • asp.net做网站的流程百度标注平台怎么加入
  • 怎么做同学录的网站电子商务公司简介模板
  • Redis(63)Redis的Lua脚本如何使用?
  • 鸿蒙NEXT输入设备开发指南:从触摸屏到游戏手柄的完整解决方案
  • 鸿蒙Harmony实战开发教学Day2-鸿蒙新项目创建+目录配置!(新手入门指南)
  • Lua中,表、元表、对象、类的解析
  • 在易语言里面做网站做二手物资哪个网站好
  • excel和word文件默认用office打开而不是用wps
  • 万网上传网站企业信用信息查询网官网
  • python学习之路(二)
  • IDEA弹框 Server‘s certificate is not trusted /服务器的证书不可信如何解决
  • ​rxn_yields 仓库介绍(https://rxn4chemistry.github.io/rxn_yields/)​
  • 前端视频课程添加水印,全屏不消失解决方法
  • 湖州网站建设哪家好google云平台 wordpress
  • Spring Boot性能优化详解
  • leetcode 329 矩阵中的最长递增路径
  • 生成模型实战 | 实时任意风格迁移
  • C++ --- 模版初阶
  • 外贸家具网站.net网站开发简介
  • Django 的文档接口
  • blender中对合并的物体重复设置材质,删除重复材质,批量复制材质