0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

飞凌嵌入式技术帖——i.MX9352的GPIO怎么用?

飞凌嵌入式 2023-05-16 15:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

之前小编为大家介绍过在飞凌嵌入式i.MX6ULL开发板上操作GPIO的方法。本期,让我们一起走近i.MX9352处理器,深入了解这位i.MX系列新成员的GPIO该如何操作,以及它与前辈i.MX6ULL处理器又有哪些异同。

01 硬件原理分析

以点灯和按键为例,打开飞凌嵌入式OK-MX9352-C开发板的原理图,可以看到一颗LED灯,它由MX93_PAD_CCM_CLKO4控制。由于这一个GPIO属于1.8V电平域,所以在OK-MX9352-C开发板的底板上并没有直接将GPIO接到LED上,而是用GPIO控制了一个MOS管,再由MOS管去控制LED的亮灭——当GPIO电平为高时,MOS导通,LED点亮;当GPIO电平为低时,MOS关断,LED熄灭。

wKgaomRjF1-AWSTsAABGtg1BjBM254.pngwKgaomRjF1-AVW1EAAAerCuNmac840.png

02 设备树引脚复用

打开飞凌嵌入式OK-MX9352-C开发板的设备树:

OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/OK-MX93-C.dts

在iomuxc节点下新建一组引脚复用,复用的两个GPIO分别是底板上的LED灯D6和按键K1。

wKgZomRjF16ACL_MAAATfyF_Olg250.png

接下来新建一个GPIO节点,内容如下:

wKgaomRjF16AKpUNAAAmjqr9Eow472.png

注释掉LED和KEY部分,防止复用冲突:

wKgZomRjF16AbyaBAABZpM4COkY809.png

保存退出后重新编译设备树。

执行环境变量:

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk$ . environment-setup-aarch64-toolchain

单独编译设备树:

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk/OKMX93-linux-kernel$ make ARCH=arm64 CROSS_COMPILE=aarch64-poky-linux- dtbs

编译完成后,单独更新设备树。首先将U盘插到虚拟机上,将生成的设备树文件拷贝到U盘:

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk/OKMX93-linux-kernel$ cp arch/arm64/boot/dts/freescale/OK-MX93-C.dtb /media/forlinx/2075-A0A7/

将生成的dtb文件使用U盘拷贝到OK-MX9352-C开发板上,替换掉:/run/media/Boot-mmcblk0p1/OK-MX93-C.dtb

root@ok-mx93:/run/media/Boot-mmcblk0p1# cp /run/media/sda/OK-MX93-C.dtb ./

重启OK-MX9352-C开发板。

03 通过命令测试

在OKMX6ULL-S开发板中,操作GPIO的方式是通过操作/sys/class/gpio下的文件来实现的。而在OK-MX9352-C上,引入了新的Lingpiod的方式,而原有的基于sysfs的操作方式已经不再被支持。

Libgpiod是一种字符设备接口,GPIO访问控制是通过操作字符设备文件(比如/dev/gpiodchip0)实现的。OK-MX9352-C共有4组GPIO,可以在/dev下查看GPIO设备文件。

Libgpiod可以通过shell终端和C库两种方式使用,本节介绍在shell终端控制GPIO的方法,下一节我们将会介绍使用C库的方式控制GPIO。

wKgZomRjF1-AQoHrAAAHLminmek601.png

3.1 gpiodetect

查看所有GPIO设备

wKgZomRjF1-AbcnMAAAMpimzTtA883.png

这里的gpiochip0- gpiochip4分别对应的是设备树当中的GPIO1-GPIO4这四组GPIO,但是顺序并不是一一对应的,这是由于对应的寄存器地址顺序问题导致的。那么goiochip0如何跟设备树对应起来呢?我们可以打开设备树当中的dtsi文件,文件路径为:

OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/imx93.dtsi

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk$ vi OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/imx93.dtsi

查看GPIO3的寄存器基地址为:gpio3: gpio@43820080,对应的是gpiochip1,而GPIO4对应的是gpiochip2。

wKgZomRjF2CAHik-AAB1NzeewXk669.png

其余GPIO的对应关系如下,可供大家参考:

wKgaomRjF1-AWclaAAAV7bS4So8225.png

3.2 gpioinfo

由3.1可知,LED灯对应的是GPIO4,即gpiochip2;按键对应的是GPIO3,即gpiochip1。列出gpiochip2控制器的引脚情况:

wKgaomRjF2CAHSkaAAAhG0pXgmU001.png

3.3 gpioset

该命令用于设置GPIO电平,2代表gpiochip2,即GPIO4,28是GPIO pin,当设置该GPIO为1时,底板上的D6点亮。

wKgaomRjF2CAF1sVAAAGNfjER6Q831.png

3.4 gpioget

