在调试T_Card时候时钟检测状态时没有stable,以至于读不到卡!
VOID
CSDHCSlotBase::SDClockOn(
)
{
SETFNAME();
// Must call SetClockRate() first to init m_wRegClockControl
// We separate clock divisor calculation with ClockOn, so we can call
// ClockOn without recalcuating the divisor.
WriteWord(SDHC_CLOCK_CONTROL, m_wRegClockControl);
// wait until clock stable
BOOL fSuccess = WaitForReg<WORD>(&CSDHCSlotBase::ReadWord, SDHC_CLOCK_CONTROL,
CLOCK_STABLE, CLOCK_STABLE);
if (fSuccess) {
// 08.03.29 by KYS
// SD Clock Output PAD Drive Strength is needed as 9mA.
WriteDword(SDHC_CONTROL4, ((ReadDword(SDHC_CONTROL4) | (0x3<<16))));
// enable it
WriteWord(SDHC_CLOCK_CONTROL, m_wRegClockControl | CLOCK_ENABLE);
}
else {
DEBUGMSG(SDCARD_ZONE_ERROR, (_T("%s Timeout waiting for CLOCK_STABLE\r\n"), pszFname));
RETAILMSG(1, (_T("[HSMMC0] %s Timeout waiting for CLOCK_STABLE\r\n"), pszFname));
}
}
这个函数中 m_wRegClockControl 值是0x8001;fSuccess 返回FALSE;
时钟没有Stable,请问老大是怎么回事?
还有,#define _SRCCLK_48MHZ_ 这个宏要不要设置?