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

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

3天内不再提示

ELF 1技术贴|应用层更改引脚复用的方法

ElfBoard 2024-03-27 14:14 次阅读

嵌入式系统设计中,引脚复用功能通常是通过设备树(Device Tree)预先配置设定的。出厂的设备树中UART2_TX_DATA和UART2_RX_DATA两个引脚被复用成了UART2功能,如果想要在不更换系统镜像的情况下,将这两个引脚的功能转换为GPIO,并作为数字输出(DO)引脚来控制高低电平信号,该如何实现呢?

下面我们将逐步解析如何在应用层修改IOMUX复用寄存器,从而实现将上述两个引脚重新复用为GPIO功能的操作。

在ElfBoard官方资料中的05-硬件资料\05-2芯片数据手册\IMX6ULLARM手册中找到这两个引脚的MUX寄存器和PAD寄存器。

UART2_TX_DATA和UART2_RX_DATA的MUX寄存器如下图:

wKgZomYDt9uAGqseAAK-ypLX9Js555.png

wKgaomYDt-OABKy7AALTCsxn_OE911.png

UART2_TX_DATA和UART2_RX_DATA的PAD寄存器如下图:

wKgZomYDuAWAVKSiAAKf5aee3fE156.png

wKgZomYDuCOAcxUuAALHfvjQlNM608.png

可以直接使用memtool工具进行修改。

链接:https://pan.baidu.com/s/10ixxhbwf4yGajS8SYUIATQ

提取码:ju2x

(1)测试

在修改之前先进行测试,直接在文件系统中,使用以下命令操作,通过万用表测量发现不能成功输出高低电平:

echo 20 > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio20/direction echo "1" > /sys/class/gpio/gpio20/value echo "0" > /sys/class/gpio/gpio20/value echo 21 > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio21/direction echo "1" > /sys/class/gpio/gpio21/value echo "0" > /sys/class/gpio/gpio21/value

(2)用memtool工具读一下这两个寄存器

wKgaomYDuFaAWpP8AAXNvKMkpEU002.png

因为这两个寄存器是连续的,所以也可以使用这个命令直接读两个寄存器:

wKgaomYDuHGAc_WvAAYhACLo-CU923.png

可以看出,这两个MUX寄存器的值为0,以UART2_TX_DATA为例,通过下图得知0表示复用成UART2功能:

wKgaomYDuImAWYOJAAMckPQvN4c979.png

同时也读一下这两个引脚的PAD寄存器:

wKgaomYDuJ2AFAljAAY-M47Cn1E740.png

可以看到读出来的电气参数跟设备树中配置一致:

wKgZomYDuMiAOrZuAAP_p17HLuE758.png

(3)现在使用memtool工具设置寄存器

设置这两个引脚的MUX寄存器值为0x05,即复用成GPIO功能。

wKgZomYDuO-AaxAqAAaaIx1BW64749.png

设置这两个引脚的PAD寄存器值为0x10b0。

wKgaomYDuQqAcrk1AAaV_TgJj3M843.png

(4)测试验证

此时,再去将这两个引脚当做GPIO去操作:通过万用表测量,能够控制引脚高低电平的输出。
完成以上所有步骤后,即可实现应用层对引脚复用功能的动态调整。期待以上的指南能对各位小伙伴提供切实的帮助!

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

    关注

    4982

    文章

    18281

    浏览量

    288464
  • Linux
    +关注

    关注

    87

    文章

    10991

    浏览量

    206736
  • 开发板
    +关注

    关注

    25

    文章

    4429

    浏览量

    93995
收藏 人收藏

    评论

    相关推荐

    嵌入式学习-ElfBoard ELF 1-gpio模拟i2c的方法

    (2) iomuxc节点复用IO引脚(3)编译设备树elf@ubuntu:~/work/linux-4.1.15-elf1$ make dtbs 三、替换内核和设备树(
    发表于 02-22 15:17

    ElfBoard ELF 1开发板-putty保存日志的方法

    ELF 1开发板有串口登录和网络登录两种方式,具体方法参考《01-0 ELF1ELF1S开发板_快速启动手册》“2.2 串口登录方式”和“
    发表于 02-29 17:04

    嵌入式学习-飞凌ElfBoard ELF 1板卡-控制wifi模块8723du断/上电

    :root@ELF1:~# echo 510 > /sys/class/gpio/export//导出引脚root@ELF1:~# echo 1 > /sys/class
    发表于 03-13 10:09

    嵌入式学习-飞凌ElfBoard ELF 1板卡 - 应用层更改引脚复用方法

    应用层修改IOMUX复用寄存器,从而实现将上述两个引脚重新复用为GPIO功能的操作。 在ElfBoard官方资料中的05-硬件资料\\\\05-2芯片数据手册\\\\IMX6ULLAR
    发表于 03-29 15:28

    I.MX6ULL-飞凌 ElfBoard ELF1板卡- 应用层更改引脚复用方法

    应用层修改IOMUX复用寄存器,从而实现将上述两个引脚重新复用为GPIO功能的操作。 在ElfBoard官方资料中的05-硬件资料\\\\05-2芯片数据手册\\\\IMX6ULLAR
    发表于 03-29 15:29

    飞凌嵌入式ElfBoard ELF 1板卡-4G模块断/上电

    :root@ELF1:~# echo 504 > /sys/class/gpio/export//导出引脚root@ELF1:~# echo 0 > /sys/class
    发表于 04-11 09:41

    关于can总线应用层协议

    can总线本身有一个规范协议can 2.0b,那应用层协议主要是规定哪些内容的(我只知道有分配标识符等),can总线通信的数据格式是不是也是在应用层规定的?哪位高手能不能具体举例讲一下。------谢谢
    发表于 07-09 02:38

    Z-Stack的应用层调整(中)

    Z-Stack的应用层调整(中)欢迎研究ZigBee的朋友和我交流。。。
    发表于 08-12 21:08

    Zigbee怎么在应用层中查看信道?

    Zigbee怎么在应用层中查看信道?我主要是想查找网络的PANID和信道灯参数,也就是_NIB里面的参数。谢谢
    发表于 04-19 09:47

    can应用层协议

    有写过can应用层的协议吗,我正在搞nmea2000的can协议,网上没有资料,求帮助!!!!!!!!!
    发表于 04-09 19:03

    应用层通信安全

    `欢迎工程师的我们!电子发烧友E2E技术沙龙-北京站,本期讨论主题是关于“应用层通信安全”E2E活动北京站活动链接~~http://url.elecfans.com/u/e524cb1b33
    发表于 03-18 17:55

    学习嵌入式Linux应用层的开发

    1 应用层与驱动要想学习嵌入式Linux应用层的开发,首先要区分好应用层和驱动之间的关系。我
    发表于 11-02 10:20

    如何跳转到应用层

    如何跳转到应用层
    发表于 01-20 07:03

    【学习打卡】OpenHarmony的应用层说明

    因为有了应用层,使得我们在这个阶段,可以把数据或应用程序以用户可以看明白的可视形式呈现。应用层需要处理以下功能:1.确保接收设备被识别、可到达并准备好接受数据;2.在适当的情况下,启用设备之间的身份验证
    发表于 07-14 08:44

    ElfBoard 的ELF1 板卡修改时区的方法

    / DhakaDubaiHong_KongKarachiShanghaiTokyo 一、方法1.打开/etc/profile: root@ELF1:~# vi /etc/profile 2.把TZ
    发表于 10-19 14:13