HC32F4A0挂载FatFs(版本ff14b)文件系统。使用SD卡和W25Q64的Flash,再将其虚拟成U盘,连上电脑直接查看文件操作。

您所在的位置:网站首页 sd卡和优盘优缺点对比图表 HC32F4A0挂载FatFs(版本ff14b)文件系统。使用SD卡和W25Q64的Flash,再将其虚拟成U盘,连上电脑直接查看文件操作。

HC32F4A0挂载FatFs(版本ff14b)文件系统。使用SD卡和W25Q64的Flash,再将其虚拟成U盘,连上电脑直接查看文件操作。

2024-07-11 22:50| 来源: 网络整理| 查看: 265

一、进行操作前的准备。 确保使用官方例程能够判断SD是否有效的,即能够正常的被识别和读写 官方例程如下: SD检测 如果你好奇,为什么我知道sd需要用到例程。关于这个问题,请看下面。 打开官方的硬件电路文件: 外围设备 在文档中搜索"TF CARD",这里这个代表SD卡。出现如下图:

搜索结果 图中说错了一个地方,“去找SPI的例程”,改为去找SDIOC的例程。 2. 确保使用官方例程能够正常的读写W25Q64. 官方例程如下: W25Q64读写测试

确保使用官方例程能够实现连接usb可以看见电脑上有SD卡的U盘。 将SD卡通过usb虚拟成串口,以U盘的形式访问 二、将SD卡,W25Q64、FatFs的相关文件导入工程。 2.1. 导入SD卡的相关文件并配置

1.1、打开上面说的sd卡的官方例程: 例程

确保,能够出现官方描述的现象: 现象

如果没有出现,可以尝试使用读卡器,在电脑上将sd卡格式为Fat32或Fat格式,再次尝试。如果还是不成功,直接换卡尝试。当然不排除开发板故障的问题,但一般发生概率小。 1.2、接下来进行把例程移植到你的工程中 在例程进行如下操作: 文件

把上图中所涉及到的除了main.c文件以外的所有文件添加到自己工程里面去。 1.3、接下来,添加头文件路径。例程里面涉及的头文件路径: 头文件

1.4、当然因为这里使用到了sdioc,所以需要使能sdioc的功能。这里打开例程的配置文件: 文件 使能 可以看到例程已经使能LL_SDIOC_ENABLE。那么你的工程也需要使能这个。 1.5、接下来根据例程导入相应的头文件到自己的工程中 导入头文件

1.6、接下来移植例程里面的main.c里面的代码到你的工程里面。 移植mian 移植完成后,编译运行。一般而言都没有问题,如果有问题。那么请检查,是否是配置文件缺少了某些使能,或是有些问题没有添加到工程里面,或是缺少头文件。

2.2. 导入W25Q64的相关文件并配置

如果你仔细看了sd相关文件的添加和导入,和相关的使能等操作。那么这个部分的添加也非常简单。 第一步:还是先说说该怎么找例程吧。 打开官方的硬件电路。 外设 例程 第二步:向自己的工程里面添加例程里面的文件 文件 main.c文件和Readme不需要。 第三步:根据例程向自己的工程添加缺少的头文件路径 头文件 第四步:根据例程的hc32的配置文件中的使能配置,去配置你自己工程里面的使能配置。 使能 第五步:导入相关根据例程,导入相关头文件到自己的工程中 导入头文件 第六步:移植例程里面main.c里面的相关代码到自己工程里面

导入main.c里面的代码 移植完成后,编译运行。一般而言都没有问题,如果有问题。那么请检查,是否是配置文件缺少了某些使能,或是有些问题没有添加到工程里面,或是缺少头文件。

2.3. 导入FatFs的相关文件并配置

声明:我这里使用的是FatFs的版本是版本 工程中使用到的文件如下: fat.c 配置FatFs头文件路径如下: 头文件路径 第一步:配置ffconf.h文件

2.3.1如果你只使用SD卡的话配置如下:

FF_VOLUMES这个我配置为1,因为只用到了一个存储设备。SD卡。 在这里插入图片描述

