NXP i.MX6 GPIO value值读取为0

项目场景:

眺望电子TW-IMX6DL-EVM开发板上开发时发现,即使IO口设置为输出状态,设置其电平为高,硬件上测量电平也是对的,但是gpio_get_value获取的状态一直是0。

编译环境及开发包:
主机:ubuntu18.04
交叉编译器:arm-linux-gnueabihf-gcc
QT5.12.8:qt-everywhere-opensource-src-5.12.8
开发板:TW-IMX6DL-EVM
Linux:Linux-4.1.15
串口工具:Xshell

注意:本文章的所有命令涉及到的路径均为眺望电子官方环境路径,需根据自身实际环境改变。本文所演示的平台来自于眺望电子 iMX6 ARM嵌入式平台,这是一个基于NXP iMX6 ARM处理器,支持单核/双核Cortex-A9的核心板。


解决方案:

1.配置SION位,使IO口在输出状态下可以正确获取状态。

这里以DTS配置为例:
&iomux {
    pinctrl-name = "default";
    pinctrl-0 = <&pinctrl_hog_1>;
    imx6ul-evk {
        ...
        /* 第29位配置为4,即表示设置SION位 */
        MX6UL_PAD_GPIO1_IO09__GPIO1_IO09    0x40017059 
        ...
    };
    ...
};

2.参考资料:

drivers/pinctrl/freescale/pinctrl-imx.c 

关键词:IMX_PAD_SION

链接:https://pan.baidu.com/s/1aqtemSU9qNeRRfHVrvq5uw
提取码:twdz

### NXP 处理器 GPIO 读取所需时间 对于NXP处理器上的GPIO操作,尤其是读取GPIO的操作,具体耗时取决于多个因素,包括但不限于所使用的具体型号、当前系统的负载情况以及访问方式。 当通过软件层面读取GPIO状态时,在Linux环境下通常会涉及到用户空间到内核空间的切换。这种情况下,每次调用`gpio_get_value()`函数不仅涉及底层寄存器的实际读取动作,还伴随着上下文切换开销。根据实际测试经验[^2],这类操作可能消耗数微秒至数十微秒不等的时间。 如果采用更高效的直接内存映射(DMA)或其他硬件加速机制,则能够显著减少延迟并提高吞吐量。然而需要注意的是,并不是所有的应用场景都适合使用DMA来处理GPIO信号;只有那些具有连续性和规律性的大量数据传输场景才更适合利用此类特性[^5]。 另外得注意的一点是在某些特定条件下,比如在i.MX6系列平台上观察到了即使物理电平正确但API返回的结果却始终为低的情况[^4]。这表明除了理论上的性能指标之外,还需要考虑潜在的驱动程序兼容性问题或硬件设计缺陷所带来的额外影响。 综上所述,针对不同类型的NXP处理器及其应用环境,GPIO读取的具体耗时会有较大差异。为了获得更加精确的数据,建议基于目标平台编写专门的测试代码来进行测量。 ```c #include <linux/gpio.h> #include <time.h> // 假设已经完成了必要的初始化工作... struct timespec start, end; clock_gettime(CLOCK_MONOTONIC, &start); int value = gpio_get_value(gpio_pin_number); // 替换为具体的GPIO编号 clock_gettime(CLOCK_MONOTONIC, &end); long elapsed_time_ns = (end.tv_sec - start.tv_sec) * 1000000000L + (end.tv_nsec - start.tv_nsec); printf("Time taken to read GPIO: %ld ns\n", elapsed_time_ns); ``` 此C语言片段展示了如何计算一次GPIO读取过程中的时间消耗。请注意,这段代码仅作为示例用途,在真实环境中应当加入更多的错误检查逻辑以确保稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

眺望电子-ARM嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值