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

  • 03/28 08:36

嵌入式系统设计中,引脚复用功能通常是通过设备树(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去操作:

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

人工客服
(售后/吐槽/合作/交友)
  • 器件型号:ECS-2520MV-333.3-CM-TR
    • 数量 1
    • 建议厂商 ECS International Inc
    • 器件描述 HCMOS Output Clock Oscillator,
    • 参考价格 暂无数据
    • 风险等级
    • ECAD模型
    • 数据手册
    • 查看更多信息
  • 器件型号:H11G1
    • 数量 1
    • 建议厂商 Motorola Mobility LLC
    • 器件描述 1 CHANNEL DARLINGTON OUTPUT OPTOCOUPLER
    • 参考价格 $0.89
    • 风险等级
    • ECAD模型
    • 数据手册
    • 查看更多信息
  • 器件型号:M24M01-RMN6TP
    • 数量 1
    • 建议厂商 STMicroelectronics
    • 器件描述 1 Mbit serial I<sup>2</sup>C bus EEPROM
    • 参考价格 $1.51
    • 风险等级
    • ECAD模型

      ECAD模型

      下载ECAD模型
    • 数据手册
    • 查看更多信息

相关资讯

  1. 1.
  2. 2.
  3. 3.
  4. 4.
  5. 5.
  6. 6.
  7. 7.
  8. 8.
  9. 9.
  10. 10.
  11. 11.
  12. 12.
  13. 13.
  14. 14.
  15. 15.
  16. 16.
  17. 17.
  18. 18.
  19. 19.
  20. 20.
查看全部20条内容