at91_sdcard源码分析(2)
2014-03-11 22:37
239 查看
初始化操作。
//------------------------------------------------------------------------------ /// Initializes a MCI driver instance and the underlying peripheral. /// \param pMci Pointer to a MCI driver instance. /// \param pMciHw Pointer to a MCI peripheral. /// \param mciId MCI peripheral identifier. /// \param mode Slot and type of connected card. //------------------------------------------------------------------------------ void MCI_Init( Mci *pMci, AT91S_MCI *pMciHw, //AT91C_BASE_MCI unsigned char mciId, //AT91C_ID_MCI unsigned int mode) //MCI_SD_SLOTB { unsigned short clkDiv; SANITY_CHECK(pMci); SANITY_CHECK(pMciHw); SANITY_CHECK((mode == MCI_MMC_SLOTA) || (mode == MCI_MMC_SLOTB) || (mode == MCI_SD_SLOTA) || (mode == MCI_SD_SLOTB)); // Initialize the MCI driver structure pMci->pMciHw = pMciHw; pMci->mciId = mciId; pMci->semaphore = 1; //初始化信号量 pMci->pCommand = 0; // Enable the MCI clock WRITE_PMC(AT91C_BASE_PMC, PMC_PCER, (1 << mciId)); // Reset the MCI WRITE_MCI(pMciHw, MCI_CR, AT91C_MCI_SWRST); // Disable the MCI WRITE_MCI(pMciHw, MCI_CR, AT91C_MCI_MCIDIS | AT91C_MCI_PWSDIS); // Disable all the interrupts WRITE_MCI(pMciHw, MCI_IDR, 0xFFFFFFFF); // Set the Data Timeout Register WRITE_MCI(pMciHw, MCI_DTOR, DTOR_1MEGA_CYCLES); // Set the Mode Register: 400KHz for MCK = 48MHz (CLKDIV = 58) //设置MCI的频率是400KHz. clkDiv = (BOARD_MCK / (400000 * 2)) - 1; WRITE_MCI(pMciHw, MCI_MR, (clkDiv | (AT91C_MCI_PWSDIV & (0x7 << 8)))); // Set the SDCard Register WRITE_MCI(pMciHw, MCI_SDCR, mode); // Enable the MCI and the Power Saving WRITE_MCI(pMciHw, MCI_CR, AT91C_MCI_MCIEN); // Disable the MCI peripheral clock. WRITE_PMC(AT91C_BASE_PMC, PMC_PCDR, (1 << mciId)); }
相关文章推荐
- at91_sdcard源码分析(4)-命令的发送
- at91_sdcard源码分析(5)-中断处理
- at91_sdcard源码分析(3)
- at91_sdcard源码分析(1)
- Android SDCard Mount 流程分析
- SD Card 驱动流程分析
- (优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式! .
- 10—(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- SDWebImage源码分析
- Android SDCard Mount 流程分析(一)
- Android SDCard Mount 流程分析
- Android SDCard Mount 流程分析
- Android 根目录和sdcard卡路径分析
- Android SDCard UnMounted 流程分析
- (转)【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- 关于android 4.2版本的sdcard文件目录分析(含修正)
- Android SDCard Mount 流程分析
- SDWebImage 源码分析 --加载gif图片
- Android SDCard UnMounted 流程分析(一)
- Android SDCard UnMounted 流程分析(二) 推荐