SD卡 老卡 1G 2G,CH32V307,對(duì)任何命令都無(wú)響應(yīng)

手上有兩個(gè)老SD卡,1G和2G,用電腦讀卡器測(cè)試是完全正常的。

但,使用CH32V307的SD卡接口,發(fā)送任何命令,都無(wú)響應(yīng)。

讀取其它SD卡(4G、16G、32G)的信息都沒(méi)有問(wèn)題,所以硬件肯定沒(méi)問(wèn)題,程序也應(yīng)該沒(méi)啥大問(wèn)題。

目前能想到的是,CH32V307工作頻率144M,給SD卡分頻后,最少560k,不能低到SD要求的400k,不知道是否有影響。

別的還能有啥問(wèn)題?

剛才把錯(cuò)誤碼打印出來(lái),能看到,其實(shí)1G、2G的卡還是有點(diǎn)響應(yīng)的。

1、發(fā)送CMD0,讓SD卡進(jìn)入IDLE狀態(tài),這個(gè)不需要響應(yīng)。

2、發(fā)送CMD8,參數(shù)0x000001AA,通過(guò) CmdResp7Error 得到錯(cuò)誤碼 3,超時(shí)。

3、發(fā)送CMD55,參數(shù)0,通過(guò)?CmdResp1Error 得到錯(cuò)誤碼?0x00400000,這個(gè)應(yīng)該是SD卡反饋的,不知道啥意思。

4、后面再發(fā)送命令,CMD1、CMD2,都是返回錯(cuò)誤碼 3,超時(shí)。


您好,


????????EVT中的SDIO例程有打印功能,您可以直接運(yùn)行后將打印信息發(fā)送至郵箱:lbw@wch.cn。


????????錯(cuò)誤碼在sdio.h文件下有給出,可以對(duì)照查看。image.png


下文是調(diào)試信息,SD開(kāi)頭的,是我加的,體現(xiàn)了發(fā)送命令的過(guò)程,參數(shù),及反饋。最后一個(gè)錯(cuò)誤碼 3,是原始的調(diào)試信息。

總的來(lái)說(shuō),主要錯(cuò)誤就是 3,SD_CMD_RSP_TIMEOUT,超時(shí)。


這個(gè)是出問(wèn)題的,2G卡的調(diào)試信息:

SD: Port Inited

SD: GoIdleState(0) Ok(0)

SD: Determine Card Type

SD: SendIfCond(0x000001AA) Err: 0x00000003????//第一個(gè)需要應(yīng)答的命令就超時(shí)了

SD: Card V1.1

SD: AppCmd(0) Err: 0x00400000

SD: SendOpCond(0x80FF8000) Err: 0x00000003

SD Card Error: 3


這個(gè)是能正常訪問(wèn)的,4G卡的調(diào)試信息:

SD: Card V2.0

SD: AppCmd(0) Ok

SD: AppCmd(0) Ok(0)

SD: SdAppOpCond(0xC0100000) Ok(0)

SD: OCR: 0x00FF8000

SD: AppCmd(0) Ok(1)

SD: SdAppOpCond(0xC0100000) Ok(1)

SD: OCR: 0xC0FF8000

SD: High Capacity SD

SD: Get Card Information

SD: AllSendCID Ok

SD: CID: 0x02544D53 41303447 039C5E8C 88009714

SD: SetRelAddr Ok, RCA = 0x1234

SD: SendCSD(0x12340000) Ok

SD: CSD: 0x400E0032 5B590000 1D7B7F80 0A40005C

SD: CSD Version 2.0

SD: Max Line Speed: 0x32 = 25Mbps

SD: Command Class: 0101 1011 0101 (Class11-0)

SD: DeviceSize: 7547

SD: Capacity: 3774MB, Block: 512B

......


您好,


????????抱歉,我沒(méi)看懂你的打印信息代表了什么過(guò)程,可以明確是什么階段什么命令的超時(shí)嗎?





是發(fā)送CMD55時(shí)返回錯(cuò)誤。


SDIO_CmdInitStructure.SDIO_Argument = 0x00;

SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_APP_CMD;

SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;

SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;

SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;

SDIO_SendCommand(&SDIO_CmdInitStructure);

errorstatus=CmdResp1Error(SD_CMD_APP_CMD);

//對(duì)于老舊的小容量卡(大SD卡),1G、2G,在這兒會(huì)返回錯(cuò)誤 0x00400000



您好,


????????發(fā)送CMD55指令代表下一條將發(fā)送特定應(yīng)用命令,這個(gè)操作在多個(gè)過(guò)程中均有使用。麻煩使用我們EVT中的例程進(jìn)行測(cè)試,提供串口打印信息,以便我同步問(wèn)題現(xiàn)象,謝謝。

image.png





只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频