NXP我。MX8QXP CPU有八个GPIO港口。每个端口可以生成和控制32个信号。

MCA还有一个数量的GPIO引脚(多路复用模拟-数字转换器(ADC)功能)。看到MCA I / O垫所有可用MCA IOs的列表和他们的能力。

GPIOs ConnectCore 8 x平台

  • ConnectCore 8 x system-on-module:

    • 很多,但不是全部,我。MX8QXP GPIO system-on-module港口和别针,多路复用与其他函数(GPIO的标签x_IOy在哪里x是港口和y的销)。看到硬件参考手册什么GPIO港口和针可用信息和多路复用功能。

    • 19 MCA GPIO管脚(MCA_IO标记x在哪里x的销)。

  • ConnectCore 8 x SBC Pro,扩张连接器允许直接访问几个我。MX8QXP GPIOs和MCA GPIOs。

GPIOs SOM和载体板用于多种用途,如:

  • 权力使收发器

  • 重置为控制器

  • 液晶背光控制

  • 中断行

  • 用户使

  • 用户按钮

内核配置

对我的支持。MX8QXP GPIOs通过后自动提供选择CONFIG_GPIO_MXC

内核驱动程序

我的司机。MX8QXP GPIO位于:

文件 描述

司机/ gpio / gpio-mxc.c

我。MX8QXP GPIO的司机

设备树绑定和定制

我。MX8QXP GPIO设备树绑定记录文档/ devicetree /绑定/ gpio / fsl-imx-gpio.txt

一个GPIO控制器被定义为每一个我。在普通我MX8QXP GPIO港口。MX8QXP设备树文件:

