加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

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

03/28 08:36
1616
阅读需 4 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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

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

在ElfBoard官方资料中的05-硬件资料5-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/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工具读一下这两个寄存器

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

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

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

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

(3)现在使用memtool工具设置寄存器
设置这两个引脚的MUX寄存器值为0x05,即复用成GPIO功能。

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

(4)测试验证

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

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

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
MOC3063SM 1 Isocom Components Triac Output Optocoupler With Zero CRSVR, 1-Element, 5300V Isolation, ROHS COMPLIANT, SURFACE MOUNT PACKAGE-6
$1.15 查看
ASEMPLV-100.000MHZ-LR-T 1 Abracon Corporation MEMS OSC XO 100.0000MHZ LVDS SMD
$4.89 查看
ABCU-5710RZ 1 Broadcom Limited Transceiver, 1250Mbps(Tx), 1250Mbps(Rx), RJ-45 Connector, Board/panel Mount, ROHS COMPLIANT, PLASTIC PACKAGE-20
$89.89 查看

相关推荐

电子产业图谱