OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10451|回复: 18

新手请教使用FATFS挂载SD卡的问题!!!

[复制链接]

7

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-8-26
在线时间
6 小时
发表于 2015-3-25 16:04:47 | 显示全部楼层 |阅读模式
5金钱
请教下各位高手,
    我现在使用原子的STM32F407开发板来对SD卡进行操作,根据例子程序添加了FATFS文件系统,然后程序执行f_mount(fs[0],"0:",1);挂载SD卡的时候就过不去了,看了下断点好像是等死在SD_ReadBlock函数的超时等待的地方,请问下各位碰到过这种情况吗?是什么原因?我的SD卡是在电脑上用FAT32格式化过,不知道有什么影响?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-25 22:38:26 | 显示全部楼层
直接下我们例程测试下,你的SD卡是否可以正常使用?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-8-26
在线时间
6 小时
 楼主| 发表于 2015-3-26 14:52:23 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
例程也不可以挂载。今天我又换了一张SDHC(高速卡 2.0协议)的卡,挂载是可以了,创建了一个TXT文件,但无法写入,然后重新上电再运行的时候,程序在执行SD_EnableWideBusOperation(SDIO_BusWide_4b)到时候就一直死循环在那了。请问下这些都是怎么回事啊?现在做的项目很急,本想不仔细去看SD卡的操作以及FATFS,直接拿你们的程序来用了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-26 23:19:54 | 显示全部楼层
回复【3楼】jayelva2003:
---------------------------------
你用的我们什么开发板?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-8-26
在线时间
6 小时
 楼主| 发表于 2015-3-27 08:49:47 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
ALIENTEK正点原子探索者STM32F407开发板
回复

使用道具 举报

7

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-8-26
在线时间
6 小时
 楼主| 发表于 2015-3-27 10:04:27 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
我今天又反复试了一下,现在的情况是我用高速SD卡可以挂载,而写建文件、写文件、读文件已成功,但是好像不是很稳定,用高速SD卡的话,有时候会在初始化时调用SD_EnableWideBusOperation(SDIO_BusWide_4b)函数选择4位宽度的时候陷入死循环,有时候一切又正常,想请问下这是什么情况,是板子供电的原因吗?
  还有1.1协议版本的SD卡始终挂载不了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-27 23:43:44 | 显示全部楼层
回复【6楼】jayelva2003:
---------------------------------
下载寄存器版本例程试试.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-8-26
在线时间
6 小时
 楼主| 发表于 2015-4-1 15:04:59 | 显示全部楼层

现在使用STM32F407开发+OV2640摄像头做JPEG拍照片的试验,存下来的照片发现有好几张图片重叠在一起了,如下图所示,将jpeg_dma_bufsize改小后就正常了,请问下是缓冲太大的原因吗?我现在用的分辨率是1600*1200,如果想改分辨率为800*600的话,是调用这两个函数OV2640_ImageWin_Set(0,0,800,600);OV2640_OutSize_Set(800,600);  修改吗?好像设置完没效果,数据保存后读不出来。

回复

使用道具 举报

7

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-8-26
在线时间
6 小时
 楼主| 发表于 2015-4-1 15:06:34 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
原子哥,我现在使用OV2640进行JPEG拍照遇到了问题,问题描述在这篇帖子的上一条回复中,您帮我分析下是什么问题。谢谢!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-2 00:13:12 | 显示全部楼层
回复【8楼】jayelva2003:
---------------------------------
OV2640_OutSize_Set(lcddev.width,lcddev.height); 
就这个函数即可。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-8-26
在线时间
6 小时
 楼主| 发表于 2015-4-2 09:55:12 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
请问下图片重叠是什么原因?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-2 23:20:01 | 显示全部楼层
回复【11楼】jayelva2003:
---------------------------------
可能是数组溢出了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-8-26
在线时间
6 小时
 楼主| 发表于 2015-4-7 15:52:44 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
