Edit online

GPAI 配置

17 Dec 2024
Read time: 2 minute(s)

内核配置

  1. 配置 IIO

    在 SDK 根目录下执行 make menuconfig,进入menuconfig 配置界面,按如下选择:

    ArtInChip Luban SDK Configuration
        Linux kernel
            Advance setting
                Linux Kernel Tools
                    <*>iio
  2. 配置 GPAI
    在 SDK 根目录下,执行下列命令,进入 kernel 的功能配置界面:
    make kernel-menuconfig

    或使用简写命令

    make km

    在 SDK 根目录下执行 make kernel-menuconfig,进入 kernel 的功能配置,按如下选择:

    Linux
        Device Drivers
            <*> Industrial I/O support
                Analog to digital converters
                    <*> ArtInChip GPAI driver

DTS 参数配置

  1. GPAI 自定义参数

    GPAI 驱动支持从 DTS 中配置自定义参数,如下表所示:

    1. GPAI 自定义参数
    参数名称 类型 取值范围 功能说明
    aic,sample-period-ms 正整数 > 0, (0, 10000] 周期采样模式下的周期值,单位:ms
    aic,high-level-thd 正整数 > 0 高电平报警阈值
    aic,low-level-thd 正整数 > 0 低电平报警阈值
    注:

    采样周期范围值属于 GPAI V1.0 的规范。GPAI V0.1 的周期有效范围不到 3 ms,不推荐。

  2. D211 配置
    common/d211.dtsi 中的 GPAI 控制器定义:
    gpai: gpai@19251000 {
        compatible = "artinchip,aic-gpai-v1.0";
        reg = <0x0 0x19251000 0x0 0x1000>;
        interrupts-extended = <&plic0 92 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&cmu CLK_GPAI>, <&cmu CLK_APB1>;
        clock-names = "gpai", "pclk";
        resets = <&rst RESET_GPAI>;
    };
  3. Board 配置

    xxx/board.dts 中的参数配置需要区分通道号,每个通道可以单独使能。

    使能的通道,需要指定该通道用到的 GPIO 配置,如 gpai7_pins
    &gpai {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&gpai7_pins>;
    
        gpai0 {
            aic,sample-period-ms = <10>;
            aic,high-level-thd = <1830>;
            aic,low-level-thd = <1800>;
            status = "disabled";
        };
    
        gpai1 {
            status = "disabled";
        };
    
        gpai2 {
            status = "disabled";
        };
    
        gpai3 {
            status = "disabled";
        };
    
        gpai4 {
            status = "disabled";
        };
    
        gpai5 {
            status = "disabled";
        };
    
        gpai6 {
            status = "disabled";
        };
    
        gpai7 {
            status = "okay";
        };
    };