STM32之SPI——外部FLASH和RFID

一、SPI协议的原理与应用

  • 基本概念

串行外设接口SPI(Serial Peripheral Interface)是由美国摩托罗拉公司最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行外设扩展接口。该接口是一种高速、全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,为PCB的布局上节省空间。

  • 应用场景

SPI接口主要应用在访问高速设备,如spi flash、2.4G无线传输、lcd设备显示、电阻屏触控IC等。

  1. 2.4GHZ无线传输

  1. LCD显示设备

  1. 墨水屏设备

  1. 串行Flash存储IC

  1. RFID射频模块

  • 内部结构

SPI接口采用主从结构,SPI由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI接口由MOSI(串行数据输出)、MISO(串行数据输入)、SCLK(串行移位时钟)、/SS(从设备使能信号,/SS亦可为NSS)四种信号构成。

  • 工作模式

由于SPI接口采用同步通信,必须在SCK时钟线生成的脉冲信号期间完成数据的传输,对于SPI接口而言采用的是边沿同步的方式,所以就需要清楚时钟线SCK到底是哪个边沿进行同步。

MCU作为主机可以选择四种工作模式中的任何一种,但是选择工作模式的时候要以从机支持的模式为主,从机支持的工作模式必须要阅读从机的数据手册(大多数都是支持模式0)。

  1. 串行Flash存储IC的原理与应用
  • 基本概念

由于STM32F407ZET6这颗MCU内部只有512KB的Flash闪存容量,这512KB需要用于存储固件,剩余的空间可能不足以让用户使用了,所以需要额外的拓展存储IC,在GEC-M4开发板中集成了一颗串行Flash芯片,型号是W25Q128,容量是128Mbit,该存储IC采用SPI接口进行通信。

  • 内存分布

W25Q128是容量为128Mbit的SPI接口NOR Flash的器件,内部是按照Page、Sector、Block的结构来划分的,一个Page为256个Byte,一个Sector为16个Page也就是4KB,一个Block为16个Sector也就是64KB。相较于EEPROM而言,SPI Flash的存储空间更大,存取速度更快,广泛应用于嵌入式系统中数据、代码的固化。

  • 引脚说明

  • 工作模式

  • 指令分析

  • 程序设计

  1. 读取厂商/设备ID

  1. 写使能

  1. 读状态寄存器

  1. 写失能

  1. 擦除扇区

  1. 读数据

  1. 页编程

  • 验证结果

  • 时序模拟

如果想要提高程序的实时性以及程序的可移植性,则可以选择使用MCU的某些IO口生成SPI通信所需要的时序,从而摆脱硬件资源的限制。

用户只需要找到4个IO口作为SPI通信的SCK、MISO、MOSI、CS,可以设置SCK引脚为输出模式、MISO引脚为输入模式、MOSI引脚为输出模式、CS片选为输出模式即可。

作业:把模式3的时序设计出来,并进行测试,要求把IO口模拟模式0和模式3的函数背下来!

三、RFID射频模块的原理与应用

  • 基本概念

RFID技术也简称为射频识别技术,是20世纪40年代开始出现的一种自动识别技术。RFID通过无线射频信号获取物体的相关数据,并对物体加以识别,RFID技术不需要和被识别物体进行直接接触就可以完成物体信息的处理,也不需要人工干预,可以实现无接触式信息传递,能应用在各种较为恶劣的环境中。所以说RFID技术是一种快速、高效的采集和处理物体信息的自动识别技术。

随着计算机和互联网的发展,物联网的概念也被提出,而物联网想要实现的是“万物互联”物联网的核心思想是为全球每一个物品提供唯一的电子标签,而RFID可以实现无接触式的信息传递达到识别物体的目的。所以RFID技术也是实现物联网的关键技术之一。

  • 结构组成

RFID技术的实现离不开软件与硬件的支持,硬件一般包含应答器、天线和阅读器。软件一般包含数据管理系统。

电子标签也叫作应答器,一般是由集成电路芯片和内置天线组成的,芯片用来存储物体相关数据,内置天线用来收发无线电波。电子标签一般附着在物体上用来标识物体,每个标签具有唯一的电子编码。电子标签的种类有很多,比如低频标签、高频标签等,并且电子标签的样式也有多种,比如条型、卡片型、环型、纽扣型等。