该命令用于获取GPIO引脚状态,以按键为例,按键对应的是GPIO3-27,即gpiochip1 27。按键没有按下时,读取到按键状态为1,当按键按下时,读到按键状态为0。

wKgZomRjF2CANHvRAAAL40vcZt8746.png

3.5 gpiomon

监控GPIO的状态是否发生变化,同样以按键为例,当按键按下时:

wKgZomRjF2CANHvRAAAL40vcZt8746.png

04 使用Libgpiod库编程

Libgpiod是用于与Linux GPIO交互的C库和工具,Linux官方于Linux 4.8 版本引入了Libgpiod的功能。而在OK-MX9352-C开发板搭载的Linux5.15内核版本中,已经不再支持sysfs的方式操作GPIO。与sysfs相比,Libgpiod更加可靠,具备更多功能,例如,可一次读写多个GPIO值。

4.1 源码获取

如果想要在PC上交叉编译出能够在开发板上运行的应用,则交叉编译时链接的库文件应该与开发板上的保持一致,可以直接把开发板上的库拷贝到开发环境进行使用。该库文件在开发板上的路径为:

wKgZomRjF2GARzmWAAAM_nXlj88959.png

从上图可以看出,Libgpiod库的版本为libgpiod.so.2.2.2,软链接到libgpiod.so.2。

在飞凌嵌入式提供的OK-MX9352-C开发板资料中,已经将所需的库文件、头文件以及相关例程进行了打包,用户可以直接使用。资料路径为:用户资料/应用笔记/ OK-MX9352-C-GPIO接口_Linux应用笔记/Libgpiod测试源码

4.2 编译测试例程

将Libgpiod测试源码目录下的gpiotest.c、gpio-toggle.c、lib.tar.bz2拷贝到开发环境中:

wKgaomRjF2GAY8-jAAAQ5gIV5o4612.png

将lib.tar.bz2解压到本目录下,编译时会使用到里边的gpiod.h文件和Libgpiod库文件:

wKgZomRjF2GALoDlAAATjAvwfrw081.png

示例1

循环控制LED亮和灭,时间间隔为1s

交叉编译gpio-toggle.c

设置环境变量(注意 . 后边有空格)

wKgaomRjF2GABx-iAAAVJNGqGrE241.png

交叉编译

wKgaomRjF2KAZjX0AAARcZZaIII411.png

将可执行文件gpio-toggle拷贝到开发板中并执行可看到LED(D6)灯1s亮,1s灭。其中输入参数2、28为:gpiochip2 line28。

wKgZomRjF2GAMFPqAAAIC66XYOg923.png

示例2

按键控制LED亮灭,每按一次状态翻转

交叉编译gpio-test.c

设置环境变量(注意点后边有空格)

交叉编译

wKgZomRjF2KAcLYtAAAc_uLCE9c706.png

将可执行文件gpio-test拷贝到OK-MX9352-C开发板中并执行,可看到每按一次按键,LED灯的状态就翻转一次,其中输入参数1、27为:gpiochip1 line27 ;2、28为:gpiochip2 line28。

wKgaomRjF2KAFWIBAAANjFPs8Uo836.png

