STM32(十八):SPI通信

news2024/10/12 16:57:13

SPI通信:

        SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线

        四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)主机输出从机输入、MISO(Master Input Slave Output)、SS(Slave Select)

        同步,全双工

        支持总线挂载多设备(一主多从

硬件电路:

        所有SPI设备的SCK、MOSI、MISO分别连在一起

        主机另外引出多条SS控制线,分别接到各从机的SS引脚

        6输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入

移位示意图:

 SPI时序基本单元

        起始条件:SS从高电平切换到低电平

        终止条件:SS从低电平切换到高电平

        交换一个字节(模式0)

        CPOL=0:空闲状态时,SCK为低电平

        CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据

        交换一个字节(模式1)

        CPOL=0:空闲状态时,SCK为低电平

        CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据

        交换一个字节(模式2)

        CPOL=1:空闲状态时,SCK为高电平

        CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据

        交换一个字节(模式3)

        CPOL=1:空闲状态时,SCK为高电平

        CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据

 SPI时序:

发送指令

向SS指定的设备,发送指令(0x06)

指定地址写

向SS指定的设备,发送写指令(0x02),

随后在指定地址(Address[23:0])下,写入指定数据(Data)

 

指定地址读

向SS指定的设备,发送读指令(0x03),

随后在指定地址(Address[23:0])下,读取从机数据(Data)

 W25Q64简介

W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器,常应用于数据存储、字库存储、固件程序存储等场景

存储介质:Nor Flash(闪存)

时钟频率:80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI)

存储容量(24位地址):

       W25Q40:      4Mbit / 512KByte

       W25Q80:      8Mbit / 1MByte

       W25Q16:      16Mbit / 2MByte

       W25Q32:      32Mbit / 4MByte

       W25Q64:      64Mbit / 8MByte

       W25Q128:  128Mbit / 16MByte

       W25Q256:  256Mbit / 32MByte

 

         64KB为1块,一共128块。xx0000-xxFFFF

        每一块分为多个扇区Sector,每个扇区为4KB,每块一共是16个扇区。xxx000-xxxFFF.

        一页内的地址变化范围是xxxx00,到xxxxFF。

写入操作时:

        写入操作前,必须先进行写使能

        每个数据位只能由1改写为0,不能由0改写为1。例如某存储单元存储0xAA(1010  1010)

在这个存储单元里写入新的数据0x55(0101  0101) 就变成0x00了。

        写入数据前必须先擦除,擦除后,所有数据位变为1

        擦除必须按最小擦除单元进行(全部,块、扇区)最少4096个字节一起擦。

        连续写入多字节时,最多写入一页的数据,超过页尾位置的数据,会回到页首覆盖写入

        写入操作结束后,芯片进入忙状态,不响应新的读写操作

读取操作时:

        直接调用读取时序,无需使能,无需额外操作,没有页的限制,读取操作结束后不会进入忙状态,但不能在忙状态时读取。

这个芯片可以支持SPI模式0和SPI模式3 。

SPI外设:

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

        可配置8位/16位数据帧、高位先行/低位先行   (串口是地位先行,I2C和SPI是高位先行)

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

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

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

        支持DMA。

        兼容I2S协议。

STM32F103C8T6 硬件SPI资源:SPI1(APB2、PCLK72M)、SPI2(APB1、PCLK36M)

        图中左上角表示移位寄存器右移,低位先行的模式。LSBFIRST控制位可以控制低位先行还是高位先行。给0先发送高位,给1先发送低位。

 接收缓冲区分为TDR和RDR,他俩共用一个地址。 发送寄存器移入到移位寄存器时候,置TXE位为1,检测到TXE位为1时,可以移入发送缓冲区。 移位寄存器完成输出和移入时候,移入的数据会整体的转入到接收缓冲区中,置RXNE为1,检测到为1后就要尽快把数据从RDR中读出来。 

        SPI是全双工,发送和接收同步进行,所以数据寄存器发送和接收分离。移位寄存器发送和接收可以共用。

        BR0、BR1、BR2三位对时钟分频进行控制。

        SPE:SPI使能。

        CPOL、CPLA:配置SPI的四种模式

        SSOE为1时,NSS作为输出引脚,并在当前设备变为主设备时,给NSS输出低电平。当主机结束后,SSOE要清零,NSS变为输入。

        SSM位决定右侧中间的数据选择器的选择哪一路,上面一路是硬件NSS模式,即:外部如果输入了低电平,那当前的设备就进入不了主模式,线路中已经有了主模式。下面一路是软件管理NSS输入,NSS是1还是0,由SSI来决定。

