zoukankan      html  css  js  c++  java
  • 【GMT43智能液晶模块】例程十二:SDIO实验——读取SD卡信息

    实验原理:

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

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

    库等资源。

    示例截图:

    源代码下载链接:

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

    GMT43购买链接:

    核心代码:

    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 = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        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 = 1;
        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 << 16));
      }
    
      if (errorstatus == SD_OK)
      {
        errorstatus = SD_EnableWideBusOperation(SDIO_BusWide_4b);
      }  
    
      return(errorstatus);
    }
  • 相关阅读:
    更改ORACLE_HOME_NAME
    Linux 查看裸设备大小
    Linux 日常操作
    Linux 高 wio 分析
    Linux 大页: HugePage 与transparent HugePage
    CentOS 8 配置本地YUM源
    MySQL 表压缩
    HIVE 处理json结构数据
    Emacs org-mode 2 文档结构
    CentOS 7 Oracle 19.3 单实例静默安装
  • 原文地址:https://www.cnblogs.com/xiaomagee/p/8333874.html
Copyright © 2011-2022 走看看