【【萌新的SOC学习之SD卡读写TXT文本实验】】

萌新的SOC学习之SD卡读写TXT文本实验

SD卡
Secure Digital Card
在这里插入图片描述
在这里插入图片描述

SD卡的引脚定义
在这里插入图片描述

我们会用的数据脚就这几个
在这里插入图片描述

对于我们FPGA 其实更会倾向于选择 SPI的功能
在这里插入图片描述

而TF卡相对于SD卡的区别在于
SD卡只有一个电源地

在这里插入图片描述
在这里插入图片描述

这里相对于原本的SPI多了一个CD引脚
CD信号是相当于一个卡检测信号 连接上 CD变为 低 没有插入卡电平就被上拉为高

文件系统 (File System)
负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。即在磁盘上组织文件的方法。
常用的文件系统
-FAT/FATFS : 大部分SD卡的文件系统
-NTFS : 基于安全性的文件系统,是windows NT所采用的独特的文件系统结构
-CDFS :CDFS是大部分的光盘的文件系统
-exFAT

SD 卡读写TXT文本实验
先把TF卡连接到开发板中,然后PS端对开发板进行读写操作。它会在TF卡中创建一个.txt的文本
朝文本里面写入数据,再把数据读出来,我们再验证写入读出的数据是否一致
因为TF端引脚都是连接到PS端上的 PS端包含了外设 通过这个外设对SD卡完成这样子的读写操作
SD/SDIO 就是我们使用的外设接口

我们先介绍SDIO 控制器的使用流程
SD/SDIO 外设有2个 一个连接到了SD卡 还有一个连接到 eMMC
在本讲中,我们并不是直接操作SDIO控制器,而是通过操作文件操作系统FATFS来完成对SDIO控制器的读写
因为我们创建的是.txt的文本是属于文件系统的范畴了

我们先看zynq-7000的结构框图
在这里插入图片描述

这里我们会发现有两个接口SD/SDIO 完成对SD和eMMC 的操作
SD是在MMC的基础上发展起来的
针对SD接口我们可以选择一线或者四线的方式进行传输
SDIO可以路由连接到MIO的接口 或者通过EMIO接口连接到PL引脚
eMMC 不能作为主要启动设备(第一启动设备) 只能作为第二启动设备或者说辅助启动器件
开发板有一个拨码开关 他可以控制我们的从哪里启动 是从SD卡 还是QS_PIFlash 并不支持直接从eMMC中直接启动

而SD/SDIO这种外设又是怎么和ARM交互的呢 它是通过 AHB总线—高带宽
APB 高级外设总线 —传输数据比较小的情况
在这里插入图片描述

AHB与arm连接 SD/SDIO 连接外部

下面我们讲解 FATFS文件系统
文件系统 (File System)
负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。即在磁盘上组织文件的方法。
常用的文件系统
-FAT/FATFS : 大部分SD卡的文件系统
-NTFS : 基于安全性的文件系统,是windows NT所采用的独特的文件系统结构
-CDFS :CDFS是大部分的光盘的文件系统
-exFAT

FATFS是一个完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统设计。 用标准的C语言写
FATFS是可裁剪的文件系统。
在这里插入图片描述

这个FATFS模块的层次结构图
在这里插入图片描述

最顶层是应用层,使用者无需理会 FATFS 的内部结构和复杂的 FAT 协议,只需要调用 FATFS 模块提供给用户的一系列应用接口函数,如 f_open,f_read,f_write 和 f_close 等,就可以像在 PC 上读/写文件那样简单。中间层 FATFS 模块,实现了 FAT 文件读/写协议。FATFS 模块提供的是 ff.c 和 ff.h。除非有必要,使用者一般不用修改,使用时将头文件直接包含进去即可。FATFS 模块提供的底层接口,它包括存储媒介读/写接口(disk I/O)和供给文件创建修改时间的实时时钟。
在这里插入图片描述

先分配一个动态的工作区域
然后可以来挂载我们的逻辑磁盘
f_open
f_mount重新挂载

最后f_mount(0, " " ,0 ) ;
最后一个是取消挂载 的意思
free(ps) 释放

