扩展IO 使用说明

1. GPIO

1.1 引脚分布

开发板顶部的双排针引出了 GPIO(PE0 ~ PE9)
- PE2 ~ PE7:默认作为 3 路串口 使用
- PE0、PE1、PE8、PE9:默认作为普通 GPIO 使用

普通 GPIO

PE0, PE1, PE8, PE9

IO接口

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