TF卡读写实验

1、实验原理

开发板上自动带有TF卡外接接口,这里只需调用封装好的IP核即可实现该功能。当然,你还需要一个TF卡(感觉SD卡也可以,反正这两种卡差不多)。实验就是调用一个IP核,不涉及其他的设计,所以比较简单。

2、实验步骤

1)新建工程

file》new》project走一遍就可以,没有现成的模块使用。

2)新建bd文件并添加ARM内核

在左侧有Create block design ,可以直接创建bd文件,在中心的加号添加zynq内核即可。

3)zynq7的配置

首先确认勾选了UART和SD,其他的选项全部去掉。(在PS-PLConfiguration中可以找到所有打勾的,去掉即可)这时的bd只有一个内核和UART和SD模块的功能,不去掉也可以,但不利于逐步理解。关键是要综合bd文件,这些会报错。(可以直接生成产品,跳过综合,但是这不是一个好习惯)

4)硬件设计的结束

生成产品和构建顶层,即可直接生成硬件平台,跳过了bit流。原因也简单,没有PL段的设计,就是一个纯的ARM工程。

5)新建软件工程

打开vitis(软件内有内联启动),file》new得到APP工程。这里的操作就不再赘述,依旧是在第二个界面的第二页加入xsa文件。构成后依旧使用hello world模板。

6)软件设计

这里首先得添加ff.h的库,也就是SD卡读写的软件编程条件。

在系统(就是创建工程下面会有选择系统名称的选项)》platform.spr【双击】》standalone on ps7_cortexa9_0》board support package【单击】》modify BSP settings【单击】》选择xilffs即可。

在helloworld.c文件中输入如下代码:

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xdevcfg.h"
#include "xparameters.h"
#include "ff.h"
int SD_Init(void);
int Sd_Test_Write(void);
int Sd_Test_Read(void);
int main()
{
init_platform();
print("zynq_sd_card_fatfs-test \r\n");
SD_Init();
Sd_Test_Write();
Sd_Test_Read();
while(1)
{
;
}
cleanup_platform();
return 0;
}
static FATFS fatfs;
int SD_Init()
{
FRESULT rc;
rc = f_mount(&fatfs,"",0);
if(rc)
{
xil_printf("ERROR: f_mount returned %d\r\n",rc);
return XST_FAILURE;
}
return XST_SUCCESS;
}
int Sd_Test_Write()
{
FIL fil;
FRESULT rc;
UINT br;
const char src_str1[] = "hsp test sd card write and read line1 string. if you see this message,sd_card fatfs test ok!\n";
rc = f_open(&fil,"test.txt",FA_WRITE|FA_CREATE_NEW);
if(rc)
{
xil_printf("ERROR : f_open returned %d\r\n",rc);
return XST_FAILURE;
}
rc = f_write(&fil,src_str1,sizeof(src_str1),&br);rc = f_sync(&fil);
rc = f_close(&fil);
}
int Sd_Test_Read()
{
FIL fil;
FRESULT rc;
UINT br;
const char src_str[4096]={0};
rc = f_open(&fil,"test.txt",FA_READ);
if(rc)
{
xil_printf("ERROR : f_open returned %d\r\n",rc);
return XST_FAILURE;
}
rc = f_lseek(&fil, 0);
rc = f_read(&fil,src_str,4096,&br);
xil_printf(src_str);
rc = f_close(&fil);
}

编译,调试,运行。

这里由于我没有格式化SD卡,得到的记过是错误提示:

3、实验结果

总的来说,实验结果还是简单的。由于缺少读卡器,就不做其他测试性实验了。注意到基本的操作就行。