主模式全双工连续传输 

        效率高、程序逻辑复杂。

 非连续传输

         程序逻辑简单,效率低。

软硬件波形对比 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2208314.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Idea 2024.2.3 找不到Cache Recovery设置

idea找不到官网所说的设置 下面是解决办法 1.找到对应位置 2.增加配置文件内容 idea.is.internaltrue3.重启idea 4.查看结果 解决方案原文

Android列表组件api

目录 1.ListView控件 1)android:divider 2)android:dividerHeight 3)android:entries 4)android:footerDividersEnabled 5)android:headerDividersEnabled 6)android:listSelector 7)android:sc…

JavaScript Set 必备指南:深入理解 Set 的特性和方法

一. 了解 Set 1. 概念和用途 Set 是 JavaScript 中的一种集合(collection)数据结构,它类似于数组,但是集合中的元素是唯一的,不允许重复。Set 提供了一种存储不重复数值或对象的机制,可以用于存储一组唯一…

【03】手把手教你0基础部署SpringCloud微服务商城教学-Docker前置篇(附Linux虚拟机配置调试及Docker安装全流程)

前文回顾:【02】手把手教你0基础部署SpringCloud微服务商城教学-Mybatis篇(下) 首先我们第一次看见这个东西,第一步就是需要知道它到底是用来干什么的? 简单来说,Docker就是一个快速构建、运行、管理应用的…

K8s-services+pod详解1

一、Service 我们能够利用Deployment创建一组Pod来提供具有高可用性的服务。 虽然每个Pod都会分配一个单独的Pod IP,然而却存在如下两问题: Pod IP 会随着Pod的重建产生变化Pod IP 仅仅是集群内可见的虚拟IP,外部无法访问 这样对于访问这…

【干货】2024新学期期中考试,老师成绩发布工具

老师们别再为期中发成绩发愁了,我给各位带来了一个解决方案——易查分小程序,它可以将彻底改变您发布成绩的方式!一分钟发布期中考试成绩。不管您是教育界的新手还是老手,易查分都能成为您的得力助手。它的界面既美观又实用&#…

大数据毕业设计选题推荐-音乐数据分析系统-音乐推荐系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

一些近期值得关注的存储和备份潜在漏洞

时刻保持警惕,及时、适时地检测暴露于安全建议和警告的相关设备,这一点对企业数据安全再重要不过了。 Continuity调研指出了最近几个月,存储和备份解决方案中存在的、可被攻击者发现和利用的潜在漏洞,包括: Veeam Ba…

YOLOv10改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

必读内容📖 如何寻找创新点?为什么要使用这个模块?如何才能提升模型的精度?这是贯穿我们研究始终的问题。创新点在这个专栏中我已经整理好了,这已经省去了大部分时间,但是当我们使用这些新的模块去优化已有…

LDR6500取电诱骗协议芯片:革新电子设备充电体验

在当今电子设备日新月异的时代,Type-C接口以其高效、便捷的特点迅速成为市场主流。这一接口不仅支持高速数据传输,还实现了正反插拔的便利性,极大地提升了用户体验。然而,在Type-C接口的广泛应用背后,一个关键的技术组…

Java日常开发小结-01

