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位于:
文件 | 描述 |
---|---|
我。MX8QXP GPIO的司机 |
设备树绑定和定制
我。MX8QXP GPIO设备树绑定记录文档/ devicetree /绑定/ gpio / fsl-imx-gpio.txt
。
一个GPIO控制器被定义为每一个我。在普通我MX8QXP GPIO港口。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固件更新:
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以太网接口:
&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
:
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的工作电压:
给定信号的定位垫ConnectCore 8 x SBC Pro示意图。例如,在ConnectCore 8 x SBC Pro,信号
GPIO5_09
来自垫ENET0_REFCLK_125M_25M
ConnectCore 8 x SOM:定位垫的IMOUX部分ConnectCore 8 x硬件参考手册。这个表列出了相关的GPIO垫,和电力领域:
定位能力域(
VDD_ENET0
在例子)ConnectCore 8 x SBC Pro示意图。在这里你可以告诉电源的电压域:
使用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行)
地点:
港口
gpio0
来gpio5
是我的。MX8QXP GPIO港口ConnectCore 8 x上可用。港口
58222000. gpio
是MIPI GPIO控制器。港口
mca-gpio
MCA 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附加信息。