7.3.2. 参数配置

7.3.2.1. 内核配置

7.3.2.1.1. 配置 IIO

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

ZX Openwrt SDK Configuration
    Linux kernel
        Advance setting
            Linux Kernel Tools
                <*>iio

7.3.2.1.2. 配置 GPAI

参考快速入门 - 编译概述 - Kernel配置,进入kernel的功能配置,按如下选择:

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

7.3.2.2. DTS 参数配置

7.3.2.2.1. GPAI 自定义参数

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

参数名称

类型

取值范围

功能说明

aic,sample-period-ms

正整数

> 0, (0, 10000]

周期采样模式下的周期值,单位:ms

aic,high-level-thd

正整数

> 0

高电平报警阈值

aic,low-level-thd

正整数

> 0

低电平报警阈值

小技巧

上表中的采样周期范围值是GPAI V1.0的。GPAI V0.1的周期有效范围不到3ms,不推荐。

7.3.2.2.2. M4 配置

在common/m4.dtsi中的GPAI控制器定义:

gpai: gpai@19251000 {
    compatible = "zx,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>;
};

7.3.2.2.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";
    };
};