FF_MAX_SS这个对于SD卡这种设备,一般都是配置为512(一个扇区大小)。当然为了跟家准确,有所使用的SD的手册最好。 配置

FF_CODE_PAGE配置为936。当然如果你的不需要支持中文,或者想减少内存的使用,可以配置437.

支持中文

FF_USE_LFN配置为1. 配置FF_FS_NORTC配置为1:关闭时间配置,不然又得要实现文件系统的里面的时间函数,麻烦。 配置 2.3.2如果你只使用W25Q64的话配置如下:

FF_VOLUMES这个我配置为1,因为只用到了一个存储设备。W25Q64。 在这里插入图片描述

FF_MAX_SS这个对于W25Q64卡这种设备,是4096(代表扇区的最大值)。为什么是4096?请看下面的W25Q64的手册截图。 配置 4096来源

FF_CODE_PAGE配置为936。当然如果你的不需要支持中文,或者想减少内存的使用,可以配置437.

支持中文

FF_USE_LFN配置为1. 配置FF_FS_NORTC配置为1:关闭时间配置,不然又得要实现文件系统的里面的时间函数,麻烦。 配置 2.3.3、最后配置diskio.c文件:这里将存储设备为SD卡和W25Q64的放在一起说。懒得写见谅。

第一步:导入头文件 头文件

第二步:定义宏 如下图把源代码中宏定义注释掉,因为用不到。我这里使用了两种设备,一个W25q64Q64,一个SD卡,所以就定义两个宏。当然,我的ffconf.h文件里面的FF_VOLUMES配置的是2.

你根据前面ffconf.h文件里面的FF_VOLUMES配置为1,所以这里就定义一个宏(命名随意)。或者说你打算使用几个存储设备,这里的宏和ffconf.h文件里面的FF_VOLUMES配置就对应的配置为几。 宏 可能你会问定义这个宏有什么用? 好问题。请看下图 0: FatFs文件系统的打开文件使用的f_open()函数,函数里面的第二个参数就是文件的路径.图中**"0:"写了数字后冒号是必须要的**,也可以写为**“1:”**。那么代表什么意思呢?

根据我在diskio.c文件里面宏定义,0代表的是W25Q64,1代表SD卡。所以"0:123.456.txt"代表W25Q64里面的123456.txt文件。

第三步:配置disk_status函数

status REadID

第四步:配置disk_initialize函数 init 第五步:配置disk_read函数 read

第六步:配置disk_write函数 write

第七步:配置disk_ioctl函数 w25q64: w25q64 SD卡: sd卡

有人会说,不是说sd卡不需要配置disk_ioctl函数吗? 确实,我记得也看到这样的一句话,但是忘记在哪看到的了。只记得说的是如果下面的两个配置为一样的值的话,就不需要配置disk_ioctl函数。但是,经过我测试不配置这个函数,我的程序不行。 在这里插入图片描述 关于是否当SD卡是否需要配置disk_ioctl,我觉得,既然不确定,就配上。

第八步:定义全局变量,挂载文件系统,创建一个文件同时写入数据 测试

第九步:将开发板连接电脑通过U盘的方式查看SD卡或W25Q64里面的文件

我这里的是把W25q64和W25q64通过HC32F4A0的usb连接电脑,虚拟成U盘来查看文件的。这样方便,且简单。

如果你也想把SD卡或W25Q64虚拟通过USB虚拟成U盘的话。但不知道该怎么办的话,别急有官方例程,如图下图。 SD卡U盘 上图中的例程是将SD卡虚拟成U盘在电脑中使用,如果你不是使用SD卡,而是使用W25Q64的话,只需要修改例程中的这个文件文件 把usb_dev_msc_msd.c文件里面的有关的sd卡的操作全部换成W25Q64相关的即可。

下面是我的修改截图在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

第十步:查看结果 结果如下图:

print 结果

以上就是我的所有的配置和我所知道的一些细节,希望对看文章的各位有帮助。 如果上面类容有侵权上面的,请联系删除。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3