中级会员
 
- 积分
- 481
- 金钱
- 481
- 注册时间
- 2017-7-29
- 在线时间
- 233 小时
|
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卡直接歇菜了。单片机处理不过来的
|