犀牛派X1的GPIO调用实操演示

更多详情查看:https://item.taobao.com/item.htm?ft=t&id=951866832556
设备介绍
犀牛派X1是阿加犀的一款基于高通跃龙QCS8550平台研发的智能边缘计算开发板,采用6核高性能处理器,大核主频高达3.2GHz。集成高性能图形引擎 和综合算力达48TOPS的AI引擎,支持Wi-Fi 7 (2.4G/5G/6GHz),BT5.3/BLE,GNSS等无线通信技术。犀牛派X1开发板拥有丰富的工业接口, 包括USB3.0/USB2.0/USB-C/HDMI/Audio/RJ45等,可广泛应用于工业控制,智能制造,安防监控,智能机器人,数字多媒体等领域,其详细硬件参数信息如下:
| 项目 | 参数 |
|---|---|
| 平台 | Qualcomm® QCS8550 |
| AI性能 | ~48 TOPS INT8 |
| OS | AidLux(Android13 + Ubuntu22.04) / Ubuntu22.04 |
| CPU | 1x Kryo Prime 3.2 GHz + 2x Kryo Gold 2.8 GHz + 3x Kryo Silver 2.0 GHz |
| GPU | Adreno 740 |
| 运行内存 | 16GB LPDDR5X |
| 存储 | 128GB |
| 视频编解码 | Decode: 4K@240fps or 8K@60fps H.264/H.265 /Encode: 4K@120fps or 8K@30fps H.264/H.265 |
| Camera | x8, CSI interface reserved |
| HDMI | HDMI OUT X1, HDMI IN x1, 支持HDMI1.4,支持1080P@60Hz, 支持4K@30Hz |
| 无线连接 | Wi-Fi7:802.11be, 2.4G/5G/6G HZ DBS, 2*2 MIMO BT:5.3 |
| USB | USB-A 3.0:x4, USB3.0 Type-C:x1, 支持DP1.4 |
| 音频 | Line in, 3.5mm Interface; Line out, 3.5mm Interface |
| 网络接口 | LAN * 3,WAN * 1 |
| RTC | x1, CR2032(225mAh) |
| 电源 | DC12V 5A |
| 工作温度 | -20℃ ~ +60℃ |
| 外形尺寸 | 125x110x35.5mm |
| 其他接口 | RS232: x2,RS485: x2,40PIN连接器,MIPI—DSI |

犀牛派 X1 (Rhino Pi-X1) 板载两种 40 PIN GPIO 接口:
- 40-Pin 3.3V GPIO 扩展接口 (树莓派适配)
- 40-Pin 1.8V GPIO 扩展接口
并且Rhino Pi-X1 配备了一个板载 40-PIN 简牛 2.5 间距连接器,用于扩展 3.3V GPIO 扩展,为硬件扩展提供了高度灵活的接口支持。用户可以通过此接口连接各种传感器、通信模块、显示器和其他嵌入式外设,在物联网 (IoT) 、机器人控制和工业自动化等领域实现快速原型设计和功能验证。
40-Pin 3.3V GPIO扩展接口功能如下表:
| Function | PIN# | PIN# | Function |
|---|---|---|---|
| 3.3V OUT | 1 | 2 | 5V OUT |
| I2C1_SDA | 3 | 4 | 5V OUT |
| I2C1_SCL | 5 | 6 | GND |
| GPIO_00 | 7 | 8 | GPIO_12 |
| GND | 9 | 10 | GPIO_01 |
| GPIO_05 | 11 | 12 | LPI_I2S2_CLK |
| I2C4_SDA | 13 | 14 | GND |
| I2C4_SCL | 15 | 16 | UART_RX |
| 3.3V OUT | 17 | 18 | GPIO_61 |
| SPI3_MOSI | 19 | 20 | GND |
| SPI3_MISO | 21 | 22 | GPIO_118 |
| SPI3_CLK | 23 | 24 | SPI3_CS0 |
| GND | 25 | 26 | GPIO_22 |
| GPIO_32 | 27 | 28 | GPIO_33 |
| UART_TX | 29 | 30 | GND |
| GPIO_62 | 31 | 32 | GPIO_91 |
| GPIO_124 | 33 | 34 | GND |
| LPI_I2S2_WS | 35 | 36 | GPIO_63 |
| GPIO_60 | 37 | 38 | LPI_I2S2_DATA0 |
| GND | 39 | 40 | LPI_I2S2_DATA1 |
40-Pin 1.8V (通用)GPIO扩展接口功能如下表:
| Function | PIN# | PIN# | Function |
|---|---|---|---|
| NC | 1 | 2 | 1.8V OUT |
| NC | 3 | 4 | GND |
| GPIO_70 | 5 | 6 | I2S1_CLK |
| NC | 7 | 8 | I2S1_WS |
| GND | 9 | 10 | I2S1_DATA0 |
| GPIO_36 | 11 | 12 | I2S1_DATA1 |
| GPIO_37 | 13 | 14 | GND |
| Uart TX | 15 | 16 | 1.8V/100mA |
| Uart RX | 17 | 18 | SENSOR_I3C_SCL |
| MAG_ALPS_I2C_SCL | 19 | 20 | SENSOR_I3C_SDA |
| MAG_ALPS_I2C_SDA | 21 | 22 | SENSOR_I2C_SCL |
| GPIO_06 | 23 | 24 | SENSOR_I2C_SDA |
| ADC IN0 | 25 | 26 | I2S3_DATA1 |
| Debug_UART_TX | 27 | 28 | 5V OUT/300mA |
| Debug_UART_RX | 29 | 30 | I2S3_DATA0 |
| I2S3_CLK | 31 | 32 | ADC IN1 |
| I2S3_WS | 33 | 34 | GND |
| GND | 35 | 36 | ADC IN2 |
| CAN_L | 37 | 38 | GND |
| CAN_H | 39 | 40 | PWM |
实操演示
1、AidLux中调用GPIO安装必要的工具
sudo apt update
sudo apt install gpiod libgpiod2 libgpiod-dev
2、犀牛派X1中按硬件接口定义,GPIO分为多组(00、01、05、12...)以00组为例,调用命令
sudo gpioset /dev/gpiochip0 0=1 #打开
sudo gpioset /dev/gpiochip0 0=0 #关闭

