引脚定义与复用配置
RK182X 的引脚复用如何配置?
RK182X 每个引脚支持多种功能(GPIO、UART、SPI、I2C、MIPI 等),通过 IOMUX 控制器配置。
配置方式
- 设备树 (Device Tree) — 推荐方式
- 寄存器直接写 — 调试用
设备树配置示例
&pinctrl {
uart2_pins: uart2-pins {
rockchip,pins =
<1 RK_PB0 2 &pcfg_pull_up>, /* UART2 TX, func 2 */
<1 RK_PB1 2 &pcfg_pull_up>; /* UART2 RX, func 2 */
};
i2c1_pins: i2c1-pins {
rockchip,pins =
<2 RK_PA0 1 &pcfg_pull_none>, /* SCL */
<2 RK_PA1 1 &pcfg_pull_none>; /* SDA */
};
};
&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&uart2_pins>;
status = "okay";
};引脚功能查询
| Bank | 引脚 | 默认功能 | 复用功能 |
|---|---|---|---|
| GPIO0 | PB0 | GPIO | UART2_TX / SPI1_CLK / I2S_LRCK |
| GPIO0 | PB1 | GPIO | UART2_RX / SPI1_MISO / I2S_SCLK |
| GPIO1 | PA0 | GPIO | I2C1_SCL / UART0_TX |
| GPIO1 | PA1 | GPIO | I2C1_SDA / UART0_RX |
| GPIO2 | PB3 | GPIO | MIPI_DSI_D0_P |
| GPIO2 | PB4 | GPIO | MIPI_DSI_D0_N |
完整引脚复用表见 RK182X Datasheet (来源: RK182X Datasheet V1.0, §PinMux)
如何通过 sysfs 控制 GPIO?
# 1. 计算 GPIO 编号
# GPIO号 = Bank × 32 + Pin
# GPIO0_B0 = 0 × 32 + 8 = 8
# 2. 导出
echo 8 > /sys/class/gpio/export
# 3. 设置方向
echo out > /sys/class/gpio/gpio8/direction
# 4. 设置值
echo 1 > /sys/class/gpio/gpio8/value
# 5. 释放
echo 8 > /sys/class/gpio/unexport