主题 : TINY6410 wince6 T_Card时钟检测状态时没有stable 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 64914
精华: 0
发帖: 43
金钱: 215 两
威望: 43 点
综合积分: 86 分
注册时间: 2012-03-12
最后登录: 2012-11-14
楼主  发表于: 2012-09-18 17:20

 TINY6410 wince6 T_Card时钟检测状态时没有stable

在调试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_ 这个宏要不要设置?
级别: 新手上路
UID: 64914
精华: 0
发帖: 43
金钱: 215 两
威望: 43 点
综合积分: 86 分
注册时间: 2012-03-12
最后登录: 2012-11-14
1楼  发表于: 2012-09-18 17:22
在升级时T_Card是正常的,开机后SDCLK 没有波形,也识别不到卡!
级别: 新手上路
UID: 64914
精华: 0
发帖: 43
金钱: 215 两
威望: 43 点
综合积分: 86 分
注册时间: 2012-03-12
最后登录: 2012-11-14
2楼  发表于: 2012-09-18 17:28
插卡后的打印信息如下:

[HSMMC0] Card is Inserted!
[HSMMC0] Turn OFF the F/B delay control.
SDHCSetRate - Clock Control Reg = 8001
SDHCSetRate - Actual clock rate = 187500
CSDHCSlotBase::WaitForReg: Timeout (1000 ms) waiting for (ReadReg<2>(0x2c) & 0x00000002) == 0x00000002
[HSMMC0] CSDHCSlotBase::SDClockOn: Timeout waiting for CLOCK_STABLE
[HSMMC0] Setting for 1 bit mode , Clock Rate = 100000 Hz
[HSMMC0] Turn OFF the F/B delay control.
SDHCSetRate - Clock Control Reg = 8001
SDHCSetRate - Actual clock rate = 187500
CSDHCSlotBase::WaitForReg: Timeout (1000 ms) waiting for (ReadReg<2>(0x2c) & 0x00000002) == 0x00000002
[HSMMC0] CSDHCSlotBase::SDClockOn: Timeout waiting for CLOCK_STABLE

请mindee老大帮忙看看!谢谢!
级别: 新手上路
UID: 64914
精华: 0
发帖: 43
金钱: 215 两
威望: 43 点
综合积分: 86 分
注册时间: 2012-03-12
最后登录: 2012-11-14
3楼  发表于: 2012-09-19 11:21
#define _SRCCLK_48MHZ_
这个宏我没有打开,我们还没有调试好USB,所以还不能用USB_PHY的外部时钟

我在开发板上也尝试了下,屏蔽掉这个宏之后也是一样找不到存储卡的!
级别: 新手上路
UID: 64914
精华: 0
发帖: 43
金钱: 215 两
威望: 43 点
综合积分: 86 分
注册时间: 2012-03-12
最后登录: 2012-11-14
4楼  发表于: 2012-09-19 14:18
自己解决了

SCLK_GATE 里对MMC0的设置错误,怎么源代码中会有这样的错误,搞了半天才发现!