而对于识读器而言,也称为阅读器或者读写器,是对电子标签信息读取和写入的设备。阅读器可以和计算机进行联网,作用一般是作为数据交换的媒介,阅读器一般由射频模块、控制模块和天线组成。也可以把阅读器理解为一个特殊的无线通信模块,它可以和电子标签通过天线进行无线通信。阅读器可以工作在一个或多个工作频段,也可以读写一种或多种电子标签,阅读器的种类有很多,比如手持式的、固定式的,使用起来非常方便。

  • 识别原理

  • 通信接口

本次使用的RFID模块采用的驱动IC型号是MFRC522,对于该芯片支持多种通信接口,比如支持UART、SPI、IIC.....,本次使用SPI接口进行通信。

  • 工作模式

可以知道,MFRC522和MCU使用SPI接口通信的时候,采用的SPI工作模式是模式0,所以主机就需要使用模式0。

  • 硬件接线

由于打算采用IO口模拟SPI时序的方案实现RFID模块的控制,所以从MCU中挑选4个引脚来作为SPI通信引脚。

  • 程序移植
  1. 获取源码

  1. 分析源码

  1. 拷贝文件

  1. 添加文件

  1. 修改源码

提示:一般移植传感器的程序时,只需要修改底层代码(和IO口相关的、和时序相关的),不需要修改应用层代码。

  1. 编译源码
  1. 下载源码
  1. 查看效果
  • 验证结果

作业:根据SPI的时序完成RFID模块的程序移植,并实现卡的选卡、读卡、写卡的相关功能。

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

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

相关文章

51c视觉~3D~合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/13954440 #SceneTracker 在4D时空中追踪万物!国防科大提出首个长时场景流估计方法 本篇分享 TPAMI 2025 论文​​SceneTracker: Long-term Scene Flow Estimation Network​​,国防科大提出首…

cf2059B

原题链接:https://codeforces.com/contest/2059/problem/B 题目背景: 将一个长度为 n 的数组 a 划分为 k 个数组,再将所有偶数索引的数组合并成 b 数组,定义代价为 的最小索引 i ,可得到的最小代价为多少。 思路&am…

爬虫到智能数据分析:Bright Data × Kimi 智能洞察亚马逊电商产品销售潜力

前言 电商数据分析在现代商业中具有重要的战略价值,通过对消费者行为、销售趋势、商品价格、库存等数据的深入分析,企业能够获得对市场动态的精准洞察,优化运营决策,预测市场趋势、优化广告投放、提升供应链效率,并通…

从解决一个分享图片生成的历史bug出发,详解LayoutInflater和View.post的工作原理

问题背景 最近在项目中遇到一个问题:在档口分享功能中,需要动态生成一个分享图片。代码是这样写的: // 项目中的代码 val shareView LayoutInflater.from(thisStallMainActivityV1).inflate(R.layout.share_header_stall_main_layout, nul…

2.linux目录切换命令:cd与pwd以及路径与路径符

cd 切换当前工作目录 cd [linux路径0] cd没有选项,直接执行,只有参数.如果没有参数,表示回到用户的home目录 pwd 无参,无选项,直接打印当前工作目录的绝对路径 路径 相对路径 以当前目录为起点,路径描述无需使用/开头 # cd Desktop 绝对路径 路径描述需要以/开头 cd…

摩尔条纹 原理以及matlab 实现

一、简介 莫尔条纹的形成原理-CSDN博客 “莫尔”一词源于法文“Moire”,其原本的含义是“波动”或者“起波纹的”。早在古代时期,人们便偶然发现,当把两块薄的丝绸织物相互叠加放置时,能够看到一种呈现不规则形态的花纹。此后&a…

【海康USB相机被HALCON助手连接过后,MVS显示无法连接故障。】

在Halcon里使用助手调用海康USB相机时,如果这个界面点击了【是】 那么恭喜你,相机只能被HALCON调用使用,使用MVS或者海康开发库,将查找不到相机 解决方式: 右键桌面【此电脑】图标 ->选择【管理】 ->选择【设备…

数据治理是什么意思?数据治理平台有哪些?

目录 一、数据治理的概念 1. 数据治理的定义 2. 数据治理的目标 二、数据治理的实施流程 1. 规划阶段 2. 评估阶段 3. 执行阶段 4. 监控与评估阶段 三、常见的数据治理平台 1. FineDataLink 2. IBM InfoSphere Information Governance Catalog 四、总结 随着企业业…

