OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
123
返回列表 发新帖
楼主: 八度空间

STM32F103xxx的官方SDIO驱动移植,终于搞定了

[复制链接]

4

主题

15

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2016-3-3
在线时间
19 小时
发表于 2016-3-18 15:19:47 | 显示全部楼层
八度空间 发表于 2016-3-18 12:44
我的代码好像没开,但是能进入中断服务函数

如果你没调用过“SDIO_ITConfig()”函数且没写过 "SDIO->MASK"寄存器,不就等于没开SDIO中断吗?还能进入SDIO的中断服务函数?
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2016-3-3
在线时间
19 小时
发表于 2016-3-18 15:33:50 | 显示全部楼层
八度空间 发表于 2016-3-18 12:44
我的代码好像没开,但是能进入中断服务函数

你说的中断服务函数,会不会是DMA2通道4的中断服务函数啊?
回复 支持 反对

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2016-3-3
在线时间
19 小时
发表于 2016-3-18 15:55:36 | 显示全部楼层
八度空间 发表于 2016-3-18 12:44
我的代码好像没开,但是能进入中断服务函数

哎呀,好在STM32可以连keil调试,今天认真看着变量变化来调试才发现,有个不时调用的函数中调用了“SDIO_DeInit()”,而SDIO_DeInit()中有“SDIO->MASK = 0x00000000;”这一句,怪不得百度没人提,原理是个低级错误,拿了别人的代码来用,没注意,被这问题卡了好久,不好意思,打扰了。
回复 支持 反对

使用道具 举报

13

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2014-8-4
在线时间
56 小时
发表于 2016-3-31 09:44:25 | 显示全部楼层
我把探索者F407 SDIO实验移植到我的板子F411里,512M的TF卡可以初始化完成。但是4G和8G的初始化五分钟才能初始化完成,请问这个问题你遇到过吗?
在吃苦的年纪,何必那么安逸?
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-3-31 10:09:42 | 显示全部楼层
huifeidetuzi 发表于 2016-3-31 09:44
我把探索者F407 SDIO实验移植到我的板子F411里,512M的TF卡可以初始化完成。但是4G和8G的初始化五分钟才能 ...

没遇到过
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

13

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2014-8-4
在线时间
56 小时
发表于 2016-4-5 10:58:36 | 显示全部楼层
八度空间老师你好:
在SDIO
if(errorstatus==SD_OK)errorstatus=SD_EnableWideBusOperation(SDIO_BusWide_4b);        //4位宽度,如果是MMC卡,则不能用4位模式

         将数据宽度设置为1位时,读写是没有问题的。但是设置为4位时,将会写不进去,并且程序死在等待DMA配置。

我用的512M 、4GTF卡。
在吃苦的年纪,何必那么安逸?
回复 支持 反对

使用道具 举报

13

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2014-8-4
在线时间
56 小时
发表于 2016-4-5 10:59:14 | 显示全部楼层
八度空间老师你好:
    在SDIO操作中,遇到以下问题:
if(errorstatus==SD_OK)errorstatus=SD_EnableWideBusOperation(SDIO_BusWide_4b);        //4位宽度,如果是MMC卡,则不能用4位模式

         将数据宽度设置为1位时,读写是没有问题的。但是设置为4位时,将会写不进去,并且程序死在等待DMA配置。

我用的512M 、4GTF卡。
恳求帮忙解决!
在吃苦的年纪,何必那么安逸?
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-4-5 12:45:20 | 显示全部楼层
huifeidetuzi 发表于 2016-4-5 10:59
八度空间老师你好:
    在SDIO操作中,遇到以下问题:
if(errorstatus==SD_OK)errorstatus=SD_EnableWi ...

换张卡试下,我的1G、2G、4G、8G都没问题
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

55

主题

243

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1608
金钱
1608
注册时间
2012-12-30
在线时间
241 小时
发表于 2016-4-7 15:37:04 | 显示全部楼层
我读某些文件经常会在发送CMD16 后返回超时  这是为什么?当把卡格式化之后,把相同文件放进去有没有了
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-4-7 21:43:21 | 显示全部楼层
wgh1990 发表于 2016-4-7 15:37
我读某些文件经常会在发送CMD16 后返回超时  这是为什么?当把卡格式化之后,把相同文件放进去有没有了

没试过这样的,可以仿真看下寄存器的值,状态寄存器
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

55

主题

243

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1608
金钱
1608
注册时间
2012-12-30
在线时间
241 小时
发表于 2016-4-8 08:34:58 | 显示全部楼层
八度空间 发表于 2016-4-7 21:43
没试过这样的,可以仿真看下寄存器的值,状态寄存器

TF卡里面的文件被读坏了,把TF卡用读卡器放电脑上,也打不开那个文件了,提示无法读取源文件或者磁盘,但是能看到那个文件,就是打不开了,其他文件都可以。有什么操作是会把卡读坏了?FATFS上我是禁止写的,只开了只读。
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-4-8 09:28:16 | 显示全部楼层
wgh1990 发表于 2016-4-8 08:34
TF卡里面的文件被读坏了,把TF卡用读卡器放电脑上,也打不开那个文件了,提示无法读取源文件或者磁盘,但 ...

我没试过搞坏卡的,电脑格式化一个卡,在用单片机进行操作,之后用电脑读取看下什么情况
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

55

主题

