扩展IO 使用说明
1. GPIO
1.1 引脚分布
开发板顶部的双排针引出了 GPIO(PE0 ~ PE9):
- PE2 ~ PE7:默认作为 3 路串口 使用
- PE0、PE1、PE8、PE9:默认作为普通 GPIO 使用
普通 GPIO:
PE0, PE1, PE8, PE9

1.2 GPIO 输出控制(系统默认)
系统已经通过ledc的方式将gpio初始化为输出模式,使用方法如下:
##
# GPIO_PE0输出高电平
echo 1 > /sys/class/leds/GPIO_PE0/brightness
# GPIO_PE0输出低电平
echo 0 > /sys/class/leds/GPIO_PE0/brightness
# GPIO_PE1输出高电平
echo 1 > /sys/class/leds/GPIO_PE1/brightness
# GPIO_PE1输出低电平
echo 0 > /sys/class/leds/GPIO_PE1/brightness
# GPIO_PE8输出高电平
echo 1 > /sys/class/leds/GPIO_PE8/brightness
# GPIO_PE8输出低电平
echo 0 > /sys/class/leds/GPIO_PE8/brightness
# GPIO_PE9输出高电平
echo 1 > /sys/class/leds/GPIO_PE9/brightness
# GPIO_PE9输出低电平
echo 0 > /sys/class/leds/GPIO_PE9/brightness
1.3 GPIO 输入捕获(手动修改)
如需使用 GPIO 输入功能,步骤如下:
1. 修改对应 DTS 文件,删除相关输出模式配置
2. 重新编译镜像
3. 在应用程序中完成输入模式初始化
device/config/chips/t113/configs/zqboard/linux-5.4/board.dts
leds {
compatible = "gpio-leds";
gpio_pe0 {
label = "GPIO_PE0";
gpios = <&pio PE 0 GPIO_ACTIVE_HIGH>; /* PE0 */
default-state = "off";
};
gpio_pe1 {
label = "GPIO_PE1";
gpios = <&pio PE 1 GPIO_ACTIVE_HIGH>; /* PE1 */
default-state = "off";
};
gpio_pe8 {
label = "GPIO_PE8";
gpios = <&pio PE 8 GPIO_ACTIVE_HIGH>; /* PE8 */
default-state = "off";
};
gpio_pe9 {
label = "GPIO_PE9";
gpios = <&pio PE 9 GPIO_ACTIVE_HIGH>; /* PE9 */
default-state = "off";
};
};
删掉驱动配置后,重新编译镜像包,然后在应用程序完成初始化
## 使用命令导出gpio设备节点:
echo 160 > /sys/class/gpio/export # 申请GPIOE0
echo 161 > /sys/class/gpio/export # 申请GPIOE1
echo 168 > /sys/class/gpio/export # 申请GPIOE8
echo 169 > /sys/class/gpio/export # 申请GPIOE9
## 设置GPIO为输入模式:
echo in > /sys/class/gpio/gpio160/direction # 设置GPIO_PE0为输入模式
echo in > /sys/class/gpio/gpio161/direction # 设置GPIO_PE1为输入模式
echo in > /sys/class/gpio/gpio168/direction # 设置GPIO_PE8为输入模式
echo in > /sys/class/gpio/gpio169/direction # 设置GPIO_PE9为输入模式
# 读取GPIO电平状态
cat /sys/class/gpio/gpio160/value # 读取GPIOE0电平
cat /sys/class/gpio/gpio161/value # 读取GPIOE1电平
cat /sys/class/gpio/gpio168/value # 读取GPIOE8电平
cat /sys/class/gpio/gpio169/value # 读取GPIOE9电平
## 同理也可以设置输出模式()
echo out > /sys/class/gpio/gpio160/direction # 设置为输出状态
## 设置GPIO_PE0为高电平
echo 1 > /sys/class/gpio/gpio160/value
## 设置GPIO_PE0为低电平
echo 0 > /sys/class/gpio/gpio160/value
应用调用方法参考:

2. 串口 (UART)
| 串口号 | 功能 | 引脚 |
|---|---|---|
| UART1 | Debug 调试串口 | 默认调试 |
| UART2 | 扩展 GPIO | PE2, PE3 |
| UART3 | RS485 接口 | - |
| UART4 | 扩展 GPIO | PE4, PE5 |
| UART5 | 扩展 GPIO | PE6, PE7 |
3. I²C
- T113 提供 23 路 I²C 接口(与串口复用)
- 设备节点:
/dev/i2c-0
/dev/i2c-1
/dev/i2c-3
- 如果需要将串口引脚改为 I²C,需要修改 DTS 配置
例如:修改dts配置,将gpio设置为i2c使用,以i2c-3(PE6/PE7)为例,通过查找PE6/PE7为串口5。 修改 device/config/chips/t113/configs/mq_r/linux-5.4/board.dts
&uart5 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&uart5_pins_a>;
pinctrl-1 = <&uart5_pins_b>;
status = "disabled"; # 禁用串口5
};
&twi3 {
clock-frequency = <400000>;
pinctrl-0 = <&twi3_pins_a>;
pinctrl-1 = <&twi3_pins_b>;
pinctrl-names = "default", "sleep";
status = "okay"; # 启用i2c-3
};
修改后重新编译,烧录,会多了设备节点/dev/i2c-3 ,然后应用直接操作i2c-3读写数据即可。
4. PWM
- 支持的 PWM 通道:
PWM2, PWM3
- PWM 导出命令:
echo 2 > /sys/class/pwm/pwmchip0/export
echo 3 > /sys/class/pwm/pwmchip0/export
- PWM 设备文件路径:
/sys/class/pwm/pwmchip0/pwm2
/sys/class/pwm/pwmchip0/pwm3
4.1 示例:设置 PWM 输出
# 设置 PWM2 周期为 1ms (1KHz)
echo 1000000 > /sys/class/pwm/pwmchip0/pwm2/period
# 设置 PWM2 占空比为 50%
echo 500000 > /sys/class/pwm/pwmchip0/pwm2/duty_cycle
# 使能 PWM2
echo 1 > /sys/class/pwm/pwmchip0/pwm2/enable
5. 输入设备节点
| 功能 | 设备节点 |
|---|---|
| 按键 | /dev/input/event0 |
| 电阻触摸屏 | /dev/input/event1 |
| 电容触摸屏 | /dev/input/event2 |
6. 网络设备节点
| 类型 | 设备名 |
|---|---|
| 有线网卡 | eth0 |
| Wi-Fi | wlan0 |
使用 ifconfig 或其他网络工具打开和配置网络,例如:
ifconfig eth0 up
ifconfig wlan0 up