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

犀牛派X1封面
更多详情查看: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

0(1)

犀牛派 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   #关闭

3

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

4

硬件物理接入后,可将调用方法用一个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灯亮灯与灭灯交替进行。

结果演示:

gpio

posted @ 2026-01-21 10:21  阿加犀智能  阅读(1)  评论(0)    收藏  举报