用stm32移植FATFS的过程中,我弄了几天始终搞不懂2个问题。关于底层引脚和f_read()的问题。 5
我发现网上大部分的例程都是在"sdcard.c"中直接/*ConfigurePC.08,PC.09,PC.10,PC.11,PC.12pin:D0,D1,D2,D3,CL...
我发现网上大部分的例程都是在"sdcard.c"中直接 /* Configure PC.08, PC.09, PC.10, PC.11, PC.12 pin: D0, D1, D2, D3, CLK pin */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* Configure PD.02 CMD line */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_Init(GPIOD, &GPIO_InitStructure);
问题是,我可以更改它的引脚吗?我找不到他们与SD卡的联系!
问题二:f_read()中,发现只能读取到该文件的前512个字节,然后就读不下去了(我设置char buf[512];)。有时候遇到读几个MB时,没那么大的内容怎么办,为什么不会借着往下读。换下一个簇读写,应该可以的,我看SD读写是可以的。我用f_lseek(),发现更改指针不行啊!
我想到了一种比较笨的方法!但是能连续地读内容来,希望跟我有一样疑问的人,有个参考!
for(i=0;i<20;i++)
{
result = f_mount(0, &fs);
result = f_opendir(&DirInf, "/");
result = f_open(&file, "123.txt", FA_OPEN_EXISTING | FA_READ);
result = f_lseek(&file,i*512);
result = f_read(&file, &buf, sizeof(buf) - 1, &bw);
printf("\r\narmfly.txt content : \r\n%s\r\n", buf);
f_close(&file);
f_mount(0, NULL);
} 展开
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* Configure PD.02 CMD line */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_Init(GPIOD, &GPIO_InitStructure);
问题是,我可以更改它的引脚吗?我找不到他们与SD卡的联系!
问题二:f_read()中,发现只能读取到该文件的前512个字节,然后就读不下去了(我设置char buf[512];)。有时候遇到读几个MB时,没那么大的内容怎么办,为什么不会借着往下读。换下一个簇读写,应该可以的,我看SD读写是可以的。我用f_lseek(),发现更改指针不行啊!
我想到了一种比较笨的方法!但是能连续地读内容来,希望跟我有一样疑问的人,有个参考!
for(i=0;i<20;i++)
{
result = f_mount(0, &fs);
result = f_opendir(&DirInf, "/");
result = f_open(&file, "123.txt", FA_OPEN_EXISTING | FA_READ);
result = f_lseek(&file,i*512);
result = f_read(&file, &buf, sizeof(buf) - 1, &bw);
printf("\r\narmfly.txt content : \r\n%s\r\n", buf);
f_close(&file);
f_mount(0, NULL);
} 展开
4个回答
展开全部
楼主,请问你的FATFS读取文件没有问题吗??
我也移植了,但是出现的问题就是FATFS读取不胡谈对,,在f_open()里面运行时候,雀碰读出fmt=2,然后就结束了FATFS文件系统运行。。很顷做谈郁闷……
我是STM32+SDIO+FATFS操作,SD工作没有问题,因为我调用disk_read()读取出来了SD卡的内容,就是FATFS不行。。能否请楼主给予以下你的工程参考一下呢?/
还有就是网上有人说SDIO读取fatfs时候会出现DMA报错,所以使用有问题。。不知道为何你的没有问题……
我邮箱是371403578@qq.com
我也移植了,但是出现的问题就是FATFS读取不胡谈对,,在f_open()里面运行时候,雀碰读出fmt=2,然后就结束了FATFS文件系统运行。。很顷做谈郁闷……
我是STM32+SDIO+FATFS操作,SD工作没有问题,因为我调用disk_read()读取出来了SD卡的内容,就是FATFS不行。。能否请楼主给予以下你的工程参考一下呢?/
还有就是网上有人说SDIO读取fatfs时候会出现DMA报错,所以使用有问题。。不知道为何你的没有问题……
我邮箱是371403578@qq.com
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SD卡的引脚配置可以改吧亮信,那要看皮唤硬件连接燃键凯,一般用SPI接口或者使用SDIO接口,就看在哪个引脚上,改变就行
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也遇到了第二郑肢种情况,直接STCUBEMX生成的,USB MSC FATfs 读的时候只能读512以内的,超过的就会出错,咐没只能分多次衡丛纳读,估计官方的USB驱动有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询