Miles Wang

TWR-K70 SDHC get wrong data from SD card

Discussion created by Miles Wang on May 11, 2017
Latest reply on May 17, 2017 by Miles Wang



There is an inexplicable issue about K70 SDHC. I am developing SD card driver for K70. But it fails to identify SD card. At the beginning, driver can get correct OCR,CID,RCA,CSD registers from SD card. But it get wrong SCR and data from SD card. I found that the driver can get correct response from SDHC0_CMD line, but get wrong value from SDHC_DAT lines. Pleas help me debug the issue. Thanks.

Hardware environment (4 boards):

    TWR-K70F120M CPU board (700-27166 REV A, SCH-27166 REV C2)

    TWR-SER2 Board (700-26185 REV B, SCH-26185 REV D)

    Primary Elevator (700-26006 REV D, SCH-26006 REV H)

    Secondary Elevator (700-26493 REV B, SCH-26493 REV A)

Pin Control Register setting:
    PORTE_PCR0[0x4004d000] = 0x443 /* portE, pin0, ALT4, SDHC0_D1 */
    PORTE_PCR1[0x4004d004] = 0x443 /* portE, pin1, ALT4, SDHC0_D0 */
    PORTE_PCR2[0x4004d008] = 0x443 /* portE, pin2, ALT4, SDHC0_DCLK */
    PORTE_PCR3[0x4004d00c] = 0x443 /* portE, pin3, ALT4, SDHC0_CMD */
    PORTE_PCR4[0x4004d010] = 0x443 /* portE, pin4, ALT4, SDHC0_D3 */
    PORTE_PCR5[0x4004d014] = 0x443 /* portE, pin5, ALT4, SDHC0_D2 */
    PORTE_PCR28[0x4004d070] = 0x143 /* portE, pin28, ALT1, SDHC0_CD */


Use internal SDMA transfer to read SCR, some SDHC registers setting:

Send CMD55:
    DSADDR = 0x00000000, BLKATTR= 0x00010000
    CMDARG = 0x12340000, XFERTYP= 0x371a0000
    PRSSTAT= 0xff880008, PROCTL = 0x00000020
    SYSCTL = 0x0000010f, WML = 0x08800810

Send CMD51:

    DSADDR = 0x80567450, BLKATTR= 0x00010008
    CMDARG = 0x00000000, XFERTYP= 0x333a0011
    PRSSTAT= 0xff880008, PROCTL = 0x00000020
    SYSCTL = 0x000e010f, WML = 0x08800802
respones =0x00000920 
SCR=0x[33-c0-8e-d0-bc-00], the value may be different at next reading.

Correct SCR should be [02-35-80-00-01-00]. 


Please help analyze the issue is hardware issue (pin setting, jumper?) or software issue. Do you have K70 SDHC driver sample code?