ZYNQ7000系列学习之TF卡读写实验的更多相关文章

  1. Keil MDK STM32系列(九) 基于HAL和FatFs的FAT格式SD卡TF卡读写

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  2. 联盛德 HLK-W806 (十三): 运行FatFs读写FAT和exFat格式的SD卡/TF卡

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  3. 第36章 SDIO—SD卡读写测试

    第36章     SDIO—SD卡读写测试 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...

  4. 第36章 SDIO—SD卡读写测试—零死角玩转STM32-F429系列

    第36章     SDIO—SD卡读写测试 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...

  5. 【雕爷学编程】Arduino动手做(52)---MicroSD卡读写模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种 的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准 ...

  6. MicroSD卡(TF卡)SPI模式实现方法

    现在我们手机的内存卡多为Micro SD卡,又叫TF卡,所以Micro SD卡比SD卡常见.自己曾经也想写写SD卡的读取程序,但又不想特地再去买个SD卡,这时想起手机内存卡不是和SD卡很像吗?在网上查 ...

  7. FAT32文件系统--For TF卡

    1. TF卡空间是如何分配的? 下面以4GB TF卡为例,通过WinHex工具进行分析,其空间分配如下图所示: FAT32把目录当做文件来管理,所以没有独立的目录区,所有的文件目录项都是在数据区里面的 ...

  8. TF卡的Class4/Class6/Class10

    TF卡全称TransFlash卡,即T-Flash又称MicroSD,随设备微型化的需要,TF卡用途越来越广,速度也越来越快,从最初的Class2早已发展到目前主流的Class10,TF卡体积为15m ...

  9. TF卡速度测试对比 Class数越高速度越快

    存储卡(TF卡)是手机扩展存储的大杀器,让你多装n部学习资料,多装n个外语听力练习.除了装东西外,存储卡性能不佳也会影响手机的整体性能以及体验的.本文主要针对Android手机,我是懒人,但我讨厌懒人 ...

  10. TF卡和SD卡的区别

    小型存储设备凭借低廉的价格.多样化的品种.实用等特性大量充斥在大家身边,比如智能手机手机上.数码照相机上.游戏机上(一般是掌机)等都小型电子设备都频繁的使用到这种统称为SD的产品,比如TF卡和SD卡( ...

随机推荐

  1. STC89C52控制74HC595,74HC138双色16x16点阵屏循环显示汉字

    简介 常见的LED点阵除了使用MAX7219, 还有一部分是使用74HC595, 前者能主动刷新, 后者需要上位机主动扫描刷新. 手里这块是德飞莱的16x16LED点阵模块, 板上印的型号LY-LED ...

  2. 【framework】TaskStack简介

    1 前言 ​ TaskStack 用于管理 app,一般一个应用程序对应一个 TaskStack,其父容器为 TaskStackContainers(DisplayContent 的子容器),子容器为 ...

  3. let与const

    let与const ES2015(ES6)新增加了两个重要的JavaScript关键字: let和const. 块级作用域 代码块内如果存在let或者const,代码块会对这些命令声明的变量从块的开始 ...

  4. SpringCloud Bus动态刷新中心化配置

    说明 上一篇我们介绍了配置中心实战,并留下了一个配置修改后如何实现自动刷新的问题,下面就实际操作一下,首先是手动刷新单个微服务,其次是利用消息总线实现全部刷新. 手动动态刷新 动态刷新是当远程配置文件 ...

  5. Basic语言开发笔记:Basic语言介绍、环境搭建、基本语法示例与程序实例

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  6. jstack查看JVM堆栈信息

    目录 介绍 线程状态 Monitor 调用修饰 线程动作 命令格式 常用参数说明 使用实例 jstack pid jstack 查看线程具体在做什么,可看出哪些线程在长时间占用CPU,尽快定位问题和解 ...

  7. 【Azure 云服务】当Windows系统发布新的安全漏洞后,如何查看Azure云服务(Cloud Service)的实例是否也更新了安全补丁呢?

    问题描述 当Windows发布新的安全漏洞后,会根据安全漏洞的级别分类来确定是紧急打补丁升级,还是每一月的补丁日( 每月第二周的星期二)来统一推送补丁. 比如最近的一个安全漏洞(9月13号发布)  C ...

  8. Linux_Centos_yum报错总结

    ​ 此篇适用于yum报错[尝试其他镜像]并且[curl 外网]不通的情况,此时一般考虑是网络的问题 一,出现的报错信息: 此时测试curl / ping www.baidu.com会发现无法连通 二, ...

  9. 智能升级:AntSK教你如何让聊天机器人实现智能联网操作

    随着人工智能技术的飞速发展,智能体已经逐步融入到我们的日常生活中.不过,要想让智能体不仅能聊天,还能接入网络实时获取信息,为我们提供更多便利,所需技术的复杂性不得不让人瞩目.今天,我将和各位分享如何在 ...

  10. jquery判断滚动条是否到达顶部或者底部

    <script> $(function(){ $(window).scroll(function(){ //离顶部的距离=0 //方法一:var isTop=$(this).scrollT ...