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节点代号

#切换到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配置

#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 = <TEGRA_PIN_PULL_DOWN>;
	nvidia,tristate = <TEGRA_PIN_DISABLE>;
	nvidia,enable-input = <TEGRA_PIN_ENABLE>;
	nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
gpio44 {
	nvidia,pins = "soc_gpio44_pi2";
	nvidia,function = "rsvd2";
	nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
	nvidia,tristate = <TEGRA_PIN_DISABLE>;
	nvidia,enable-input = <TEGRA_PIN_ENABLE>;
	nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
i2s4-din {
	nvidia,pins = "dap4_din_pa6";
	nvidia,function = "rsvd2";
	nvidia,pull = <TEGRA_PIN_PULL_NONE>;
	nvidia,tristate = <TEGRA_PIN_DISABLE>;
	nvidia,enable-input = <TEGRA_PIN_DISABLE>;
	nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
i2s4-dout {
	nvidia,pins = "dap4_dout_pa5";
	nvidia,function = "rsvd2";
	nvidia,pull = <TEGRA_PIN_PULL_NONE>;
	nvidia,tristate = <TEGRA_PIN_DISABLE>;
	nvidia,enable-input = <TEGRA_PIN_DISABLE>;
	nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};

../_images/multi.io.png