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

在嵌入式系统设计中,引脚复用功能通常是通过设备树(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寄存器如下图:

图片

图片

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

图片

图片

可以直接使用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/valueecho 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工具读一下这两个寄存器

图片

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

图片

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

图片

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

图片

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

图片

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

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

图片

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

图片

(4)测试验证

此时,再去将这两个引脚当做GPIO去操作:

通过万用表测量,能够控制引脚高低电平的输出。

完成以上所有步骤后,即可实现应用层对引脚复用功能的动态调整。期待以上的指南能对各位小伙伴提供切实的帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/773826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入探讨iOS开发:从创建第一个iOS程序到纯代码实现全面解析

iOS开发作为移动应用开发的重要领域之一,对于开发人员具有重要意义。本文将深入探讨iOS开发的各个方面,从创建第一个iOS程序到纯代码实现iOS开发,带领读者全面了解iOS应用程序的开发流程和技术要点。 📱 第一个iOS程序 在创建第…

C++ namespace命名空间 static静态成员

目录 命名空间 静态成员 (1)静态数据成员 (2)静态成员函数 1 myclass.h 2 myclass.cpp 3 test.h 4 test.cpp 5 main.cpp 命名空间 命名空间(namespace)是许多编程语言使用的一种代码组织的形式。…

基于springboot+vue+Mysql的超市进销存系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

工地污水处理一体化成套设备如何选型

工地污水处理一体化成套设备的选型是确保工地污水处理效果的关键。在选择合适的设备前,我们需要考虑几个重要因素。 首先,我们需要评估工地的实际污水处理需求。包括污水产生量、水质特征、处理要求等。通过了解工地的情况,我们能够确定适合处…

Rust 开发的高性能 HTTP 请求工具

一、简述 在现在的软件开发领域,HTTP请求的快速验证变得越来越重要。特别是对于后端开发人员和测试工程师来说,能够快速创建、执行并验证HTTP请求对于提升开发效率至关重要。近期有一个名为Hurl的开源项目,它被设计来高效执行HTTP请求&#…

一文读懂ETF(二)之交易详情

ETF分类(二)交易详情 我们昨天讲到了什么是ETF,ETF有哪些类型,很多朋友对ETF就有了一个基础的认识。 那么今天继续了解了解ETF的交易详情,我们在交易ETF的时候经常发现,有些ETF是可以当天卖出的&#xff0c…

《探索移动开发的未来之路》

移动开发作为当今科技领域中最为炙手可热的领域之一,正以惊人的速度不断迭代和发展。从技术进展到应用案例,再到面临的挑战与机遇以及未来的趋势,移动开发都呈现出了令人瞩目的发展前景。本文将围绕移动开发的技术进展、行业应用案例、面临的…

服务运营 | 印第安纳大学翟成成:改变生活的水井选址

编者按: 作者于2023年4月在“Production and Operations Management”上发表的“Improving drinking water access and equity in rural Sub-Saharan Africa”探讨了欠发达地区水资源供应中的可达性和公平性问题。作者于2020年1月去往非洲埃塞俄比亚提格雷地区进行…

2.9 Python缩进规则(包含快捷键)

Python缩进规则(包含快捷键) 和其它程序设计语言(如 Java、C 语言)采用大括号“{}”分隔代码块不同,Python采用代码缩进和冒号( : )来区分代码块之间的层次。 在 Python 中,对于类…

【Java面试题】计算机网络

文章目录 1.计算机网络基础1.1网络分层模型/OSI七层模型是什么?1.2TCP/IP四层模型是什么?每一层的作用?1.2.1TCP四层模型?1.2.2为什么网络要分层? 1.2常见网络协议1.2.1应用层常见的协议1.2.2网络层常见的协议 2.HTTP2…

数据分类分级赋能企业数据安全建设(附下载)

请前往知识星球下载:https://t.zsxq.com/18KTZnJMX 数据分类分级方案是指根据数据的特性、重要性以及安全性要求,将数据按照一定的标准和规则进行分类和定级,以便于更好地管理和利用这些数据。下面是一个基础的数据分类分级方案的构建步骤和…

基数排序详解

基数排序详解 一、基数排序的基本概念二、基数排序的特点二、基数排序的工作过程三、基数排序的伪代码四、基数排序的C语言代码示例五、基数排序的稳定性六、基数排序的优化与变体七、基数排序的应用场景八、结论 在计算机科学中,排序算法是一种非常基础和重要的算法…

CE认证收费标准、认证周期、认证流程

CE认证根据产品不同,对应的欧盟指令(法规)和测试标准就不同,其测试成本就不同,而测试成本是认证费用里占大的比例,因此认证费用就会不同;打个比方,空调和挖掘机,一个是家…

页面中异步请求的数据,python爬虫能爬到吗

页面中异步请求的数据通常是通过JavaScript在浏览器端发起的,这些请求在初始的HTML页面加载之后执行。Python爬虫直接请求HTML页面时,只能获取到初始的HTML内容,而无法直接获取到异步请求加载的数据。但是,有几种方法可以让Python…

Salesforce Flow直播预报

各位使用Salesforce的亲们已经发现Process Builder/Workflow距离最后退役的时间是越来越近了,强大的并且以后会更强大的Flow即将全面一统江湖,想快速上手Flow或者想了解Salesforce产品的Flow原理的宝们可以预约起来啦!

【二叉树】Leetcode 102. 二叉树的层序遍历【中等】

二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点) 示例1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 解题思路…

如何使用ArkTS中的canvas实现签名板功能

一、屏幕旋转 实现签名板的第一个功能就是旋转屏幕。旋转屏幕在各种框架中都有不一样的方式,比如: 在H5端,我们一般是使用CSS中的transform属性中的rotate()方法来强制将网页横屏,然后实现一系列功能在嵌套第三方APP中&#xff…

spring 的理解

spring 的理解 spring 是一个基础的框架,同时提高了一个Bean 的容器,用来装载Bean对象spring会帮我们创建Bean 对象并维护Bean对象 的生命周期。在spring 框架上,还有springCloud,spring Boot 的技术框架,都是以Spring为基石的sp…

【Golang星辰图】Go语言中的数学和科学计算:从基础算法到高级工具的完整探索

加速数学和科学计算:使用Go语言的优秀库和示例代码 前言: 在当今数据驱动的世界中,数学和科学计算是解决各种问题的关键。而Go语言作为一门简单、高效和强大的编程语言,也提供了许多优秀的数学和科学计算库。本文将介绍几个流行…

Covalent Network(CQT)的以太坊时光机:在 Rollup 时代确保长期数据可用性

以太坊正在经历一场向 “Rollup 时代” 的转型之旅,这一转型由以太坊改进提案 EIP-4844 推动。这标志着区块链技术的一个关键转折,采用了一种被称为“数据块(blobs)”的新型数据结构。为了与以太坊的扩容努力保持一致,…