工具/软件:
我发现了一种有趣的行为、PD 在基于 AM67A 的电路板 (BeaglY-AI) 上、GPIO 辅助控制与内部 PU/GPIO。
我一开始想通过 GPIO 密钥驱动程序将 GPIO 用作输入。
为方便起见、我将引脚配置为具有内部上拉电阻器的 GPIO。
gpio-keys {
compatible = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&hat_36_gpio_pu>;
key {
label = "S1-BTN";
/* HAT 36 (GPIO 16) */
gpios = <&main_gpio1 7 GPIO_ACTIVE_LOW>;
linux,code = <30>;
};
};
pinctrl 定义如下所示:
hat_36_gpio_pu: hat-36-gpio-pu-pins {
pinctrl-single,pins = <
J722S_IOPAD(0x194, PIN_INPUT_PULLUP, 7) /* (A25) MCASP0_AXR3.GPIO1_7 */
>;
};
但 我发现、当探测 GPIO 密钥驱动器时、上拉电阻器会丢失、因此引脚悬空。
然后我尝试研究一个位、似乎每当我通过 gpiod 请求行(内核或用户空间)时、上拉定义就会丢失、引脚悬空。
pinctrl 寄存器时、也可以看到这一点。
在请求带有 gpiod 的行之前:
| 引脚状态 | pinctrl 寄存器 | 输出 gpioinfo |
|---|---|---|
| 上拉 | 0x00060007. | 第 7 行:“GPIO16"未“未使用输入高电平有效 |
当请求行时:
请注意、我已测试请求具有和不具有既定偏差的线路、但这对结果没有任何影响。
| 引脚状态 | pinctrl 寄存器 | 输出 gpioinfo |
|---|---|---|
| 悬空 | 0x00050007. | 第 7 行:“GPIO16"btn-python-example"输入“输入高“高电平有效【使用的上拉电阻器】 |
当行被释放时:
| 引脚状态 | pinctrl 寄存器 | 输出 gpioinfo |
|---|---|---|
| 悬空 | 0x00050007. | 第 7 行:“GPIO16"未“未使用输入高电平有效 |
由于我没有 AM67A 的参考板、因此我无法检查是否存在这种行为。
但是、我在 AM64x EVM(相同的内核树和版本)上进行了检查、没有发生。
此处通过 pinctrl 实现的内部上拉/下拉定义仍在线路请求后保留。
通过 gpiod 请求线时偏倚的定义也没有任何效果。
对于测试、我使用了 ti-linux-6.12.y(标签 11.00.12)。
有人可以在参考设计电路板上重现该情况吗、有人是否知道为什么会出现这种情况?