你好,我现在又碰到这么个问题,我用TIMER1的通道1产生PWM输出,想产生24M频率,50%左右占空比,引脚用的是PA8,但是一直没有输出,请原子哥帮我看下我的配置有什么问题吗?
void TIM1_PWM_Init(u32 arr,u32 psc)
{
//此部分需手动修改IO口设置

GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);   //TIM1时钟使能    
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);  //使能PORTA时钟

GPIO_PinAFConfig(GPIOA,GPIO_PinSource8,GPIO_AF_TIM1); //GPIOA8复用为定时器1

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;           //GPIOA8
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //复用功能
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽复用输出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉
GPIO_Init(GPIOA,&GPIO_InitStructure);              //初始化PA8
  
TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; 

TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);//初始化定时器1

//初始化TIM1 Channel1 WM模式  
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低

TIM_OCInitStructure.TIM_Pulse = 3;
TIM_OC1Init(TIM1, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM1 4OC1

TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);  //使能TIM1在CCR1上的预装载寄存器
 
  TIM_ARRPreloadConfig(TIM1,ENABLE);//ARPE使能 
  
TIM_Cmd(TIM1, ENABLE);  //使能TIM1

TIM_CtrlPWMOutputs(TIM1,ENABLE);
}

然后主函数调用TIM1_PWM_Init(7-1,1-1); //频率不分频为168M,重载值为7,即产生24M频率
回复

使用道具 举报

9

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2015-8-27
在线时间
22 小时
发表于 2016-1-7 16:20:03 | 显示全部楼层
正点原子 发表于 2015-3-27 23:43
回复【6楼】jayelva2003:
---------------------------------
下载寄存器版本例程试试.

请问原子,我用的是战舰的V3开发板,用的例程是ov2640JPEG拍照的库函数版,现在SD卡挂载这一步过不去了,具体停在了find_volume()中,我用金士顿的8G卡,Sandisk的8G卡和4G卡,都是一个现象,请问这是怎么回事?之前您遇到过吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-1-7 23:02:25 | 显示全部楼层
wangyueming 发表于 2016-1-7 16:20
请问原子,我用的是战舰的V3开发板,用的例程是ov2640JPEG拍照的库函数版,现在SD卡挂载这一步过不去了, ...

说明SD卡初始化部分存在问题.得调试
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-3-23
在线时间
5 小时
发表于 2017-6-20 09:47:08 | 显示全部楼层
wangyueming 发表于 2016-1-7 16:20
请问原子,我用的是战舰的V3开发板,用的例程是ov2640JPEG拍照的库函数版,现在SD卡挂载这一步过不去了, ...

请问你解决了停留在find_volume()中这个问题了吗,我的也出现这个问题了。但是初始化我是一步一步操作完了的,不知道哪有问题。
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-3-23
在线时间
5 小时
发表于 2017-6-20 09:52:06 | 显示全部楼层
正点原子 发表于 2016-1-7 23:02
说明SD卡初始化部分存在问题.得调试

原子哥,我调试的时候也停留在find_volume()中,返回diskio_err。我按照你的方法把初始化过程都调试了一遍,我用的SDHC卡,上电通信什么都没问题,我这发CMD58指令,也可以接收到是SDHC卡的回复。您估计现在可能哪有问题呢?我程序里面先初始化spi,然后初始化SD卡,再就进行f_mount和f_open(f_mount参数是0,没有立即挂载),是在f_open中调用find_volume中的问题。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-20 21:33:21 | 显示全部楼层
czyxhy 发表于 2017-6-20 09:52
原子哥,我调试的时候也停留在find_volume()中,返回diskio_err。我按照你的方法把初始化过程都调试了一 ...

直接用我们例程试试看
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2012-8-7
在线时间
4 小时
发表于 2019-5-15 11:11:31 | 显示全部楼层
求助:f429  OV2640实验 挂载SD卡错误,卡在这里了,SD卡实验能读出SD卡容量什么的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 11:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表