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

2019-07-20 11:46发布

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






友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-07-20 12:20
示波器测量SDIO_CK的频率。另外,速度并不是你CLK有多快,就能读快的。最直接的体现,就是速度快了,SD卡直接歇菜了。单片机处理不过来的
142zjb
2楼-- · 2019-07-20 15:07
142zjb
3楼-- · 2019-07-20 18:06
 精彩回答 2  元偷偷看……
142zjb
4楼-- · 2019-07-20 18:45
有谁用过旁路模式的设置吗
142zjb
5楼-- · 2019-07-20 20:08
SD_PowerON()时对SDIO_CK设置时,要先设置不大于400khz,原子程序这里就已经是利用了公式SDIOCLK/(2+CLKDIV)=400khz,但是改成旁路模式的话,这里的公式也会不存在吗?需要怎么改?