导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    R128驱动SD卡失败

    A Series
    2
    12
    3161
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • B
      biubiu LV 5 最后由 编辑

      menuconfig配置如下:

      b8bcd21b-118f-4975-8a36-7c54899a83b9-image.png

      引脚配置如下:

      ce9c0afa-bdd0-41e7-8c29-0561cb43b920-image.png

      报错信息如下:

      47f9592b-e40a-430f-b6d2-217b0f90b835-image.png

      1 条回复 最后回复 回复 引用 分享 0
      • A
        awwwwa LV 8 最后由 编辑

        硬件是怎么接入的呢?

        1 条回复 最后回复 回复 引用 分享 0
        • A
          awwwwa LV 8 最后由 编辑

          正常挂载log

          card_detect removed sdmmc_test->card_id=0
          [WRN] SDC:sdc:0000000008280E50 no medium present
          SDC:Not imp HAL_SDC_PowerOff,2028
          SDC:Not implement __mci_hold_io,823
          SD:mmc_card_delete card:00000000081A3370 id:0
          card_detect insert sdmmc_test->card_id=0
          card id is 0
          SD:mmc_card_create card:00000000081A3370 id:0
          card debug mask 3c
          SDC:Not implement __mci_restore_io,838
          HAL_GetHFClock,53 Warning Use fix value 24000000
          HAL_GetHFClock,53 Warning Use fix value 24000000
          HAL_GetHFClock,53 Warning Use fix value 24000000
          SDC:SDC clock=416666 kHz,src:0, n:2, m:11
          HAL_GetHFClock,53 Warning Use fix value 24000000
          HAL_GetHFClock,53 Warning Use fix value 24000000
          HAL_GetHFClock,53 Warning Use fix value 24000000
          SDC:SDC clock=416666 kHz,src:0, n:2, m:11
          [ERR] SDC:__mci_irq_handler,924 raw_int:100 err!
          [ERR] SDC:SDC err, cmd 52,  RTO
          [ERR] SDC:sdc 701 abnormal status: RespErr
          [ERR] SDC:__mci_irq_handler,924 raw_int:100 err!
          [ERR] SDC:SDC err, cmd 52,  RTO
          [ERR] SDC:sdc 701 abnormal status: RespErr
          SD:***** Try sdio *****
          [ERR] SDC:__mci_irq_handler,924 raw_int:100 err!
          [ERR] SDC:SDC err, cmd 5,  RTO
          [ERR] SDC:sdc 701 abnormal status: RespErr
          SD:***** Try sd *****
          mmc_send_app_op_cond,89
          SD:card ocr: c0ff8000
          SD:Card CID number:2544d53
          SD:card raw cid:
          SD:card raw csd:
          m:29567, e:2, dtr:25000000, cl:1461, len:9, cap:30277632 str:1
          SD:card raw scr:
          SD:card raw SD status:
          HAL_GetHFClock,53 Warning Use fix value 24000000
          HAL_GetDevClock,90 Warning Use fix value 192000000
          HAL_GetDevClock,90 Warning Use fix value 192000000
          SDC:SDC clock=48000000 kHz,src:1, n:0, m:1
          SD:card is switched to high speed mode, clk:50000 KHz
          SD:Set bus width type: 2
          SD:
          ============= card information ==============
          SD:Card Type     : SDHC
          SD:Card Spec Ver : 5.0
          SD:Card RCA      : 0x1234
          SD:Card OCR      : 0x40ff8000
          SD:    vol_window  : 0x00ff8000
          SD:    to_1v8_acpt : 0
          SD:    high_capac  : 0
          SD:Card CSD      :
          SD:    speed       : 50000 KHz
          SD:    cmd class   : 0x5b5
          SD:    capacity    : 14784MB
          SD:Card CUR_STA  :
          SD:    speed_mode  : HS: 50 MHz
          SD:    bus_width   : 2
          SD:    speed_class : 10
          SD:=============================================
          SD:***** sd init ok *****
          Initial card success
          mount successully
          
          1 条回复 最后回复 回复 引用 分享 0
          • A
            awwwwa LV 8 最后由 编辑

            可以尝试打入这个补丁

            diff --git a/hal/source/sdmmc/_sdhost.h b/hal/source/sdmmc/_sdhost.h
            index ef910bd..b570026 100644
            --- a/hal/source/sdmmc/_sdhost.h
            +++ b/hal/source/sdmmc/_sdhost.h
            @@ -404,6 +404,9 @@
             #define SDXC_REG_DAT1_CRC               (0x12C)
             #define SDXC_REG_DAT0_CRC               (0x130)
             #define SDXC_REG_CRC_STA                (0x134)
            +#define SDXC_REG_DRV_DL                 (0x140)
            +#define SDXC_REG_SAMP_DL                (0x144)
            +#define SDXC_REG_DS_DL                  (0x148)
             #define SDXC_REG_FIFO                   (0x200) /* SMC FIFO Access Address */
             
             #define SDXC_REG_FCTL                   (0x64)      /* SMC FIFO Access Address */
            diff --git a/hal/source/sdmmc/hal_sdhost.c b/hal/source/sdmmc/hal_sdhost.c
            index dedf897..e47b3da 100644
            --- a/hal/source/sdmmc/hal_sdhost.c
            +++ b/hal/source/sdmmc/hal_sdhost.c
            @@ -1017,6 +1017,7 @@
             	uint32_t rval;
             	uint32_t src = 0;
             	uint32_t m, n;
            +	uint32_t clk_2x;
             
             	if (cclk > DEFINE_SYS_CRYSTAL/2) {
             #ifdef NUSE_STANDARD_INTERFACE
            @@ -1033,8 +1034,8 @@
             #endif
             		sclk = DEFINE_SYS_CRYSTAL;
             	}
            -	cclk = cclk * 2; /* 2x MODE clock configure */
            -	div = (2 * sclk + cclk) / (2 * cclk);
            +	clk_2x = cclk * 2; /* 2x MODE clock configure */
            +	div = (2 * sclk + clk_2x) / (2 * clk_2x);
             	div = div == 0 ? 1 : div;
             	if (div > 128) {
             		n = 3;
            @@ -1142,6 +1143,37 @@
             	mci_writel(rval, host, SDXC_REG_CLKCR);
             	sdc_hex_dump_word((void *)SDC_CCM_BASE  ,0x900);
             
            +#ifdef CONFIG_ARCH_SUN20IW2
            +#define CFGDLY          (0x3F<<0)
            +#define ENABLEDLY       (1<<7)
            +	uint32_t samclk_pha = 0;
            +
            +	if (cclk <= 50000000) {
            +		samclk_pha = 6;//6; //63
            +	} else if (cclk <= 100000000) {
            +		samclk_pha = 21;
            +	} else if (cclk <= 150000000) {
            +		samclk_pha = 24;//11;//23;3-24
            +	} else if (cclk <= 200000000) {
            +		samclk_pha = 24;//6;//15;//33;
            +	}
            +	rval = mci_readl(host, SDXC_REG_NTSR);
            +	rval &= ~(0x1<<31); // old timming mode
            +	mci_writel(rval, host, SDXC_REG_NTSR);
            +
            +	rval = mci_readl(host, SDXC_REG_SAMP_DL);
            +	rval &= ~CFGDLY;
            +	rval |= ENABLEDLY | samclk_pha;
            +	mci_writel(rval, host, SDXC_REG_SAMP_DL);
            +
            +	rval = mci_readl(host, SDXC_REG_DS_DL);
            +	rval &= ~CFGDLY;
            +	rval |= ENABLEDLY | samclk_pha;
            +	mci_writel(rval, host, SDXC_REG_DS_DL);
            +
            +	mci_writel(0x0, host, SDXC_REG_DRV_DL);
            +#endif
            +
             	return cclk;
             }
             
            @@ -1949,11 +1981,6 @@
             	mci_writel(rval, host, SDXC_REG_GCTRL);
             #endif
             
            -#ifdef CONFIG_ARCH_SUN20IW2
            -	mci_writel(mci_readl(host, SDXC_REG_NTSR) | 0x110, host, SDXC_REG_NTSR);
            -	mci_writel(0x00030000, host, 0x140);
            -#endif
            -
             	if (host->sdc_id == 0) {
             		SDC_ENABLE_IRQ(SDC0_IRQn);
             	}
            diff --git a/hal/source/sdmmc/sd.c b/hal/source/sdmmc/sd.c
            index f569730..957250d 100644
            --- a/hal/source/sdmmc/sd.c
            +++ b/hal/source/sdmmc/sd.c
            @@ -732,6 +732,24 @@
             	return err;
             }
             
            +static int32_t mmc_sd_switch_hs_mode(struct mmc_card *card)
            +{
            +	uint32_t status[64/sizeof(uint32_t)] = {0};
            +	int32_t err;
            +	uint32_t timing = 0;
            +	uint8_t *p_sta = (uint8_t *)status;
            +
            +	err = mmc_sd_switch(card, SD_SWITCH_SET, SD_SWITCH_GRP_ACCESS_MODE, card->sd_bus_speed, p_sta);
            +	if (err)
            +		return err;
            +
            +	if ((p_sta[16] & 0xF) != card->sd_bus_speed) {
            +		SD_LOGW("%s: Problem setting bus speed mode!\n", __func__);
            +	}
            +
            +	return 0;
            +}
            +
             /*
              * Test if the card supports high-speed mode and, if so, switch to it.
              */
            @@ -993,9 +1011,12 @@
             			if (err)
             				return -1;
             		} else {
            -			mmc_card_set_highspeed(card);
             			card->sd_bus_speed = HIGH_SPEED_BUS_SPEED;
            -
            +			err = mmc_sd_switch_hs_mode(card);
            +			if (err) {
            +				SD_LOGW("switch to high speed error, use DS: 25 MHz\n");
            +			}
            +			mmc_card_set_highspeed(card);
             			clk = mmc_sd_get_max_clock(card);
             			err = HAL_SDC_Update_Clk(card->host, clk);
             			if (err)
            
            
            B 1 条回复 最后回复 回复 引用 分享 0
            • B
              biubiu LV 5 @awwwwa 最后由 编辑

              @awwwwa 问题没解决,应该是我用杜邦线飞线的原因,后面画个pcb再试试看看

              1 条回复 最后回复 回复 引用 分享 0
              • A
                awwwwa LV 8 最后由 编辑

                [sdc0]
                card_ctrl       = 0
                card_high_speed = 0
                card_line       = 4
                sdc_d1          = port:PA27<2><1><3><default>
                sdc_d0          = port:PA26<2><1><3><default>
                sdc_clk         = port:PA29<2><1><3><default>
                sdc_cmd         = port:PA25<2><1><3><default>
                sdc_d3          = port:PA24<2><1><3><default>
                sdc_d2          = port:PA28<2><1><3><default>
                
                [sdc0det_para]
                sdc0_det        = port:PA23<0><1><3><1>
                

                适配 EVT 的测试镜像:
                be810818-4bc0-447f-8705-d5d70abd8813-rtos_freertos_r128s2_evt_uart0_16Mnor.img

                B 1 条回复 最后回复 回复 引用 分享 0
                • B
                  biubiu LV 5 @awwwwa 最后由 编辑

                  @awwwwa 现在变成这样了:
                  e6028413-cdc1-40a9-8d75-a673eca22c45-image.png

                  A 1 条回复 最后回复 回复 引用 分享 0
                  • A
                    awwwwa LV 8 @biubiu 最后由 编辑

                    @biubiu 试试换一张卡看看,可能是不支持这个卡的型号

                    B 1 条回复 最后回复 回复 引用 分享 0
                    • B
                      biubiu LV 5 @awwwwa 最后由 编辑

                      @awwwwa 你用的是什么卡?我这三张卡都不行。。。

                      A 1 条回复 最后回复 回复 引用 分享 0
                      • A
                        awwwwa LV 8 @biubiu 最后由 编辑

                        @biubiu 闪迪128G SDXC 和无标山寨卡 SDHC 都测试通过

                        1 条回复 最后回复 回复 引用 分享 0
                        • A
                          awwwwa LV 8 最后由 编辑

                          1. SanDisk HIGH ENDURABCE 32G SDHC Pass
                            2de030a1-3af1-4162-aafb-9e3c0cefccbe-lQDPJxJhkub77WzNC9DND8Cw_DFJWqmDlV4FGf0i2yQiAA_4032_3024.jpg

                          b5eb9273-5fc2-42fe-a393-ab64460f5998-image.png

                          1. SanDisk Ultra 128G SDXC Pass

                          aa836015-5015-433a-8fcf-b110d8aad425-lQDPJxwUfonqhSzNC9DND8Cw3YpYNr7PIvMFGf2NzIsWAA_4032_3024.jpg

                          4dfecef4-96bd-4882-bb00-c1e38a58a18d-image.png

                          1. NOKIA 2.0G Fail

                          e9978cf7-11d3-4d72-b080-4b485a4f1fee-lQDPJw0WbTybFQzNC9DND8Cw_sjdrS3On-0FGf3S3bqCAA_4032_3024.jpg

                          94d4568f-c050-4084-b8a7-52878f884849-image.png

                          1. Unknow SD 120M SDHC Pass

                          99d79225-90fc-4963-a4e8-c53836447681-lQDPJwkbyvUvqgzNC9DND8CwTxXeh2GBmKoFGf4htgwzAA_4032_3024.jpg

                          7cd8c7b5-6b89-4524-b807-68b8b6dcd0de-image.png

                          1. Kingston 4G SDHC Pass

                          25db9121-3b65-4523-baca-fb299910d539-lQDPJx5swtaqoEzNC9DND8Cwbnudxv-Wiy8FGf5w0ZbSAA_4032_3024.jpg

                          f4ad8fe9-c401-40d8-be94-d12480cbe699-image.png

                          1. Micro SD 512M SDHC Pass

                          4ed933d1-0c6d-4ad3-ab43-f85ffbf93c81-lQDPJwp-fvN_I4zNC9DND8CwRPg_yovkkykFGf7TGPjhAA_4032_3024.jpg

                          659a4b84-77e7-4399-9d19-2dd752ecc382-image.png

                          1. ADATA Micro SD 2G SDHC Pass

                          0dcd4a3d-9815-4922-8698-68bdb6f881f9-lQDPJxXl-VCwb0zNC9DND8CweJX-mL5KIgQFGf8rVdIHAA_4032_3024.jpg

                          458ebc60-49d9-4945-aab5-8536422b9130-image.png

                          1. Kioxia exceria 32G SDHC Pass

                          13dc558f-b4f1-4fb6-8d6a-e937d83edca9-lQDPJyDgT8wOfwzNC9DND8CwlWZLh8H4PJUFGf-NqUscAA_4032_3024.jpg

                          172dc9db-b060-4efa-808c-ae0fa95b87ff-image.png

                          1. SanDisk Ultra 16GB SDHC Pass

                          d5eafdb8-71d4-4d62-863a-c49cb41498c2-lQDPJwGl2naexszNC9DND8CwHiiibxpT2ssFGgCz44-bAA_4032_3024.jpg

                          5ac99948-8a33-47c9-a08a-8ecf894ccc56-image.png

                          B 1 条回复 最后回复 回复 引用 分享 0
                          • B
                            biubiu LV 5 @awwwwa 最后由 编辑

                            @awwwwa 我这试了四张卡,只有这张可以:

                            a0ae52e9-c170-494a-aec0-71f44dc96498-image.png

                            输出log:

                            c906>
                            
                            c906>card_detect insert sdmmc_test->card_id=0
                            card id is 0
                            SD:mmc_card_create card:00000000084601D0 id:0
                            card debug mask 3c
                            SDC:Not implement __mci_restore_io,838
                            HAL_GetHFClock,53 Warning Use fix value 24000000
                            HAL_GetHFClock,53 Warning Use fix value 24000000
                            HAL_GetHFClock,53 Warning Use fix value 24000000
                            SDC:SDC clock=416666 kHz,src:0, n:2, m:11
                            HAL_GetHFClock,53 Warning Use fix value 24000000
                            HAL_GetHFClock,53 Warning Use fix value 24000000
                            HAL_GetHFClock,53 Warning Use fix value 24000000
                            SDC:SDC clock=416666 kHz,src:0, n:2, m:11
                            [ERR] SDC:__mci_irq_handler,924 raw_int:100 err!
                            [ERR] SDC:SDC err, cmd 52,  RTO
                            [ERR] SDC:sdc 701 abnormal status: RespErr
                            [ERR] SDC:__mci_irq_handler,924 raw_int:100 err!
                            [ERR] SDC:SDC err, cmd 52,  RTO
                            [ERR] SDC:sdc 701 abnormal status: RespErr
                            SD:***** Try sdio *****
                            [ERR] SDC:__mci_irq_handler,924 raw_int:100 err!
                            [ERR] SDC:SDC err, cmd 5,  RTO
                            [ERR] SDC:sdc 701 abnormal status: RespErr
                            SD:***** Try sd *****
                            mmc_send_app_op_cond,89
                            SD:card ocr: c0ff8000
                            SD:Card CID number:27504853
                            SD:card raw cid:
                            SD:card raw csd:
                            m:59159, e:2, dtr:25000000, cl:1461, len:9, cap:60579840 str:1
                            SD:card raw scr:
                            SD:card raw SD status:
                            HAL_GetHFClock,53 Warning Use fix value 24000000
                            HAL_GetDevClock,90 Warning Use fix value 192000000
                            HAL_GetDevClock,90 Warning Use fix value 192000000
                            SDC:SDC clock=48000000 kHz,src:1, n:0, m:1
                            SD:card is switched to high speed mode, clk:50000 KHz
                            SD:Set bus width type: 2
                            SD:
                            ============= card information ==============
                            SD:Card Type     : SDHC
                            SD:Card Spec Ver : 5.0
                            SD:Card RCA      : 0x5048
                            SD:Card OCR      : 0x40ff8000
                            SD:    vol_window  : 0x00ff8000
                            SD:    to_1v8_acpt : 0
                            SD:    high_capac  : 0
                            SD:Card CSD      :
                            SD:    speed       : 50000 KHz
                            SD:    cmd class   : 0x5b5
                            SD:    capacity    : 29580MB
                            SD:Card CUR_STA  :
                            SD:    speed_mode  : HS: 50 MHz
                            SD:    bus_width   : 2
                            SD:    speed_class : 10
                            SD:=============================================
                            SD:***** sd init ok *****
                            Initial card success
                            mount successully
                            
                            
                            1 条回复 最后回复 回复 引用 分享 0
                            • 1 / 1
                            • First post
                              Last post

                            Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

                            行为准则 | 用户协议 | 隐私权政策