一、fastjson2 FastJson对于json格式字符串的解析主要用到三个类1.JSON&#xff1a;解析器&#xff0c;用于JSON格式字符串与JSON对象及javaBean之间的转换 2.JSONObject&#xff1a;json对象 3.JSONArray&#xff1a; json数组对象 1.1、引入依赖 <dependency><gr…

雷池社区版本SYSlog使用教程

雷池会对恶意攻击进行拦截&#xff0c;但是日志都在雷池机器上显示 如何把日志都同步到相关设备进行统一的管理和分析呢&#xff1f; 如需将雷池攻击日志实时同步到第三方服务器, 可使用雷池的 Syslog 外发 功能 启用 Syslog 外发 进入雷池 系统设置 页面, 配置 Syslog 设置…

基于单片机的公交车自动报站器设计

本设计是以STM32单片机为控制核心的公交车自动报站系统&#xff0c;该系统的主要构成模块有&#xff1a;控制核心模块、GPS模块、温度模块、语音模块、按键控制模块和显示模块。采用点阵显示屏&#xff0c;可自动显示下一站&#xff0c;使用OLED显示器显示温度和经纬度&#xf…

免费使用Cursor, 切换DeepSeek模型

1. 选择设置 直接点击右上角的齿轮图标 或 者通过文件-->首选项-->Cursor Settings 2. 添加模型 点击Models→Add model 添加模型→添加Deepseek的模型名称&#xff1a;deepseek-coder 和 deepseek-chat→注意&#xff1a;模型名一定不能输错&#xff01;&#xff…

2024年区块链钱包现状与未来趋势分析

钱包作为Web3世界的入口&#xff0c;充当了用户与区块链应用交互、管理资金和传递信息的关键工具。随着区块链技术的发展&#xff0c;钱包生态系统日益多样化&#xff0c;涌现出大量不同类型的解决方案。这些解决方案不仅极大地改善了用户体验&#xff0c;还推动了区块链技术和…

鸿蒙HarmonyOS开发:应用权限的基本概念及如何申请应用权限详细介绍

文章目录 一、访问控制二、应用权限1、应用权限管控2、权限使用的基本原则3、授权方式4、权限等级 三、申请应用权限1、选择申请权限的方式2、声明权限3、声明样例4、二次向用户申请授权5、具体实现示例6、效果展示 四、应用权限列表1、system_grant&#xff08;系统授权&#…

基于FPGA的以太网设计(二)

一.以太网硬件架构概述 前文讲述了以太网的一些相关知识&#xff0c;本文将详细讲解以太网的硬件架构 以太网的电路架构一般由MAC、PHY、变压器、RJ45和传输介质组成&#xff0c;示意图如下所示&#xff1a; PHY&#xff1a;Physical Layer&#xff0c;即物理层。物理层定义了…

三、异步加载场景

一、加载场景实现 1、加载进度条方法 在加载场景这个预制体面板上挂在一个代码 LoadingWnd 先对组件进行声明包括&#xff08;一个进度条上的文字、提示组件&#xff08;进度条位置&#xff09;、进度点、进度百分比&#xff09; 使用进度条&#xff0c;首先要初始化一下&am…

使用Docker搭建WAF-开源Web防火墙VeryNginx

1、说明 VeryNginx 基于 lua_nginx_module(openrestry) 开发,实现了防火墙、访问统计和其他的一些功能。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。 文章目录 1、说明1.1、基本概述1.2、主要功能1.3、应用场景2、拉取镜像3、配置文件4、…

SVM及其实践2 --- 对典型数据集的多分类实践

说明 本文为SVM系列的第二篇文章&#xff0c;主要是基于SVM对两份公开数据集的分类实践。建议读者在阅读本文前先看看本系列的第一篇博文[1]: SVM及其实践1 --- 概念、理论以及二分类实践-CSDN博客 Blog 2024.10.6 本文第一次撰写 目录 说明 目录 一、Iris数据集以及基于S…