• ZYNQ7000系列学习之TF卡读写实验


    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 
    ");
    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
    ",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!
    ";
    rc = f_open(&fil,"test.txt",FA_WRITE|FA_CREATE_NEW);
    if(rc)
    {
    xil_printf("ERROR : f_open returned %d
    ",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
    ",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、实验结果

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

  • 相关阅读:
    让你一次性搞定堆、栈、值类型、引用类型…… (Part 2) (zt)
    延时加载图片(原创)
    Bambook 简介
    无框架Ajax分页(原创)
    windows系统下Python环境的搭建
    将制定内容输出为压缩后的xls文件
    (原创)对DateTime进行强制约束
    VS 2010中JS代码折叠插件
    延时加载图片(终极版,解决一行多张图片无法显示的问题)
    javascript this详解(转)
  • 原文地址:https://www.cnblogs.com/electricdream/p/12898988.html
Copyright © 2020-2023  润新知