本文說明如何自訂 GPIO 腳位給 TF 座的 SDCard 裝置。
看腳位
首先,還是要知道 datasheet 上有沒有其他腳位定義可以複用這個功能,所以來看手冊。
從手冊上可以看到 SDMMC0 是原本預設使用的腳位,也就是 GPIO3 系列,的位置,但如果仔細看開發版裝置,就會發現這個裝置沒有把 GPIO3 接出來可以用。
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/
沒有留言:
張貼留言