SD卡实验的一些疑问。

2019-07-20 14:36发布

SD_PowerON函数部分:
         /*初始化时的时钟不能大于400KHz*/
  SDIO_InitStructure.SDIO_ClockDiv = SDIO_INIT_CLK_DIV;        /* HCLK = 72MHz(HCLK不是等于168MHZ吗), SDIOCLK = 72MHz, SDIO_CK = HCLK/(178 + 2) = 400 KHz */
  SDIO_InitStructure.SDIO_ClockEdge = SDIO_ClockEdge_Rising;
  SDIO_InitStructure.SDIO_ClockBypass = SDIO_ClockBypass_Disable;  //不使用bypass模式,直接用HCLK进行分频得到SDIO_CK(这个不是使用SDIOCLK分频吗?见下图)
vvv.png
  SDIO_InitStructure.SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable;        // 空闲时不关闭时钟电源
  SDIO_InitStructure.SDIO_BusWide = SDIO_BusWide_1b;                                         //1位数据线(为什么这个是一位,后面变成四位了?)
  SDIO_InitStructure.SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable;//硬件流
  SDIO_Init(&SDIO_InitStructure);




        errorstatus=SD_PowerON();                        //SD卡上电
        if(errorstatus==SD_OK)errorstatus=SD_InitializeCards();                        //初始化SD卡                                                                                                                  
          if(errorstatus==SD_OK)errorstatus=SD_GetCardInfo(&SDCardInfo);        //获取卡信息
        if(errorstatus==SD_OK)errorstatus=SD_SelectDeselect((u32)(SDCardInfo.RCA<<16));//选中SD卡   
           if(errorstatus==SD_OK)errorstatus=SD_EnableWideBusOperation(SDIO_BusWide_4b);        //4位宽度,如果是MMC卡,则不能用4位模式 (之前是一位)
          if((errorstatus==SD_OK)||(SDIO_MULTIMEDIA_CARD==CardType))
        {                      
                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 (为什么上面设置时钟,这里又要设置时钟)
                //errorstatus=SD_SetDeviceMode(SD_DMA_MODE);        //设置为DMA模式
                errorstatus=SD_SetDeviceMode(SD_POLLING_MODE);//设置为查询模式
        }

0条回答

一周热门 更多>