APEX AD10 GPIO数字输入#
硬件连接#


接口引脚定义#

接口名称 |
DB9针脚序号 |
接口说明 |
设备节点 |
|---|---|---|---|
DI_0 |
1 |
GPIO IN |
/dev/gpio/di0 |
DI_1 |
2 |
GPIO IN |
/dev/gpio/di1 |
DO_0 |
3 |
GPIO OUT |
/dev/gpio/do0 |
DO_1 |
4 |
GPIO OUT |
/dev/gpio/do1 |
DO_2 |
5 |
GPIO OUT |
/dev/gpio/do2 |
GND |
6-9 |
地 |

接口名称 |
DB9针脚序号 |
接口说明 |
设备节点 |
|---|---|---|---|
DO_3 |
1 |
GPIO OUT |
/dev/gpio/do3 |
DI_2 |
3 |
GPIO IN |
/dev/gpio/di2 |
DI_3 |
5 |
GPIO IN |
/dev/gpio/di3 |
GND |
6/8 |
地 |
电气特性#

说明 |
|
|---|---|
Vin |
输入电压 |
GND |
地 |
A |
Anode的缩写,阳极 |
C |
Cathode的缩写,阴极 |
Vin 电压范围 |
结果 |
|---|---|
2.25V~24V |
高电平=1 |
0V~0.8V |
低电平=0 |
0.8V ~ 2.25V |
不支持 |
> 24V 或者 < 0 V |
不支持且会破坏硬件 |
使用方式#
系统版本5.xx-x.x.x及以下#
对GPIO接口使用的示例如下
# 切换到root用户
sudo su -
# 读取数据(DI)
cat /dev/gpio/<设备节点>/value
# 示例: cat /dev/gpio/di0/value
系统版本6.xx-x.x.x及以上#
对GPIO接口使用的示例如下
sudo /opt/miivii/features/gpio/bin/miivii_get_di_value <DI number>
# <DI number>:表示DI的序号,DI0则为0,DI1则为1,以此类推;
# 命令返回值,为当前DI读取的电平值,0表示低电平,1表示高电平
# 例:读取di0的输入
# sudo /opt/miivii/features/gpio/bin/miivii_get_di_value 0
示例代码编译
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. 用全局变量缓存状态,避免频繁切换 |