zynq之TF卡写入函数f_printf
1、基本原理
前面使用f_write写入了数据到TF(SD)卡中,可以实现较短字符串的写入。当字符增加时,容易出现乱码。而f_printf则是专门用于字符串写入的函数,支持整型和字符型数据的写入,可以提高数据写入的灵活性和便捷性。
2、实验操作
要使用f_printf,首先要对ff.h文件进行设置,才能正常使用f_printf函数。注意不是fprintf,这个函数是C语言的系统函数,不能直接用于SD卡的写入。在vitis中设置ff.h文件如下(包括勾选ff.h):
首先在src(创建主函数的地方)文件夹的下方找到prj为后缀的文件,双击打开。
opinions中有一个Navigate to BSP Setting的选项,双击打开。
在board support package中双击Modify BSP Setting
在出现的弹窗中勾选xilff.h文件
在左侧xilffs中将use_strfunc的值改为2(反正不为0,其他值没有测试)
注意,这里有两个board support package(一个是fsbl的,一个是ps7_cortexa9_0的,两个都设置ff.h的use_strfunc值)
操作完成后可以依次查看两个设置的值是否完成。
int Sd_Test2_Write() { FIL fil; FRESULT rc; int x=0; if(rc) { ; } rc = f_open(&fil,"printf2.txt", FA_OPEN_ALWAYS | FA_WRITE); f_printf(&fil,"x= %d\n",x); x+=1; f_printf(&fil,"x= %d\n",x); rc = f_close(&fil); }
简易的测试函数
最后可以向TF卡写入
x=0
x=1
3、分析总结
f_printf和C语言中的printf十分相似,可以灵活写入数据。
======== ======\\ ======= -
|| || \\ // \\ /-\
|| || || // // \\
|| || // || // \\
====== ======= || === ========
|| || || \\ // \\
|| || \\ || // \\
|| || \\ // // \\
|| || ======= // \\
作者:绿叶落秋风,专注FPGA技术分析和分享,转载请注明原文链接:https://www.cnblogs.com/electricdream/p/13412496.html,文中资源链接如下:
1. GITHUB开源仓库