• RT1052之IOMUXC



    1、简介
    IOMUXC的核心功能就是实现IO口复用,简单来说就是因为RT1052对外的IO口的数量是有限的,但是RT1052内部的外设需要的IO口却可能远超实际RT1052所拥有的IO口,因此就需要IOMUXC来实现IO口的分时复用。

    2、实现原理
    以上是IOMUXC的框图,最右边的“IO Pad Cells”直接和“IOMUX Cells”连接,“IOMUX Cells”又和下方的“module”连接。同时“IOMUX Cells”受上图左方的“IOMUXC”的控制。接来下我们来一一看看这些奇怪名词的含义及其实际作用。

    1、IO Pad Cells
    “IO Pad Cells”,IO口单元,其实就是对应着RT1052的实际上的IO引脚,一个IO引脚对应一个IO Pad Cells。

    2、IOMUX Cells
    “IOMUX Cells”,IO口复用单元,每一个实际的IO引脚内部都连接着一个“IOMUX Cells”,这个“IOMUX Cells”有点类似单刀多掷开关,可以动态的切换这个IO引脚通向哪里(通向哪个模块(外设))。

    3、Module
    “Module”,模块,其实就是RT1052的内部外设,比如串口外设、GPIO外设等等等等,这些外设的输入输出信号都是通过“IOMUX Cells”这个单刀多掷开关,流入或流出“IO Pad Cells”(IO引脚)。如果串口外设想要发送数据,但是“IOMUX Cells”没有搭建起串口外设和IO口之间的桥梁,那不好意思,串口这个数据没办法发送出去。

    4、IOMUXC
    IOMUXC是用户(内核)能直接控制的地方,前面说的“IOMUX Cells”是由“IOMUXC”来控制,但是“IOMUXC”是由谁控制呢?他是由内核来控制的。因此我们实际写程序的时候直接配置IOMUXC的寄存器就可以配置以下属性:

    IO口分时复用的配置
    IO口电气属性的配置
    最后我们再来看看GPIO章节里面的一张框图,有没有豁然开朗的感觉?

    3、特殊机制
    IOMUXC有两个比较特别的地方。

    1、菊花链
    用过32的朋友都知道,32有的外设管脚是可以重映射的(如下图)。这种灵活的配置方法可以方便PCB的布局。

    通过配置IOMUXC可以实现引脚的灵活分配,方便PCB布局和IO口合理分配。

    2、SION
    SION是“Software Input On”的简写,他是IOMUXC的一部分,使能了这个功能之后,哪怕这个IO口设置为输出模式,各种外设也能在IOMUXC的配合下,读取当前IO口的实际电平。

    比如最简单的点灯:

    当IO口配置成GPIO输出的情况下,对GPIO_DR寄存器操作可以直接控制IO口的输出电平,这个GPIO_DR寄存器的值只是你写进去的,但是IO口的电平真的和你想的一样吗?如果这个时候你不开启SION功能的话,那你是没办法获取IO口的实际电平的,如果开启了的话,可以通过读取GPIO_PSR寄存器,获取IO口的实际电平。

    4、总结
    以下代码可以使能IOMUXC的时钟。

    CLOCK_EnableClock(kCLOCK_Iomuxc); /* iomuxc clock (iomuxc_clk_enable): 0x03u */

    ————————————————
    版权声明:本文为CSDN博主「Leaves~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_44021648/article/details/113872195

  • 相关阅读:
    nexus
    图片水印
    springmvc+mybatis+spring+redis
    web-fragment模块化使用
    jackson的使用
    httpClient
    ftp上传文件
    windows server 2008 R2中建立ftp站点
    保存网络中的文件
    读取excel文件
  • 原文地址:https://www.cnblogs.com/zhugeanran/p/16221743.html
Copyright © 2020-2023  润新知