我。MX8QXP设备树
gpio0: gpio@5d080000{兼容= "目前,imx8qm-gpio”,“目前,imx35-gpio”;reg = < 0 x0 0 x5d080000 0 x0 0 x10000 >;中断= < GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH >;gpio-controller;# gpio-cells = < 2 >;势力= < &pd_lsio_gpio0 >;中断控制器;# interrupt-cells = < 2 >;};[…] gpio7: gpio@5d0f0000 { compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio"; reg = <0x0 0x5d0f0000 0x0 0x10000>; interrupts = ; gpio-controller; #gpio-cells = <2>; power-domains = <&pd_lsio_gpio7>; interrupt-controller; #interrupt-cells = <2>; };

ConnectCore 8 x设备树包含文件和承运人板设备树文件使用我。MX8QXP GPIOs。

例如,ConnectCore 8 x, GPIO3_IO09用于激活内部电路在MCA固件更新:

ConnectCore 8 x设备树
mca_cc8x: mca@63{兼容=“数码网络,mca-cc8x”;reg = < 0 x63 >;interrupt-parent = <吴>;中断= < GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH >;中断控制器;# interrupt-cells = < 2 >;fw-update-gpio = < &gpio3 9 GPIO_ACTIVE_LOW >;pinctrl-names =“默认”;pinctrl-0 = < &pinctrl_mca_cc8x >;[…]};

例如,在ConnectCore 8 x SBC Pro, GPIO3_IO18用于重置PHY ENET1以太网接口:

ConnectCore 8 x SBC设备树
&fec1 {pinctrl-names =“默认”;pinctrl-0 = < &pinctrl_fec_mdio >, < &pinctrl_fec_gpio >、< &pinctrl_fec1_gpio >、< &pinctrl_fec1 >;时钟= < clk IMX8QXP_ENET0_IPG_CLK >、< clk IMX8QXP_ENET0_AHB_CLK >, < clk IMX8QXP_ENET0_REF_50MHZ_CLK >, < clk IMX8QXP_ENET0_PTP_CLK >, < clk IMX8QXP_ENET0_TX_CLK >;phy-mode = " rgmii-id”;phy-handle = < ðphy1 >;phy-supply = < ®_3v3_eth0 >;phy-reset-gpios = < &gpio3 18 GPIO_ACTIVE_LOW >;phy-reset-duration = < 1 >;目前,magic-packet;[…]};

IOMUX配置

您必须配置作为我的垫子。MX8QXP GPIOs。看到销多路复用(IOMUX)

为GPIOs由其他司机,您必须配置他们垫IOMUX司机节点内部具体pinctrl-0根据指定的接口功能。

在上面的ConnectCore 8 x的例子,mca_cc8x节点配置pinctrl_mca_cc8x:

ConnectCore 8 x设备树
pinctrl_mca_cc8x: mcagrp{目前,针= < […/ * MCA_FW_UPDATE * /SC_P_QSPI0A_DATA0_LSIO_GPIO3_IO09 0 x06000021>;};

GPIOs不与任何接口或不能由一个司机,看到的配置独立销IOMUX和垫控制。以下外部垫配置为默认设备上GPIOs树:

  • ConnectCore 8 x SBC Pro扩张连接器:

    信号 GPIO

    A7

    GPIO4_21

    GPIO4_IO21

    B7

    GPIO4_20

    GPIO4_IO20

    C4

    SPI0_IRQ_N

    GPIO1_IO01

    C7

    EXP_I2C_IRQ_N

    GPIO3_IO15

    C8

    EXP_I2C_GPIO

    GPIO3_IO14

    C13

    ADC_IN4

    GPIO1_IO14

    ADC_IN5

    GPIO1_IO13

    C15

    GPIO4_19

    GPIO4_IO19

    C18

    GPIO0_12

    GPIO0_IO12

    这里

    M40_UART_TX

    GPIO1_IO11

    D12

    M40_UART_RX

    GPIO1_IO12

    D14

    ADC_IN1

    GPIO1_IO09

    D19

    GPIO5_09

    GPIO5_IO09

GPIO垫电力领域

我。MX8QXP GPIOs是可配置的,可以工作在1.8 V和3.3 V根据电力领域的垫。

确定一个给定的GPIO的工作电压:

  1. 给定信号的定位垫ConnectCore 8 x SBC Pro示意图。例如,在ConnectCore 8 x SBC Pro,信号GPIO5_09来自垫ENET0_REFCLK_125M_25MConnectCore 8 x SOM:

    dwg gpiopad原理图8 x

  2. 定位垫的IMOUX部分ConnectCore 8 x硬件参考手册。这个表列出了相关的GPIO垫,和电力领域:

    dwg gpiopad人力资源管理som 8 x

  3. 定位能力域(VDD_ENET0在例子)ConnectCore 8 x SBC Pro示意图。在这里你可以告诉电源的电压域:

    dwg域原理图8 x

使用GPIOs

这个包libgpiod(补充道packagegroup-dey-core)提供了一组工具(如gpioset,gpioget等)控制GPIOs从用户空间。

你仍然可以控制从sysfs GPIOs,但这ABI不推荐。看到https://www.kernel.org/doc/html/latest/admin-guide/gpio/sysfs.html

检测GPIO港口

使用gpiodetect由内核列表的港口检测:

#gpiodetect gpiochip0 [gpio0](32行)gpiochip1 [gpio1](32行)gpiochip2 [gpio2](32行)gpiochip3 [gpio3](32行)gpiochip4 [gpio4](32行)gpiochip5 [gpio5](32行)gpiochip6 [58222000。gpio](32行)gpiochip7 [mca-gpio](19行)

地点:

  • 港口gpio0gpio5是我的。MX8QXP GPIO港口ConnectCore 8 x上可用。

  • 港口58222000. gpio是MIPI GPIO控制器。

  • 港口mca-gpioMCA GPIO口。

GPIO端口信息

使用gpioinfo列出给定端口的线:

#gpioinfo gpio0 gpiochip0 - 32行:0行:不知名的未使用的输入高电平1号线:不知名的未使用的输入高电平线2:未具名的未使用的输入高电平第3行:不知名的未使用的输入高电平第4行:不知名的未使用的输入高电平第5行:不知名的未使用的输入高电平6行:不知名的未使用的输入高电平第7行:不知名的未使用的输入高电平8号线:不知名的未使用的输入高电平9行:不知名的未使用的输入高电平10行:不知名的未使用的输入高电平11行:不知名的未使用的输入高电平12行:不知名的未使用的输入高电平13行:不知名的“5 v_display”输出高电平[使用]14行:不知名的“3 v3_audio”输出高电平[使用]15行:不知名的“3 v3_usb_hub”输出高电平[使用]16行:不知名的未使用的输入高电平17行:不知名的未使用的输入高电平18行:不知名的未使用的输入高电平19行:不知名的未使用的输入高电平20行:不知名的未使用的输入高电平21行:不知名的未使用的输入高电平22行:不知名的未使用的输入高电平23行:不知名的未使用的输入高电平24行:不知名的未使用的输入高电平25行:不知名的未使用的输入高电平26行:不知名的未使用的输入高电平27行:不知名的未使用的输入高电平28行:不知名的未使用的输入高电平29行:不知名的未使用的输入高电平30行:不知名的未使用的输入高电平31行:匿名“vcc”输出高电平(使用)

设置一个输出高/低

使用gpioset我设置一个。MX8QXP GPIO作为输出,如GPIO4_IO21。使用= 1设置高,或= 0设置低:

#gpioset gpio4 21 = 1#gpioset gpio4 21 = 0

读取一个输入

使用gpioget读我的价值。MX8QXP GPIO输入,如GPIO4_IO21:

#gpioget gpio4 21日0

使用一个GPIO作为中断

使用gpiomon等待一个事件在一个给定的GPIO,如GPIO4_IO21:

#gpiomon num-events 1——前沿gpio4 21

看到自述libgpiod有关这些工具的用法的更多信息。

样例应用程序

一个示例应用程序称为apix-gpio-example包含在dey-examples-digiapix配方(的一部分dey-examples的包)meta-digi层。这个应用程序展示了如何管理GPIO线使用数码网络APIx图书馆在ConnectCore 8 x平台。

GitHub查看应用程序指令和源代码。

看到GPIO API有关的APIx的更多信息。

看到MCA通用输入/输出(GPIO)MCA GPIOs附加信息。