OpenEdv-开源电子网

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

SDIO 1bit读写都正常,就是非常慢,4bit查询模式、DMA模式挂掉

[复制链接]

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-10-28
在线时间
0 小时
发表于 2015-11-25 16:49:41 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true] 代码用的是原子F407的[/mw_shl_code] [mw_shl_code=c,true]把关闭所有中断屏蔽掉,然后直接使用,并添加到文件系统,可以读写文件,但是会漏写,写400K的文件,只写进了200多k的样子,[/mw_shl_code] [mw_shl_code=c,true]查出错误在这里发生了[/mw_shl_code] [mw_shl_code=c,true]
[mw_shl_code=c,true] else if(SDIO_GetFlagStatus(SDIO_FLAG_STBITERR) != RESET) //接收起始位错误 { SDIO_ClearFlag(SDIO_FLAG_STBITERR);//清除错误标志 return SD_START_BIT_ERR; }[/mw_shl_code] 原子哥说是太快了,我又一直加大分频一直到0x18,结果还是没变化,一样的错误。

换用DMA模式,代码一直停在这里
while (DMA_GetCmdStatus(DMA2_Stream3) != DISABLE){}//等待DMA可配置


但是把初始化中的4位数据线改成1位的时候,读写都正常,就是很慢很慢[/mw_shl_code] [mw_shl_code=c,true] [/mw_shl_code] [mw_shl_code=c,true]if(errorstatus==SD_OK)errorstatus=SD_EnableWideBusOperation(SDIO_BusWide_1b);[/mw_shl_code] [mw_shl_code=c,true] [mw_shl_code=c,true]我看到貌似不少人遇到这样的问题,但是没找到解决了分享一下的,求指教。。。。[/mw_shl_code]
[/mw_shl_code] [mw_shl_code=c,true] [mw_shl_code=c,true]另外插问一下:例程SDIO DMA配置里面的DMA传输长度为啥是0,事实上用0 还是512 都没影响,为什么呢?[/mw_shl_code] [/mw_shl_code] [mw_shl_code=c,true]  DMA_InitStructure.DMA_BufferSize = bufsize;//数据传输量[/mw_shl_code] [mw_shl_code=c,true]会的大神帮下小弟 谢谢了[/mw_shl_code]

越夜越拉风丶
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-10-28
在线时间
0 小时
 楼主| 发表于 2015-11-25 16:54:48 | 显示全部楼层
越夜越拉风丶
回复

使用道具 举报

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-10-28
在线时间
0 小时
 楼主| 发表于 2015-11-25 17:04:13 | 显示全部楼层
代码用的是原子F407的
把关闭所有中断屏蔽掉,然后直接使用,并添加到文件系统,可以读写文件,但是会漏写,写400K的文件,只写进了200多k的样子,
查出错误在这里发生了

else if(SDIO_GetFlagStatus(SDIO_FLAG_STBITERR) != RESET)    //接收起始位错误
    {
            SDIO_ClearFlag(SDIO_FLAG_STBITERR);//清除错误标志
            return SD_START_BIT_ERR;   
    }
原子哥说是太快了,我又一直加大分频一直到0x18,结果还是没变化,一样的错误。




换用DMA模式,代码一直停在这里
while (DMA_GetCmdStatus(DMA2_Stream3) != DISABLE){}//等待DMA可配置




但是把初始化中的4位数据线改成1位的时候,读写都正常,就是很慢很慢
if(errorstatus==SD_OK)errorstatus=SD_EnableWideBusOperation(SDIO_BusWide_1b);

我看到貌似不少人遇到这样的问题,但是没找到解决了分享一下的,求指教。。。。

另外插问一下:例程SDIO DMA配置里面的DMA传输长度为啥是0,事实上用0  还是512  都没影响,为什么呢?

  DMA_InitStructure.DMA_BufferSize = bufsize;//数据传输量

会的大神帮下小弟  谢谢了
越夜越拉风丶
回复

使用道具 举报

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-10-28
在线时间
0 小时
 楼主| 发表于 2015-11-25 17:09:36 | 显示全部楼层


这是2.0高容量吧,8G的试了 4G的也试了  结果都一样
越夜越拉风丶
回复

使用道具 举报

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-10-28
在线时间
0 小时
 楼主| 发表于 2015-11-25 18:30:56 | 显示全部楼层
大神们在哪里    求解
越夜越拉风丶
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2015-11-25 19:12:22 | 显示全部楼层
4Bit好像跟库函数有关,以前搞103的时候有个低版本的SDIO就能4bit,库版本升级后4bit初始化就出错
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-11-25 22:19:20 | 显示全部楼层
不能屏蔽关闭中断!!
用我代码的时候,先不要改,直接测试。测试成功再去改,容易找问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-10-28
在线时间
0 小时
 楼主| 发表于 2015-11-26 11:41:35 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
把中断开了也不行  一样的错误 
而且DMA模式不用屏蔽中断也是不行啊
越夜越拉风丶
回复

使用道具 举报

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-10-28
在线时间
0 小时
 楼主| 发表于 2015-11-26 15:24:22 | 显示全部楼层
HELP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
越夜越拉风丶
回复

使用道具 举报

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-10-28
在线时间
0 小时
 楼主| 发表于 2015-11-26 18:35:07 | 显示全部楼层
else if(SDIO_GetFlagStatus(SDIO_FLAG_STBITERR) != RESET)  //接收起始位错误
{
  SDIO_ClearFlag(SDIO_FLAG_STBITERR);//
return SD_START_BIT_ERR;  
}  
这到底咋回事呢?唉...
越夜越拉风丶
回复

使用道具 举报

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-10-28
在线时间
0 小时
 楼主| 发表于 2015-11-26 18:36:26 | 显示全部楼层
卡换了不少, 时钟改分频改0x30了,还是这里问题
越夜越拉风丶
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-11-26 23:13:56 | 显示全部楼层
回复【8楼】qq88714082010:
---------------------------------
在我们开发板上跑的好好的哦
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-10-28
在线时间
0 小时
 楼主| 发表于 2015-11-27 15:00:56 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
原子哥,这个文档提到了没有检测到起始位问题,我拿你的例程对照了一下,只看出少了个延时,但事实上我加上延时还是一样,帮看看还有哪里不同么?
文档链接   http://blog.csdn.net/xuzhenglim/article/details/5632176
越夜越拉风丶
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 18:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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