【【萌新的SOC学习之小水文系列】】

news2024/12/23 13:56:53

萌新的SOC学习之小水文系列

SD卡读写TXT文本实验
SD 卡共有 9 个引脚线,可工作在 SDIO 模式或者 SPI 模式。在 SDIO 模式下,共用到 CLK、CMD、DAT[3:0]六根信号线;在 SPI 模式下,共用到 CS(SDIO_DAT[3])、CLK(SDIO_CLK)、MISO(SDIO_DAT[0])、MOSI(SDIO_CMD)四根信号线。
SDIO模式下 实现的功能
在这里插入图片描述
SPI功能模式下
在这里插入图片描述
标准 SD 卡 2.0 版本中,工作时钟频率可以达到 50Mhz,在 SDIO 模式下采用 4 位数据位宽,理论上可以达到 200Mbps(50M x 4bit)的传输速率;在 SPI 模式下采用 1 位数据位宽,理论上可以达到 50Mbps 的传输速率。因此 SD 卡在 SDIO 模式下的传输速率更快,同时其操作时序也更复杂。值得一提的是,ZYNQ内部集成了两个 SD 卡控制器,并且 Xilinx Vitis 的 standalone 已经移植好了 FATFS 文件系统(Vitis 软件中叫做 xilffs),因此在 Vitis 中添加 xilffs 库后,就可以在程序中使用 FATFS 中的 API 函数来操作 SD 卡。

ZYNQ 中的 SD 卡控制器符合 SD2.0 协议规范,接口兼容 eMMC、MMC3.31、SDIO2.0、SD2.0、SPI,支持 SDHC、SDHS 器件。SD 卡控制器支持 SDMA(单操作 DMA)、ADMA1(4K 边界限制 DMA)和ADMA2(在 32 位系统中允许任何位置和任意大小)。
ARM 处理器通过 AHB 总线访问 SD 卡控制器,SD控制器采用读和写通道各自双缓冲 FIFO 的机制提高吞吐带宽。
内部框图
在这里插入图片描述

SD 控制器读写通道采用独立的 512 字节深度的双缓冲 FIFO 执行读和写操作。在写操作时,处理器向其中一个 FIFO 写数据,将另一个 FIFO 的数据写到 SD 总线;在读操作时,SD 总线上的数据向其中一个FIFO 写数据,处理器将数据从另一个 FIFO 读出数据。SD 卡控制器通过双缓冲机制以保证最大带宽。
FIFO 先入先出

FATFS 是一个完全开源免费的 FAT 文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准 C语言编写,所以具有良好的硬件平台独立性,可以很方便的移植到各种嵌入式处理器中。Xilinx Vitis 的standalone 已经移植好了 FATFS 文件系统,因此在 Vitis 中添加 xilffs 库后,就可以在程序中使用 FATFS 中的 API 函数来操作 SD 卡。
FATFS 的特点如下:1、 结构清晰,代码量少,文件系统和 IO 底层分开,特别适合新手入门学习;
2、 支持最多 10 个逻辑盘符和两级文件夹;
3、 支持 FAT12/FAT16 和 FAT32 文件系统;
4、 支持长文件名称。
在这里插入图片描述
最上面的顶层是应用层 最顶层是应用层,使用者无需理会 FATFS 的内部结构和复杂的 FAT 协议,只需要调用 FATFS 模块提供给用户的一系列应用接口函数,如 f_open,f_read,f_write 和 f_close 等,就可以像在 PC 上读/写文件那样简单。
中间层 FATFS 模块,实现了 FAT 文件读/写协议。FATFS 模块提供的是 ff.c 和 ff.h。除非有必要,使用者一般不用修改,使用时将头文件直接包含进去即可。
FATFS 模块提供的底层接口,它包括存储媒介读/写接口(disk I/O)和供给文件创建修改时间的实时时钟。
实验任务
本章的实验任务是通过 Xilinx Vitis 自带的 FATFS 库,完成对 TF 卡中 TXT 文本读写的功能,并将读写测试结果通过串口打印出来。
因为本节用的是TF卡的读写
SDIO模式
在这里插入图片描述
SPI模式
在这里插入图片描述
在这里插入图片描述
下面是结构框图
在这里插入图片描述
在这里插入图片描述
其中 step1 至 step4 为硬件设计部分,在 Vivado 软件中实现;step5 为软件设计部分,在 SDK 软件中实现;step6 为功能的验证。
在这里插入图片描述
PS 最小系统
以 ARM Cortex-A9 为核心、DDR3 为内存,加上传输信息使用的 UART 串口就构成了 ZYNQ 嵌入式最小系统。可以看到,这个最小系统只包括了 ZYNQ 中的 PS 部分。
创建IP核之后得到
在这里插入图片描述
PS 和外部设备之间的连接主要是通过复用的输入/输出(Multiplexed Input/Output,MIO)来实现的。PS的54个MIO引脚可以用于连接不同的外设接口,如图 1.3.13中的MIO14和MIO15,既可以配置成UART0的引脚接口,也可以配置成 I2C0 或 CAN0 的引脚接口。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

