EVO ORIN GPIO数字输出#
接口引脚定义#

接口名称 |
引脚序号 |
接口说明 |
引脚号 |
设备节点 |
|---|---|---|---|---|
DI_1 |
1 |
GPIO IN |
308 |
di1 |
DI_2 |
3 |
GPIO IN |
309 |
di2 |
DI_3 |
5 |
GPIO IN |
310 |
di3 |
DI_4 |
7 |
GPIO IN |
311 |
di4 |
DI_5 |
9 |
GPIO IN |
312 |
di5 |
DI_6 |
11 |
GPIO IN |
313 |
di6 |
DI_7 |
13 |
GPIO IN |
314 |
di7 |
DI_8 |
15 |
GPIO IN |
315 |
di8 |
DO_1 |
19 |
GPIO OUT |
300 |
do1 |
DO_2 |
21 |
GPIO OUT |
301 |
do2 |
DO_3 |
23 |
GPIO OUT |
302 |
do3 |
DO_4 |
25 |
GPIO OUT |
303 |
do4 |
DO_5 |
27 |
GPIO OUT |
304 |
do5 |
DO_6 |
29 |
GPIO OUT |
305 |
do6 |
DO_7 |
31 |
GPIO OUT |
306 |
do7 |
DO_8 |
33 |
GPIO OUT |
307 |
do8 |
GND |
2、4、6、8、10、12、14、16、18、20、22、 24、26、28、30、32、34、36 |
地 |
||
DC 5V |
17 |
DC 5V OUT |
||
DC 12V |
35 |
DC 12V OUT |
电气特性#
名词 |
规格 |
|---|---|
Vout |
0~48V(支持3.3V,5V,12V,24V,48V),最大驱动电流20mA |
说明 |
应用条件 |
|
|---|---|---|
Vref |
用户外部供电 |
3.3V~48V |
R |
用户外接上拉电阻 |
R>Vref/0.02 (0,02为DO芯片驱动电流最大值) R电阻封装耐受功率>Idrv²*R(Idrv = Vref/R) |
Vout |
当输出逻辑高时,Vout = Vref 当输出逻辑低时,Vout = 0 |
Vout对接外部设备的IO端口使用。 禁止外部电源直连到Vout,否则导致Vout端口启动被动保护,导致IO信号异常。 |

说明 |
|
|---|---|
Vref |
是用户端要外部提供的电压。 |
Passive Load |
无源负载。如LED,继电器,电磁阀等。 |
Active Sourcing Input |
源型输入(带内部上拉的数字输入对接),如PLC等 |
开漏输出推荐上拉电阻表#
需要外部提供的电压(Vref) |
3.3V |
5V |
12V |
24V |
36V |
48V |
推荐上拉电阻值(Ω) |
500 |
1k |
2k |
5k |
10k |
10k |
使用方式#
系统版本5.xx-x.x.x及以下#
对GPIO接口使用的示例如下
# 切换到root用户
sudo su -
# 设置为高电平(DO)
echo 1 > /sys/class/gpio/<设备节点名>/value
# 例子:echo 1 > /sys/class/gpio/gpio339/value
# 设置为低电平(DO)
echo 0 > /sys/class/gpio/<设备节点名>/value
# 例子:echo 1 > /sys/class/gpio/gpio309/value
系统版本6.x.x-x.x.x及以上#
对GPIO接口使用的示例如下
sudo /opt/miivii/features/gpio/bin/miivii_set_do_level <DO number> <level: 0/1> <duration(seconds) of level>
# <DO number>:表示DO的序号,0表示DO1,1表示DO1,以此类推;
# <level: 0/1>:表示需要设置的电平,0表示低电平,1表示高电平;
# <duration(seconds) of level>:电平持续时间,单位为秒。在此期间,DO的电平为<level: 0/1>的状态;超过电平持续时间后,DO恢复为之前状态。
# 请注意,Linux内核从4.8版本开始,GPIO SYSFS接口被标为过时,并且在Jetpack 6.0开始不再支持,并推荐通过libgpiod来进行GPIO操作。因此不支持不设置保持时间的方式。
# 例: 设置DO0为高电平,保持时间为20秒。
#sudo /opt/miivii/features/gpio/bin/miivii_set_do_level 0 1 20
示例代码编译
cp -r /opt/miivii/features ~/
cd ~/features/gpio
sudo make;
GPIO问题排查#
一、权限与引脚占用类问题#
现象 |
原因分析 |
解决方法 |
|---|---|---|
执行 返回 ‘” |
GPIO已被其他驱动/进程占用 |
1. 检查占用源: 2. 终止占用进程: 3. 强制释放: |
操作 |
用户未加入 |
1. 添加用户组: 2. 修改文件权限: |
二、电平异常类问题#
现象 |
原因分析 |
解决方法 |
|---|---|---|
输出电平不稳定 |
1. 电源干扰/接地不良 2. PCB跨分割导致阻抗突变<br>3. 负载电流超限 |
1. 增加去耦电容滤波 2. 检查PCB布线,避免信号线跨越电源分割区 3. 外接MOSFET驱动高负载设备 |
输入值错误 |
1. 未配置上下拉电阻 2. 外部电压超范围 |
1. 软件配置上拉: 2. 硬件增加4.7kΩ上拉电阻,或使用电平转换器 |
输出模式下读取电平导致死机 |
1. 错误访问输入寄存器(IDR) 2. 外部电路短路 |
1. 改用输出数据寄存器读取状态 2. 硬件串联100Ω限流电阻,避免过流 |
三、中断与事件检测故障#
现象 |
原因分析 |
解决方法 |
|---|---|---|
中断无响应(边缘触发失效) |
1. 中断类型配置错误 2. ISR阻塞过久 |
1. 确认触发边沿: 2. 优化ISR:用 |
事件检测误触发(如无故触发高电平) |
1. 信号噪声干扰 2. 引脚虚焊/接触不良 |
1. 软件添加消抖: 2. 硬件屏蔽线隔离干扰源,或增加RC滤波电路 |
四、功能配置冲突#
现象 |
原因分析 |
解决方法 |
|---|---|---|
GPIO方向设置无效(无法切输入/输出) |
1. 复用功能冲突(如被占用为I2C) 2. 驱动未加载 |
1. 检查设备树:确认 2. 加载驱动: |
同一引脚输出/输入切换失败 |
1. 模式切换时序冲突 2. 中断抢占导致状态错乱 |
1. 关闭中断期间操作: 2. 用全局变量缓存状态,避免频繁切换 |