以上就是为OK-MX9352-C开发板配置GPIO的过程,希望能够对屏幕前的各位工程师小伙伴有所帮助。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20146

    浏览量

    328822
  • NXP
    NXP
    +关注

    关注

    61

    文章

    1376

    浏览量

    194738
  • GPIO
    +关注

    关注

    16

    文章

    1313

    浏览量

    55727
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式2026届校园招聘正式启动!

    嵌入式2026届校园招聘正式启动!
    的头像 发表于 09-19 08:03 617次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>2026届校园招聘正式启动!

    送啦!嵌入式联合NXP邀您参加OK-MX9596-C开发板试用活动

    送啦!嵌入式联合NXP邀您参加OK-MX9596-C开发板试用活动
    的头像 发表于 08-22 08:03 759次阅读
    送啦!<b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>联合NXP邀您参加OK-<b class='flag-5'>MX</b>9596-C开发板试用活动

    5分钟学会网络服务搭建!i.MX9352开发板 + Linux 6.1实战示例

    本文就将以嵌入式OK-MX9352-C开发板(搭载了在工业物联网领域广泛应用的NXP i.MX9352处理器)为平台,介绍如何在Linu
    的头像 发表于 06-13 16:42 1079次阅读
    5分钟学会网络服务搭建!<b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>i.MX9352</b>开发板 + Linux 6.1实战示例

    嵌入式】基于i.MX9352开发板M核的FreeRTOS设计例程

    i.MX 9352作为NXP 推出的新一代轻量级边缘AI处理器,集成2个Cortex-A55核和1个Cortex-M33实时核,其架构设计充分体现了对实时性与复杂任务处理能力的兼顾。为了帮助开发者充分利用i.MX
    的头像 发表于 06-13 16:14 1815次阅读
    【<b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>】基于<b class='flag-5'>i.MX9352</b>开发板M核的FreeRTOS设计例程

    5分钟学会网络服务搭建,i.MX9352 + Linux 6.1实战示例

    本文将以嵌入式OK-MX9352-C开发板(搭载了在工业物联网领域广泛应用的NXP i.MX9352处理器)为平台,介绍如何在Linux
    的头像 发表于 05-30 11:08 2146次阅读
    5分钟学会网络服务搭建,<b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>i.MX9352</b> + Linux 6.1实战示例

    「2025恩智浦创新技术峰会」嵌入式亮相上海首站

    ,展示其在低成本人工智能、工业物联网等领域的创新成果。此次峰会,嵌入式带来了基于恩智浦i.MX95xx、i.MX9352
    的头像 发表于 05-15 13:38 1059次阅读
    「2025恩智浦创新<b class='flag-5'>技术</b>峰会」<b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>亮相上海首站

    焕新登场!嵌入式FET-MX8MPQ-SMARC核心板发布

    嵌入式FET-MX8MPQ-SMARC核心板基于NXP i.MX8MPQ处理器开发设计,该系列处理器专注于机器学习与视觉处理、高级多媒体
    的头像 发表于 05-07 11:29 929次阅读
    焕新登场!<b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>FET-<b class='flag-5'>MX</b>8MPQ-SMARC核心板发布

    嵌入式2025嵌入式及边缘AI技术论坛圆满结束

    嵌入式「2025嵌入式及边缘AI技术论坛」在深圳深铁皇冠假日酒店盛大举行,此次活动邀请到了200余位
    的头像 发表于 04-28 13:57 3836次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>2025<b class='flag-5'>嵌入式</b>及边缘AI<b class='flag-5'>技术</b>论坛圆满结束

    嵌入式2025嵌入式及边缘AI技术论坛圆满结束

    4月22日下午,备受瞩目的嵌入式「2025嵌入式及边缘AI技术论坛」在深圳深铁皇冠假日酒店盛大举行,此次活动邀请到了200余位
    的头像 发表于 04-27 11:55 609次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>2025<b class='flag-5'>嵌入式</b>及边缘AI<b class='flag-5'>技术</b>论坛圆满结束

    嵌入式「2025嵌入式及边缘AI技术论坛」议程公布

    4月22日,嵌入式“2025嵌入式及边缘AI技术论坛”将在深圳举行,论坛以“新生态,智未来”为主题,旨在汇聚行业智慧,探讨
    的头像 发表于 04-02 15:12 1071次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>「2025<b class='flag-5'>嵌入式</b>及边缘AI<b class='flag-5'>技术</b>论坛」议程公布

    新生态 智未来「嵌入式2025嵌入式及边缘AI技术论坛」开启报名!

    在这个技术日新月异的时代,每一场思想的碰撞都可能成为推动行业前行的力量,每一次深度对话都可能迸发出改变时代的强光——2025年4月22日,嵌入式将在深圳举办“2025
    的头像 发表于 03-28 08:05 1015次阅读
    新生态 智未来「<b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>2025<b class='flag-5'>嵌入式</b>及边缘AI<b class='flag-5'>技术</b>论坛」开启报名!

    嵌入式携手瑞芯微成为2025年全国大学生嵌入式大赛命题企业

    近日,保定嵌入式技术有限公司(以下简称“嵌入式
    的头像 发表于 03-19 16:32 1168次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>携手瑞芯微成为2025年全国大学生<b class='flag-5'>嵌入式</b>大赛命题企业

    3.1s启动!嵌入式i.MX93开发板部署LVGL,打造更高效的GUI

    近期,嵌入式为基于NXP i.MX93系列处理器打造的OK-MX9352-C开发板成功移植了LVGL v8.3,不仅界面美观精致,启动速
    的头像 发表于 01-16 11:52 1062次阅读
    3.1s启动!<b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b><b class='flag-5'>i.MX</b>93开发板部署LVGL,打造更高效的GUI

    嵌入式2024年度盘点】乘风破浪,奋力前行

    嵌入式入选国家级专精特新重点“小巨人”企业,代表着国家对嵌入式技术实力与创新能力的认可。
    的头像 发表于 01-04 13:22 1383次阅读
    【<b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>2024年度盘点】乘风破浪,奋力前行

    嵌入式获批建设「河北省嵌入式计算机控制系统技术创新中心」

    河北省科学技术厅公示了2024年度拟新建省重点实验室和省技术创新中心的名单,保定嵌入式技术
    的头像 发表于 12-27 10:45 1043次阅读
    <b class='flag-5'>飞</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>获批建设「河北省<b class='flag-5'>嵌入式</b>计算机控制系统<b class='flag-5'>技术</b>创新中心」