OpenEdv-开源电子网

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

关于SDIO初始化的旁路模式有点问题

[复制链接]

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
发表于 2017-9-26 22:19:45 | 显示全部楼层 |阅读模式
1金钱
SD卡的SDIO初始化时,原子的程序默认是设置成 不使能旁路模式,SDIO_CK的的时钟为SDIOCLK/(2+CLKDIV),我用的是SDHC卡,程序中CLKDIV设置为0,SDIOCLK固定为48Mhz,即,SDIO_CK=24Mhz
我改成使能旁路模式(并把程序中相应设置CLKDIV,即设置SDIO->CLKCR的程序注释),SDIO_CK的时钟就是直接由SDIOCLK提供,理论就是SDIO_CK=48Mhz

我读图片时检测发现,旁路模式使能和不使能区别不大,是有提速,但是理论不应该是快一倍的吗?涉及到的设置还有哪些吗?

我改的部分就是以下语句而已,
SD_Error SD_PowerON(void)函数中:
    SDIO_InitStructure.SDIO_ClockBypass = SDIO_ClockBypass_Enable;

SD_Error SD_Init(void)函数中(注释):
//                if(SDCardInfo.CardType==SDIO_STD_CAPACITY_SD_CARD_V1_1||SDCardInfo.CardType==SDIO_STD_CAPACITY_SD_CARD_V2_0)
//                {
//                        clkdiv=SDIO_TRANSFER_CLK_DIV+2;        //V1.1/V2.0卡,设置最高48/4=12Mhz
//                }else clkdiv=SDIO_TRANSFER_CLK_DIV;        //SDHC等其他卡,设置最高48/2=24Mhz
//                SDIO_Clock_Set(clkdiv);        //设置时钟频率,SDIO时钟公式:SDIO_CK时钟=SDIOCLK/[clkdiv+2];其中,SDIOCLK固定为48Mhz






最佳答案

查看完整内容[请看2#楼]

示波器测量SDIO_CK的频率。另外,速度并不是你CLK有多快,就能读快的。最直接的体现,就是速度快了,SD卡直接歇菜了。单片机处理不过来的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-9-26 22:19:46 | 显示全部楼层
示波器测量SDIO_CK的频率。另外,速度并不是你CLK有多快,就能读快的。最直接的体现,就是速度快了,SD卡直接歇菜了。单片机处理不过来的
回复

使用道具 举报

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
 楼主| 发表于 2017-9-26 22:21:35 | 显示全部楼层
回复

使用道具 举报

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
 楼主| 发表于 2017-9-26 22:27:52 | 显示全部楼层
SDIOCLK固定为48Mhz,这个部分是在底层本身已经设置好了吧,在时钟树那里对PLL48CK设置各个参数对吧
回复

使用道具 举报

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
 楼主| 发表于 2017-9-27 20:48:48 | 显示全部楼层
有谁用过旁路模式的设置吗
回复

使用道具 举报

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
 楼主| 发表于 2017-9-27 21:20:05 | 显示全部楼层
SD_PowerON()时对SDIO_CK设置时,要先设置不大于400khz,原子程序这里就已经是利用了公式SDIOCLK/(2+CLKDIV)=400khz,但是改成旁路模式的话,这里的公式也会不存在吗?需要怎么改?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 00:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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