Edit online

GPAI 配置

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 根目录下执行 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";
        };
    };