# GPIO接口 ## GPIO描述 | 接口名称 | PHD2.0针脚序号 | 信号定义 | GPIO号 | | ------------ | -------------- | ----------- | ----------------- | | GPIO_222_3V3 | 2Pin/DO | GPIO222_3V3 | gpio460 | | GPIO_220_3V3 | 4Pin/DO | GPIO220_3V3 | gpio459 | | GPIO_197_3V3 | 8Pin/DI | GPIO197_3V3 | gpio465 | | GPIO_226_3V3 | 10Pin/DI | GPIO226_3V3 | gpio458 | | ISO_GND | 6Pin | ISO_GND | 隔离--GND地信号 | | DI Vin 电压范围 | 结果 | | --------------- | ------------------ | | 2V~5V | 高电平=1 | | 0V~1V | 低电平=0 | | > 5V 或者 < 0 V | 不支持且会破坏硬件 | | DO Vout结果 | | | -------- | ---- | | 高电平=1 | 3.3V | | 低电平=0 | 0V | F305L的IO接口采用了隔离电源IO,其中2路仅用作输出IO(Pin2/Pin4),2路仅用作输入IO(Pin8/Pin10)。IO为经过隔离的GPIO,GND也需要接入其独立的ISO_GND(隔离GND),实际应用时输入和输出需采用Pin6作为GND。 ### JetPack5.x配置 对GPIO接口使用的示例如下,请将中的信息修改为想要调整的GPIO节点代号 ```shell #切换到root用户 sudo su – cd /sys/class/gpio echo gpio_num > export Note:在JetPack5.x 上,exprot gpio_num 生成的是一个yyyy名字,而不是JetPack4.x 之前的gpionum 形式 # 设置为高电平(DO) echo 1 > /sys/class/gpio/xxxx/value # 设置为低电平(DO) echo 0 > /sys/class/gpio/xxx/value # 读取数据(DI) cat /sys/class/gpio/xxxx/value # 设置输入输出方向(DIRCTION) $echo in > /sys/class/gpio/xxxx/direction $echo out > /sys/class/gpio/xxx/direction ``` 若需要关机后保留配置,可以将以上命令写入/etc/rc.local 文件 ## JetPack6.x配置 ```bash #JetPack6.x -- DO/DI sudo gpioset -m wait /dev/gpiochip0 6=0 #DO1 拉高,默认为高3.7V sudo gpioset -m wait /dev/gpiochip0 6=1 #DO1 拉低为0V,停止后恢复3.7V sudo gpioset -m wait /dev/gpiochip0 5=0 #DO2 拉高,默认为高3.7V sudo gpioset -m wait /dev/gpiochip0 5=1 #DO2 拉低为0V,停止后恢复3.7V #JetPack6.x -- DI #DI&DO 短路 测量信号电平,短接如果DO设置低,则短接后DI/DO均为0V,如果DO设置为高,则短接后DI/DO均为0.9V左右 #DI1 --短接-- DO1 sudo gpioset -m wait /dev/gpiochip0 6=0 -> #DO输出高电平,DI实际测量为0.9V,读取状态为非High #DTSI 配置GPIO模式需要正确 tegra234-p3767-0000-f305-board.dts i2s4-sck { nvidia,pins = "dap4_sclk_pa4"; nvidia,function = "rsvd2"; nvidia,pull = ; nvidia,tristate = ; nvidia,enable-input = ; nvidia,lpdr = ; }; gpio44 { nvidia,pins = "soc_gpio44_pi2"; nvidia,function = "rsvd2"; nvidia,pull = ; nvidia,tristate = ; nvidia,enable-input = ; nvidia,lpdr = ; }; i2s4-din { nvidia,pins = "dap4_din_pa6"; nvidia,function = "rsvd2"; nvidia,pull = ; nvidia,tristate = ; nvidia,enable-input = ; nvidia,lpdr = ; }; i2s4-dout { nvidia,pins = "dap4_dout_pa5"; nvidia,function = "rsvd2"; nvidia,pull = ; nvidia,tristate = ; nvidia,enable-input = ; nvidia,lpdr = ; }; ``` ![](../img/multi.io.png)