实验原理:

  STM32F429上带有SDIO控制器,GMT43液晶模块上将SDIO连接到TF卡座上。本

实验将Micro SD卡插入TF卡座上即可。SD卡中可存放液晶显示模块需要显示的图片、字

库等资源。

示例截图:

【GMT43智能液晶模块】例程十二:SDIO实验——读取SD卡信息-LMLPHP

源代码下载链接:

链接:https://pan.baidu.com/s/1kXf5erd 密码:8qpr

GMT43购买链接:

【GMT43智能液晶模块】例程十二:SDIO实验——读取SD卡信息-LMLPHP

【GMT43智能液晶模块】例程十二:SDIO实验——读取SD卡信息-LMLPHP

核心代码:

SD_Error SD_Init(void)
{
__IO SD_Error errorstatus = SD_OK; NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
// SDIO Interrupt ENABLE
NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = ;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = ;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
// DMA2 STREAMx Interrupt ENABLE
NVIC_InitStructure.NVIC_IRQChannel = SD_SDIO_DMA_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = ;
NVIC_Init(&NVIC_InitStructure); /* SDIO Peripheral Low Level Init */
SD_LowLevel_Init(); SDIO_DeInit(); errorstatus = SD_PowerON(); if (errorstatus != SD_OK)
{
/*!< CMD Response TimeOut (wait for CMDSENT flag) */
return(errorstatus);
} errorstatus = SD_InitializeCards(); if (errorstatus != SD_OK)
{
/*!< CMD Response TimeOut (wait for CMDSENT flag) */
return(errorstatus);
} /*!< Configure the SDIO peripheral */
/*!< SDIO_CK = SDIOCLK / (SDIO_TRANSFER_CLK_DIV + 2) */
/*!< on STM32F4xx devices, SDIOCLK is fixed to 48MHz */
SDIO_InitStructure.SDIO_ClockDiv = SDIO_TRANSFER_CLK_DIV;
SDIO_InitStructure.SDIO_ClockEdge = SDIO_ClockEdge_Rising;
SDIO_InitStructure.SDIO_ClockBypass = SDIO_ClockBypass_Disable;
SDIO_InitStructure.SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable;
SDIO_InitStructure.SDIO_BusWide = SDIO_BusWide_1b;
SDIO_InitStructure.SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable;
SDIO_Init(&SDIO_InitStructure); /*----------------- Read CSD/CID MSD registers ------------------*/
errorstatus = SD_GetCardInfo(&SDCardInfo); if (errorstatus == SD_OK)
{
/*----------------- Select Card --------------------------------*/
errorstatus = SD_SelectDeselect((uint32_t) (SDCardInfo.RCA << ));
} if (errorstatus == SD_OK)
{
errorstatus = SD_EnableWideBusOperation(SDIO_BusWide_4b);
} return(errorstatus);
}
04-17 20:21