进行程序设计
本章的实验任务是通过xilinx SDK自带的FATFS库 , 完成对TF卡中 TXT文本读写的功能 ,并将测试结果通过串口打印出来
在这里插入图片描述

SD这个外设主要是对TF卡进行驱动
添加的UART外设 将TF卡的操作结果用串口打印出
f_mount-----注册或取消注册一个卷的区域
f_mount(文件系统的项目 ,逻辑驱动的序号 , 初始化的选项opt)
当这个opt=0 时,表示独立挂载 1 :检测准备好之后开始强制挂载

在这里插入图片描述
在这里插入图片描述

第一个是指针变量 指的是内容我们在上面创建的那块区域
第二个是逻辑分区的序号—这也是指针类型的变量
第三个是 1 挂载
在这里插入图片描述

它会返回一个值 挂载失败之后先格式化SD卡
这里面我们用到了f_mkfs 这个函数
这个函数是格式化f_mkfs( 逻辑驱动的序号 , 格式化的类型,0 ,工作区域 ,工作区域的大小)

其实它整个也是调用函数的形式
在这里插入图片描述

SD卡读写
第一步先打开文件
f_open(指针类型的指向我们的文件参数 ,文件名称 , 创建文件 或者选择写 )
FA_CREATE_ALWAYS
FA_WRITE

f_lseek (取地址 , 0 )
fwrite(结构体指针 , 数据 , 写多少个数据 ,返回一个指针类型表示有多少数据写成功了)

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

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

相关文章

某医疗机构:建立S-SDLC安全开发流程,保障医疗前沿科技应用高质量发展

某医疗机构是头部资本集团旗下专注大健康领域战略性投资与运营的实业公司,市场规模超300亿。该医疗机构已完成数字赋能,形成了标准化、专业化、数字化的疾病和健康管理体系,将进一步规划战略方向,为人工智能纳米技术、高温超导、生…

虹科科技 | 探索CAN通信世界:PCAN-Explorer 6软件的功能与应用

CAN(Controller Area Network)总线是一种广泛应用于汽车和工业领域的通信协议,用于实时数据传输和设备之间的通信。而虹科的PCAN-Explorer 6软件是一款功能强大的CAN总线分析工具,为开发人员提供了丰富的功能和灵活性。本文将重点…

PBA.客户需求分析 需求管理

一、客户需求分析 1 需求的三个层次: Requirement/Wants/Pains 大部分人认为,产品满足不了客户需要,是因为客户告知的需求是错误的,这听起来有一些道理,却没有任何意义。不同角色对于需求的理解是不一样的。在客户的需求和厂家的…

