2026年7月31日 星期五

RV1106 - External SDCard TF Socket use different gpio

本文說明如何自訂 GPIO 腳位給 TF 座的 SDCard 裝置。

 看腳位

首先,還是要知道 datasheet 上有沒有其他腳位定義可以複用這個功能,所以來看手冊。



從手冊上可以看到 SDMMC0 是原本預設使用的腳位,也就是 GPIO3 系列,的位置,但如果仔細看開發版裝置,就會發現這個裝置沒有把 GPIO3 接出來可以用。

所以就需要挑其他腳位來使用。 所以這裡選定 SDMMC1 系列腳位來接,也就是 GPIO1 的位置。 又根據官方提共的接法,其實不需要接其他東西,直接往 IO 接上好了。


https://wiki.luckfox.com/Luckfox-Pico-Plus/SD/


根據接腳手冊定位,就這麼接:

TF 卡底座針腳 DTS 信號名稱 對應 Rockchip 晶片腳位 DTS 代碼表示
SD-CD sdmmc1_cd GPIO1_D0 (自選) <1 RK_PD0 ...
DAT0 sdmmc1_d0_m1 GPIO1_C1 <1 RK_PC1 ...
DAT1 sdmmc1_d1_m1 GPIO1_C0 <1 RK_PC0 ...
DAT2 sdmmc1_d2_m1 GPIO1_C5 <1 RK_PC5 ...
DAT3 sdmmc1_d3_m1 GPIO1_C4 <1 RK_PC4 ...
CLK sdmmc1_clk_m1 GPIO1_C2 <1 RK_PC2 ...
CMD sdmmc1_cmd_m1 GPIO1_C3 <1 RK_PC3 ...
VDD - 3.3V 電源 -
VSS - GND -



現在,需要去改板級配置,找到: rv1106g-luckfox-pico-pro-max.dts 這裡,在裡面做這樣的調整:

&sdmmc {
	// 不是用這個 SDMMC,所以關起來
	status = "disabled";
};

&sdio {
	// 外接 SDCard TF 底座要用這個
	max-frequency = <50000000>;
	no-sdio;
	no-mmc;
	supports-sd;
	bus-width = <4>;
	cap-mmc-highspeed;
	cap-sd-highspeed;
	disable-wp;
	pinctrl-names = "default";
	// 這裡都換 SDMMC1M1系列腳位了,而且不需要接 DET 接口
	pinctrl-0 = <&sdmmc1m1_clk &sdmmc1m1_cmd &sdmmc1m1_bus4>;
	status = "okay";
};

&pinctrl {	
    // sdmmc TF socket / SD Card: 其實可以不接,這裡也可以註解起來
    sdmmc1 {
        /* 自訂卡檢測腳位 (以 GPIO1_D0 為例) */
        sdmmc1_det: sdmmc0-det {
			rockchip,pins =
				/* sdmmc0_det */
				<1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_down>;
		};
    };
};


這裡的重點是要用 sdio 來接外接插槽。 一開始 debug 建議先插上再開機,可以熱插拔,但建議測試通過再測試熱插拔。





Reference:

[1] https://wiki.luckfox.com/Luckfox-Pico-Plus/SD/

沒有留言:

張貼留言

© Mac Taylor, 歡迎自由轉貼。
Background Email Pattern by Toby Elliott
Since 2014