栅形状的影响及可靠性的优化

栅形状的影响 VD-MOSFET单元结构采用平面栅极拓扑结构,栅极电极位于半导体的平坦上表面。虽然在这种结构中,在平面结处会发生电场增强,但在栅极电极处不会发生电场增强,因为栅极电极的边缘与高度掺杂的N源区重叠。栅极电极的边缘被…

新能源+低代码:百数服务商新领域,跨行业结合所碰撞出的新火花

新能源行业的兴起主要是在最近几年,特别是“双碳”目标提出后,中国的新能源行业迎来了快速发展的阶段。在政策支持和资本加持下,各种新能源和绿色发展基金设立,以新能源为主体的新型电力系统也得到了深化改革,大力推动…

Qt中QTimer定时器的用法

Qt中提供了两种定时器的方式一种是使用Qt中的事件处理函数,另一种就是Qt中的定时器类QTimer。 使用QTimer类,需要创建一个QTimer类对象,然后调用其start()方法开启定时器,此后QTimer对象就会周期性的发出timeout()信号。 1.QTimer…

十五、异常(6)

本章概要 Try-With-Resources 用法 揭示细节 异常匹配 Try-With-Resources 用法 在考虑所有可能失败的方法时,找出放置所有 try-catch-finally 块的位置变得令人生畏。确保没有任何故障路径,使系统远离不稳定状态,这非常具有挑战性。 Inp…

Unity ToLua热更框架使用教程(1)

从本篇开始将为大家讲解ToLua在unity当中的使用教程。 Tolua的框架叫LuaFramework,首先附上下载链接: https://github.com/jarjin/LuaFramework_UGUI_V2 这个地址的是UGUI的。 下载完之后导入项目,首先,我们要先让这个项目跑起…

老卫带你学---Datagrip连接clickhouse

Datagrip连接clickhouse Datagrip是一个DB可视化特别方便的软件,因为一些业务需要采用clickhouse,然而在download相关driver的时候出现各种问题,于是整理一下方案 1.需要下载clickhouse-jdbc的jar包,可以直接在sonatype上去下载…

C# 人像卡通化

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms;nam…

图像分割-Segment Anything实践

一、模型介绍 Segment Anything 模型是一种新的图像分割模型,它可以在不需要大量标注数据的情况下,对图像中的任何物体进行分割。这种方法可以帮助计算机视觉领域的研究人员和开发人员更轻松地训练模型,从而提高计算机视觉应用程序的性能。该…

超前预告 | 云原生?大模型?这届乌镇双态IT大会亮点有点多

石道旁的水面,轻轻泛着微光,几片墨绿缓缓飘下,荡起柔和的波纹,向对岸游去。这儿不似北方秋阳如火的躁动,这儿的秋色是安静的,里便是江南水乡乌镇…… 2023年,第六届双态IT乌镇用户大会将于10月…

