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接口使用的示例如下,请将
#切换到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>;
};
