求助,新版STM32驱动框架中sdio修改时钟问题

发布于 2019-05-09 08:40:36    浏览:1565
请教一个问题,在新版的stm32的bsp框架下,怎么修改sdio的时钟配置?默认的好像是400k,需要修改到24M,我用的是正点原子阿波罗429板子,在原来的驱动版本在Drv_sdio_sd.c中可以设置,但是在新版框架中,没找到在哪里修改,请高手指点一下


查看更多

6 个回答
xanadu
xanadu 2019-05-09
This guy hasn't written anything yet
int rt_hw_sdio_init(void)
{
struct stm32_sdio_des sdio_des;
SD_HandleTypeDef hsd;
hsd.Instance = SDCARD_INSTANCE;
{
rt_uint32_t tmpreg = 0x00U;
#if defined(SOC_SERIES_STM32F1)
/* enable DMA clock && Delay after an RCC peripheral clock enabling*/
SET_BIT(RCC->AHBENR, sdio_config.dma_rx.dma_rcc);
tmpreg = READ_BIT(RCC->AHBENR, sdio_config.dma_rx.dma_rcc);
#elif defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) || defined(SOC_SERIES_STM32L4)
SET_BIT(RCC->AHB1ENR, sdio_config.dma_rx.dma_rcc);
/* Delay after an RCC peripheral clock enabling */
tmpreg = READ_BIT(RCC->AHB1ENR, sdio_config.dma_rx.dma_rcc);
#endif
UNUSED(tmpreg); /* To avoid compiler warnings */
}
HAL_NVIC_SetPriority(SDIO_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(SDIO_IRQn);
HAL_SD_MspInit(&hsd);

sdio_des.clk_get = stm32_sdio_clock_get;
sdio_des.hw_sdio = (struct stm32_sdio *)SDCARD_INSTANCE;
sdio_des.rxconfig = DMA_RxConfig;
sdio_des.txconfig = DMA_TxConfig;

host = sdio_host_create(&sdio_des);
if (host == RT_NULL)
{
LOG_E("host create fail");
return -1;
}

return 0;
}
在新版bsp框架中,唯一调用的是这个函数,自动初始化。是否在这里设置分频系数,时钟呢?但是没看出来哪里设置啊,而且为什么找不到注册sd卡到驱动框架的语句呢?
还没想好
还没想好 2019-05-09
This guy hasn't written anything yet
1. SDIO 上电初始化阶段,默认 400KHZ ,高了容易初始化失败。

2. SDIO 的时钟由驱动框架控制,初始化完成之后,会自动切换到高速模式
xanadu
xanadu 2019-05-10
This guy hasn't written anything yet
好的,谢谢,我再试试。另外想请教一下,我用sd卡挂载文件系统是可以的,用emmc失败了,请问驱动是支持emmc卡的么?用的是stm32f429跑的rtt4.0
xanadu
xanadu 2019-05-29
This guy hasn't written anything yet
最后问题是emmc没有格式化导致的,后来解决了,还是在这边说一下,希望对以后朋友有帮助
yangsmithcool
yangsmithcool 2019-05-31
This guy hasn't written anything yet
楼主有没有遇到上电后再插入卡会进入hard fault的问题啊
whj467467222
whj467467222 认证专家 2019-06-01
This guy hasn't written anything yet
yangsmithcool 发表于 2019-5-31 19:36
楼主有没有遇到上电后再插入卡会进入hard fault的问题啊


SD卡有一个脚是可以判断是否有SD插上,你可以通过这个来判断是否可以进行初始化

撰写答案

请登录后再发布答案,点击登录
关注者
0
被浏览
1.6k

发布
问题

分享
好友

手机
浏览

扫码手机浏览