SD卡读写txt文本实验
FATFS文件系统函数参考
f_lseek、f_open、f_write等函数的实验参考下面网站编写及理解
//或者可以直接百度FatFs
http://elm-chan.org/fsw/ff/00index_e.html
SDK main.c代码
#include "xparameters.h"
#include "xil_printf.h"
#include "ff.h"
#define FILE_NAME "PYNQ.txt"
char str_wr[50] = "www.pynqfhc.com";
void sd_write_data(char wr_data[], u32 wr_len)
{
FIL fil; /* File object */
UINT bw;
//打开(创建)文件
f_open(&fil, FILE_NAME, FA_CREATE_ALWAYS | FA_WRITE | FA_READ);
//移动读写指针
f_lseek(&fil, 0); //Move to end of the file to append data
//写入数据
f_write(&fil, wr_data, wr_len, &bw);
//关闭文件
f_close(&fil);
}
//读数据
void sd_read_data(char rd_data[], u32 rd_len)
{
FIL fil; /* File object */
UINT br;
//打开(创建)文件
f_open(&fil, FILE_NAME, FA_READ);
//移动读写指针
f_lseek(&fil, 0); //Move to end of the file to append data
//读数据
f_read(&fil, rd_data, rd_len, &br);
//关闭文件
f_close(&fil);
}
int main()
{
u32 len = 0;
char str_rd[50] = "";
FATFS fs; //原是FATFS *fs;现在定义时不是指针类型,下面挂载使用时直接取其地址
//注册FATFS文件系统对象
f_mount(&fs, "", 1); //1为挂载,第二个参数是逻辑驱动序号
len = strlen(str_wr);
//写数据
sd_write_data(str_wr, len);
//读数据
sd_read_data(str_rd, len);
//比较写入和读出数据
if (strcmp(str_wr, str_rd) == 0)
xil_printf("src_str is equal to dest_str,SD card test success!\n");
else
xil_printf("src_str is not equal to dest_str,SD card test failed!\n");
return 0;
}
参考
以上代码参考正点原子ZYNQ嵌入式开发视频编写