不再为文件名大小写烦恼:批量转换,一招搞定

在电脑使用过程中,我们经常需要处理各种文件,有时需要对文件名进行大小写转换以符合特定要求或便于管理。手动修改不仅费时还容易出错,那么有没有一种方法可以批量转换文件名大小写呢?答案是肯定的,下面就为大家介绍如…

DC电源模块在电容滤波器上的设计

BOSHIDA DC电源模块在电容滤波器上的设计 DC电源模块在电容滤波器上的设计是电源管理系统中非常重要的一部分,其目的是为了确保电源输出电压的稳定性和纹波尽可能小。在设计中,需要考虑到电源负载的变化和变压器等电源配件的电磁干扰等因素。下面我们详细…

基于Java的民宿管理系统设计与实现(源码+lw+部署文档+讲解等)(民宿预约、民宿预订、民宿管理、酒店预约通用)

文章目录 前言具体实现截图论文参考详细视频演示代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技…

【数据结构】二叉树--堆排序

目录 一 降序(建小堆) 二 升序 (建大堆) ​三 优化(以升序为例) 四 TOP-K问题 一 降序(建小堆) void Swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; }//降序 建小堆 void AdjustUp(int* a, int child) {int parent (child - 1) / 2;while (child > 0){if (a[chil…

(三)Apache log4net™ 手册 -演示

0、引言 在开始本文之前,推荐您首先阅读 Apache log4net™ 手册中有关 介绍 与 配置 的相关内容。本文将通过实践分别为您演示如何使用 Visual Studio 2022 在 .NET Framework 项目和 .NET 项目下配置并使用 Log4Net。 1、为 .NET Framework 项目配置 Log4Net 1.1…

day26--AJAX(axios使用,http协议(部分),接口文档,form-serialize使用)

目录 AJAX介绍: 什么是AJAX 怎么用AJAX? axios的使用: axios的核心配置: url统一资源定位符: 组成: http协议: 域名: 资源路径: 查询参数: 常用的…

Text embedding 模型总结

文章目录 MTEB榜单8个嵌入任务三种数据集类别 C_METB榜单文本向量表示模型 目前,随着 Langchain LLM模型 的火热,除了层出不穷的大模型外,因为检索的能力会很大程度影响最终的问答效果,文本的嵌入模型也是大家比较关注的。本文主…

Redis之主从复制,哨兵模式,集群

Redis之主从复制,哨兵模式,集群 1、主从复制1.1主从复制概述1.2Redis主从复制作用1.3Redis主从复制流程1.4部署Redis 主从复制 2、哨兵模式2.1哨兵模式原理2.2哨兵模式的作用2.3哨兵模式的结构2.4故障转移机制2.5搭建Redis 哨兵模式 3、Redis集群模式3.1…

在开发APP过程中外包我们经常会遇到哪些问题?我们该如何避免?

虽然选择一个外包公司有很多坑,但是我们有的时候不得不选择一个外包公司,所以选择外包的时候我们要注意一些细节可以有效的区分开外包app产品的可靠性还是至关重要!希望我整理的这些对各位有需要的同学有所帮助! 首先我们先从公司…

看好你家电视盒的后门!数千个Android电视盒感染了与欺诈相关的危险恶意软件

如果你从Android电视盒获得流媒体修复程序,则你的设备可能会被恶意软件所感染,这些恶意软件能够进行广告欺诈、创建假帐户,并通过悄悄地将你的数据转移到中国的服务器来销售对家庭网络的访问。 根据本周的一份新报告,网络安全公司…

深入理解强化学习——强化学习的目标和数据

分类目录:《深入理解强化学习》总目录 强化学习的目标 在动态环境下,智能体和环境每次进行交互时,环境会产生相应的奖励信号,其往往由实数标量来表示。这个奖励信号一般是诠释当前状态或动作的好坏的及时反馈信号,好比…