风电光伏混合储能功率小波包分解、平抑前后波动性分析、容量配置、频谱分析、并网功率波动分析(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

UE4和C++ 开发-UE4怎么删除C++类

1 关闭visual stdio,关闭UE4引擎。 2 打开你的项目文件夹。找到你要删除的.h,.cpp文件删除。 3、删除Binaries文件夹。 4 右击.uproiect文件,点击Generate Visual Studio project files. 5 双击.uproiect文件,忽略警告打开就看到已经删除了想要删除的C类…

Python【控制台输出案例】

要求&#xff1a;在控制台上上输入如下案例 *********** *********** *********** 代码1如下&#xff1a; layer int(input("请输入你要打印的行数&#xff1a;")) index 1 while index < layer:print("*"*10)index 1 ps:为了确保index 1语句在循…

安全的Sui Move是Web3大规模采用之路的基石

没有信任&#xff0c;就没有Web3的大规模采用。还有其他重要障碍阻碍了首个十亿用户的到来&#xff0c;包括令人困惑的用户体验、复杂的身份验证模式以及不确定的监管体系&#xff0c;但所有障碍中&#xff0c;要数大多数人对区块链技术持怀疑和不信任态度最严重。 对于许多人…

【动态规划】123. 买卖股票的最佳时机 III、188. 买卖股票的最佳时机 IV

提示&#xff1a;努力生活&#xff0c;开心、快乐的一天 文章目录 123. 买卖股票的最佳时机 III&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4bb;代码实现&#x1f3af;题目总结 188. 买卖股票的最佳时机 IV&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4…

docker搭建rocketmq集群

单机搭建 1 拉取rocketMq镜像 docker pull rocketmqinc/rocketmq:4.3.2 2 创建挂在目录 mkdir -p /mydata/rocketmq/data/namesrv/logs /mydata/rocketmq/data/namesrv/store mkdir -p /mydata/rocketmq/data/broker/logs /mydata/rocketmq/data/broker/store mkd…

flink1.15 savepoint 超时报错 java.util.concurrent.TimeoutException

savepoint命令 flink savepoint e04813d4e7480c526912eb4d32bba510 hdfs://flink/flink/migration/savepoint56650 -Dyarn.application.id=application_1683808492336_1222报错内容 org.apache.flink.util.FlinkException: Triggering a savepoint for the job e04813d4e7480…

Java开发-参数校验@NotEmpty、@NotBlank、@NotNull

大家好&#xff0c;我是小资。今天给大家说下参数校验。 标题中说的这三个注解所在的包路径为import javax.validation.constraints.*; 千万不要导错包哦&#xff0c;因为他们在好多包里都存在。开发只需引入Spring-web依赖就可以使用了。轻轻松松干掉多余的if-else。 下面我…

Springboot 订餐管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 订餐管理系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有 完整的源代码和数据库&…

基于图像识别的迁移学习之一

案例分析 加载数据部分同上一个案例&#xff0c;只需把数据输入到预训练的VGG-16或者ResNet50中。VGG-16的网络结构为右侧图绿色栏所示&#xff0c;其中block1中有2个包含64个卷积核的卷积层&#xff0c;block2包含2个128个卷积核的卷积层&#xff0c;block3有3个包含256个卷积…

ESP32网络开发实例-从LittleFS加载Web页面文件

从LittleFS加载Web页面文件 文章目录 从LittleFS加载Web页面文件1、应用介绍2、软件准备3、硬件准备4、Web页面代码与LittleFS文件系统上传4.1 Web页面代码实现4.2 Web页面代码上传5、Web服务器代码实现在文中,将展示如何构建一个 Web 服务器,为存储在 ESP32 的LittleFS文件系…

LeetCode142:环形链表II

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数…

Linux知识点 -- 高级IO(一)

Linux知识点 – 高级IO&#xff08;一&#xff09; 文章目录 Linux知识点 -- 高级IO&#xff08;一&#xff09;一、5种IO模型1.IO再理解2.阻塞IO3.非阻塞轮询式IO4.信号驱动IO5.IO多路转接6.异步IO7.同步通信vs异步通信8.阻塞vs非阻塞 二、非阻塞IO1.设置非阻塞的方法2.非阻塞…

44.ES

一、ES。 &#xff08;1&#xff09;es概念。 &#xff08;1.1&#xff09;什么是es。 &#xff08;1.2&#xff09;es的发展。 es是基于lucene写的。 &#xff08;1.3&#xff09;总结。 es是基于lucene写的。 &#xff08;2&#xff09;倒排索引。 &#xff08;3&#xf…

一行代码优化 pdfjs 加载大文件的pdf 速度

目录 介绍问题分析解决结束 介绍 先简单介绍下pdfjs 怎么 去加载pdf文件 import * as PDFJS from pdfjs-dist/legacy/build/pdf PDFJS.GlobalWorkerOptions.workerSrc require(pdfjs-dist/legacy/build/pdf.worker.entry.js)// blobUrl container指 dom 承载pdf 的容器 expo…

stm32学习笔记:中断的应用:对射式红外传感器计次旋转编码器计次

相关API介绍 EXT配置API(stm32f10x exti.h&#xff09; NVIC 配置API (misc.h) 初始化的中断的步骤 第一步&#xff1a;配置RCC时钟&#xff0c;把涉及外设的时钟都打开 第二步&#xff1a;配置GPIO&#xff0c;设置为输入模式 第三步&#xff1a;配置AFIO&#xff0…

基于Java使用SpringBoot+Vue框架实现的前后端分离的美食分享平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 在当今社会&#xff0…