243

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1608
金钱
1608
注册时间
2012-12-30
在线时间
241 小时
发表于 2016-4-8 09:34:33 | 显示全部楼层
八度空间 发表于 2016-4-8 09:28
我没试过搞坏卡的,电脑格式化一个卡,在用单片机进行操作,之后用电脑读取看下什么情况

格式化之后就会好了 但是时间长了 这种情况还会出现
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-4-8 21:52:12 | 显示全部楼层
wgh1990 发表于 2016-4-8 09:34
格式化之后就会好了 但是时间长了 这种情况还会出现

不会吧,我在产品上都跑了1年多了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

55

主题

243

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1608
金钱
1608
注册时间
2012-12-30
在线时间
241 小时
发表于 2016-4-9 09:36:17 | 显示全部楼层
八度空间 发表于 2016-4-8 21:52
不会吧,我在产品上都跑了1年多了

那你觉得我有什么需要注意的吗? 比如我那方面操作不当导致的打开方式不对,读取方式需要注意
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-4-9 22:25:32 | 显示全部楼层
wgh1990 发表于 2016-4-9 09:36
那你觉得我有什么需要注意的吗? 比如我那方面操作不当导致的打开方式不对,读取方式需要注意

底层操作只要移植好一般都没什么问题,不要乱搞就是了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

13

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2014-8-4
在线时间
56 小时
发表于 2016-5-13 16:51:33 | 显示全部楼层
八度空间 发表于 2014-2-14 14:50
回复【15楼】正点原子:
---------------------------------
原子哥,我将你的例程的SDIO寄存器版本驱动代替 ...

八度空间老是:您的程序下载进去到我战舰F1 V2.3的板子上就是可以跑的!(4位查询和DMA模式都是可以的)我将原子的SDIO程序下载到板子上(查询模式可以跑 DMA模式就是不行的) 八度空间大哥 你遇到过我怎么回事
在吃苦的年纪,何必那么安逸?
回复 支持 反对

使用道具 举报

13

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2014-8-4
在线时间
56 小时
发表于 2016-5-13 16:56:47 | 显示全部楼层
八度空间 发表于 2014-2-16 19:45
回复【19楼】正点原子:
---------------------------------
还是要向原子哥学习才行呀

用您的SDIO做底层 读写都是正确的 移植FAT32文件系统会报错(报错内容:FR_NO_FILESYSTEM,                /* (13) There is no valid FAT volume */)您还有移植好的文件系统吗?能上传一份吗
在吃苦的年纪,何必那么安逸?
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-5-13 20:45:15 | 显示全部楼层
huifeidetuzi 发表于 2016-5-13 16:56
用您的SDIO做底层 读写都是正确的 移植FAT32文件系统会报错(报错内容:FR_NO_FILESYSTEM,                /* (13) Ther ...

这个要找找,好久没用了,不知道放什么地方去了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

13

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2014-8-4
在线时间
56 小时
发表于 2016-5-16 13:40:25 | 显示全部楼层
八度空间 发表于 2016-5-13 20:45
这个要找找,好久没用了,不知道放什么地方去了

八度空间老师你好:
             原子F407SDIO移植到我板子上DMA不能跑,现在只有你的SDIO底层可以跑,再移植原子的FAT32文件系统就会报错(FR_NO_FILESYSTEM),恳求一份你的FAT32文件系统例程
在吃苦的年纪,何必那么安逸?
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-5-17 09:21:00 | 显示全部楼层
huifeidetuzi 发表于 2016-5-16 13:40
八度空间老师你好:
             原子F407SDIO移植到我板子上DMA不能跑,现在只有你的SDIO底层可以跑, ...

我的调试例程么?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

13

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2014-8-4
在线时间
56 小时
发表于 2016-5-17 16:57:38 | 显示全部楼层

谢谢 八度空间老师 根据你的例程 把原子F4例程修改好了
在吃苦的年纪,何必那么安逸?
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-5-18 09:08:57 | 显示全部楼层
huifeidetuzi 发表于 2016-5-17 16:57
谢谢 八度空间老师 根据你的例程 把原子F4例程修改好了

恭喜恭喜
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2016-7-18
在线时间
3 小时
发表于 2016-9-23 21:54:55 | 显示全部楼层
请问一下 我用你的程序测试嘛 但是他说这个 MY NVIC init 没有定义啊
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-9-24 08:56:43 | 显示全部楼层
毛科丹 发表于 2016-9-23 21:54
请问一下 我用你的程序测试嘛 但是他说这个 MY NVIC init 没有定义啊

system文件夹里边有,其实你修改成库函数也是可以的,就是配置中断优先级什么的
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

19

主题

72

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-4-9
在线时间
123 小时
发表于 2016-12-23 15:21:44 | 显示全部楼层
读一个512可以 但是读多个512 就硬件错误了....不知道为什么
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2016-12-31 13:35:42 | 显示全部楼层
神秘狼 发表于 2016-12-23 15:21
读一个512可以 但是读多个512 就硬件错误了....不知道为什么

不会吧,是不是内存溢出了?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-9-21
在线时间
7 小时
发表于 2019-9-24 11:40:09 | 显示全部楼层
下载来学习, 谢谢楼主.
回复 支持 反对

使用道具 举报

0

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2014-9-18
在线时间
21 小时
发表于 2020-5-9 18:03:04 | 显示全部楼层
向楼主学习,顶!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 06:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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