高效工具-tldr

喜欢使用命令操作的小伙伴,肯定会遇到一个问题,查看命令如何使用时,会列出一堆,特别是英文,看的直发懵。前段时间我也是研究git命令,也遇到了类似的问题。好在有大数据,帮我普及相关的知识。 在…

安卓添加设备节点权限和selinux访问权限

# 1 修改设备节点权限及配置属性设置节点值 ## 1.1 修改设备节点权限 ### 1.1.1 不会手动卸载的节点 在system/core/rootdir/init.rc中添加节点权限 在on boot下面添加 chown system system /sys/kernel/usb/host chmod 0664 /sys/kernel/usb/host ### 1.1.2 支持热插拔的…

ssm学习笔记(尚硅谷) day1

创建新项目 maven的聚合 1. 标记父类项目 标签<packaging>pom</packaging>表示将该项目标记为父类项目&#xff0c;必须添加。 以下是标签<packing>的常见取值 groupId在pom.xml中&#xff0c;可以从pom.xml直接修改。 2. 通过<modules>添加子项目…

基于Java,SpringBoot,Vue,UniAPP医院预约挂号买药就诊病例微信小程序系统设计

摘要 随着医疗信息化的不断推进以及“互联网医疗”模式的广泛普及&#xff0c;传统医院挂号流程中存在的排队时间长、资源分配不均等问题日益凸显&#xff0c;急需通过数字化手段加以解决。本研究设计并实现了一套基于Java、SpringBoot、Vue与UniAPP技术栈的医院预约挂号微信小…

Axure项目实战:运输统计页引入echarts实现高保真设计(JS代码ctrl+c ctrl+v懂得来)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 案例视频: 数据统计引入echarts示例演示 课程主题:运输统计页引入echarts实现高保真设计 主要内容…

python打卡day39

图像数据与显存 知识点回顾 图像数据的格式&#xff1a;灰度和彩色数据模型的定义显存占用的4种地方 模型参数梯度参数优化器参数数据批量所占显存神经元输出中间状态 batchisize和训练的关系 作业&#xff1a;今日代码较少&#xff0c;理解内容即可 在 PyTorch 中&#xff0c;…

15.1 【基础项目】使用 HTML、CSS 和 TypeScript 构建的简单计数器应用

一个简单的计数器应用是学习如何集成 HTML、CSS 和 TypeScript 的绝佳项目。该应用允许用户对计数值进行增加、减少和重置&#xff0c;展示了 TypeScript 中基本的 DOM 操作和事件处理。 我们将构建的内容 我们将创建一个具有以下功能的计数器应用&#xff1a; 增加计数值减…

RT-Thread源码阅读(3)——内核对象管理

_object_container对象容器数组 在RT-Thread操作系统中&#xff0c;_object_container数组的作用是按类型分类管理内核对象&#xff0c;提供高效的类型检查、资源管理和统计功能 struct rt_list_node {struct rt_list_node *next; /**< point to…

《智能医学》征稿通知:7天可见刊,专科及以上可发表

香港科学出版社(Hong Kong Scientific Publishers Journals)是一家全球独立高质量的学术出版机构&#xff0c;遵循国际开放获取的出版(OA)原则。现已与科检易学术携手共同征集高质量文章。目前可出版来自高等学校、科研院所和企业的先进科技成果。包括理、工、农、医、经、管、…

如何利用categraf的exec插件实现对Linux主机系统用户及密码有效期进行监控及告警?

需求描述 Categraf作为夜莺监控平台的数据采集工具&#xff0c;为了保障Linux主机的安全&#xff0c;需要实现对系统用户密码有效期的监控&#xff0c;并在密码即将到期时及时告警&#xff0c;以提醒运维人员更改密码。本章将详细介绍如何利用Categraf的exec插件来实现这一功能…

RV1126-OPENCV 交叉编译

一.下载opencv-3.4.16.zip到自己想装的目录下 二.解压并且打开 opencv 目录 先用 unzip opencv-3.4.16.zip 来解压 opencv 的压缩包&#xff0c;并且进入 opencv 目录(cd opencv-3.4.16) 三. 修改 opencv 的 cmake 脚本的内容 先 cd platforms/linux 然后修改 arm-gnueabi.to…