采用一个单模块LED灯将其VCC、GND、IN分别接入对应接口位置,接口详情信息可查技术文档APLUX Doc Center

硬件物理接入后,可将调用方法用一个python脚本来进行控制,例如:
import subprocess
import time
import signal
import sys
# 配置 GPIO 参数(可根据实际硬件修改)
GPIO_CHIP = "/dev/gpiochip0" # GPIO 芯片设备路径
GPIO_LINE = 0 # 控制 LED 的 GPIO 引脚号
INTERVAL = 2 # 闪烁间隔(秒)
# 初始化:确保程序退出时关闭 LED
def cleanup():
"""清理函数:关闭 LED,释放 GPIO 资源"""
try:
# 设置 GPIO 为低电平,关闭 LED
subprocess.run(
["sudo", "gpioset", GPIO_CHIP, f"{GPIO_LINE}=0"],
check=True,
stdout=subprocess.DEVNULL, # 屏蔽命令输出
stderr=subprocess.DEVNULL
)
print("\nLED 已关闭,资源已清理")
except subprocess.CalledProcessError as e:
print(f"\n清理 GPIO 时出错:{e}")
sys.exit(0)
# 注册信号处理(Ctrl+C 退出时执行清理)
def signal_handler(signal_num, frame):
"""捕获 Ctrl+C 信号,执行清理"""
print("\n接收到退出信号,正在关闭 LED...")
cleanup()
# 注册信号(SIGINT 对应 Ctrl+C)
signal.signal(signal.SIGINT, signal_handler)
def set_gpio_level(level):
"""设置 GPIO 电平(0:低电平,1:高电平)"""
try:
# 调用 gpioset 命令设置电平
result = subprocess.run(
["sudo", "gpioset", GPIO_CHIP, f"{GPIO_LINE}={level}"],
check=True,
stdout=subprocess.DEVNULL,
stderr=subprocess.PIPE # 捕获错误输出
)
return True
except subprocess.CalledProcessError as e:
print(f"设置 GPIO 电平失败({level}):{e.stderr.decode('utf-8').strip()}")
return False
except FileNotFoundError:
print("错误:未找到 gpioset 命令,请确保安装了 libgpiod 工具")
cleanup()
except Exception as e:
print(f"未知错误:{e}")
cleanup()
def main():
"""主函数:实现 LED 闪烁"""
print(f"开始 LED 闪烁(间隔 {INTERVAL} 秒),按 Ctrl+C 退出...")
try:
while True:
# 打开 LED(高电平)
if set_gpio_level(1):
print("LED 亮")
time.sleep(INTERVAL)
# 关闭 LED(低电平)
if set_gpio_level(0):
print("LED 灭")
time.sleep(INTERVAL)
except Exception as e:
print(f"程序异常:{e}")
cleanup()
if __name__ == "__main__":
main()
该脚本将执行两秒时间间隔控制GPIO信号使得LED灯亮灯与灭灯交替进行。
结果演示:


浙公网安备 33010602011771号