1. 今日摸鱼任务

需要将数据写入SD卡中,使用一下小梅哥的例程

链接里面是7020,俺的是7010的

【ACZ702】SD卡的文本读写实验 - ACZ702开发板 - 芯路恒电子技术论坛 - Powered by Discuz!

【Zynq】7010与7020程序移植 - ACZ702开发板 - 芯路恒电子技术论坛 - Powered by Discuz!

【Zynq】使用Vivado打开SDK时,SDK闪退的解决方法 - 裸机编程相关问题 - 芯路恒电子技术论坛 - Powered by Discuz!

2. 一丢丢基础

Micro SD 卡共有 8 个引脚:
1. 电源引脚( VCC ):提供电源给卡,工作电压是 2.7-3.6V
2. 接地引脚( GND ):用于建立共地。
3. 数据线 0 引脚( DAT0 ):用于数据传输。在 SPI 模式下,此引脚充当MISO (主输入,从输出)。
4. 数据线 1 引脚( DAT1 ):用于数据传输。
5. 数据线 2 引脚( DAT2 ):用于数据传输。在 SPI 模式下,此引脚不使用。
6. 数据线 3 引脚( DAT3/CS ):用于数据传输。在 SPI模式下,此引脚充当片选( Chip Select )。
7. 命令线引脚( CMD ):用于发送命令给卡。在 SPI 模式下,此引脚充当数据输入( Data In )。
8. 时钟线引脚( CLK ):提供同步的时钟信号。

FATFS 文件系统是一种免费、开源的适用于嵌入式系统的文件系统模块。
主要用于支持 FAT32 FAT16 FAT12 exFAT 格式的不同存储介质,包括 SD卡、 MMC 卡、 CF 卡、硬盘等。

3. Block Design

.bit  .hdf

4. SDK

靠右点击选择'true',启用长文件名和识别小写字母

main.c

#include "ff.h"
#include "stdio.h"
#include "string.h"

//在SD卡中创建一个文件,然后往文件里写入文本,最后读出文本内容
//本实验需要连接串口,输入文件名和写入的文本内容

FATFS fs;
FIL file;
FRESULT Res;

int main(void)
{
    char File_Name[128] = {0};
    char W_Str[128] = {0};
    char R_Str[128] = {0};

    //挂载SD卡
    Res = f_mount(&fs, "0:/", 1);
    if(Res != FR_OK) {
        //挂载失败
        printf("Mount failed to return a value of \"%d\" !\n",Res);
        return -1;
    }

    //输入创建文件的名称(不要带空格)
    printf("Please enter the name of the created file:\n");
    scanf("%s",File_Name);
    strcat(File_Name, ".txt");

    //创建文件
    f_open(&file, File_Name, FA_CREATE_ALWAYS | FA_WRITE | FA_READ);

    printf("The file named \"%s\" was created successfully!\n",File_Name);

    //输入想写进文件的内容(不要带空格)
    printf("Please enter what you want to write to:\n");
    scanf("%s",W_Str);

    //写文件
    f_write(&file, W_Str, strlen(W_Str), NULL);
    printf("\"%s\" was written to the \"%s\" file!\n",W_Str,File_Name);

    //定位到文件开头
    f_lseek (&file, 0);
    //读文件
    f_read (&file, R_Str, strlen(W_Str), NULL);
    printf("The document \"%s\" reads:\n %s \n",File_Name,R_Str);

    //关闭文件
    f_close (&file);

    return 0;
}
 

如果遇到了,能跳转“ff.h”

但是,f_mount函数报错的情况:

xilinx SDK 2018.3 undefined reference to `f_mount'_sdk中添加xilffs之后出现无ff.h-CSDN博客

此测试是单次的,打开串口,再次下载到板卡

如果提示"Mount failed to return a value of \"%d\" !\n"

那是之前步骤有错误,比如忘记配电压

//摸鱼结束

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