GPIO与IOMUX 您所在的位置:网站首页 设置pin是干的 GPIO与IOMUX

GPIO与IOMUX

2024-06-02 12:46| 来源: 网络整理| 查看: 265

GPIO与IOMUX 1 GPIO1.1 何为GPIO?1.2 GPIO常用寄存器1.2.1 GPIO direction register (GPIOx_GDIR)1.2.2 GPIO data register (GPIOx_DR)1.2.3 GPIO pad status register (GPIOx_PSR) 1.3 GPIO时钟1.4 GPIO逻辑结构 2 IOMUX2.1 何为IOMUX2.2 IOMUX逻辑图2.2.1 IOMUX和PAD2.2.2 PAD和Module 3 IOMUX设置PAD为GPIO实例3.1 寻找实例和对应的PAD3.1.1 设置SW_MUX_CTL_PAD_GPIO1_IO003.1.2 设置SW_PAD_CTL_PAD_GPIO1_IO003.1.3 设置实例GPIO1全组属性

1 GPIO 1.1 何为GPIO?

GPIO只是一个CPU内提供的一种功能外设,CPU外部的I/O引脚会被赋予一种功能(GPIO、UART、I2C等);该功能由CPU内外设提供,具体是什么功能由IOMUX单元(I/O复用选择器)控制。

GPIO(General Purpose Input/Output)是芯片内的外设功能模块 ,每个GPIO外设连接到了外部的I/O引脚上,和GPIO外设相连的I/O引脚(I/O引脚相较于GPIO更加远离CPU) 起着通用输入输出的功能,所以被称为 GPIO 引脚。 但是,I/O引脚不仅和GPIO外设相连,还可以和芯片内部其它外设相连,比如和UART、IIC、SPI等外设相连作为通信外设的接口引脚,和定时器相连作为PWM输出引脚,等等。

1.2 GPIO常用寄存器

GPIO特性: 通用输入/输出逻辑功能: • 使用数据寄存器进行特定数据输出(GPIO_DR) • 控制信号方向(GPIO_GDIR) • 使能核心通过读取pad寄存器对应的采样输入通讯信号(GPIO_PSR). GPIO interrupt capabilities: • 支持32种中断 • 定义中断沿

1.2.1 GPIO direction register (GPIOx_GDIR)

A GPIO signal can operate as a general-purpose input/output when the IOMUX is set to GPIO mode.

GPIO direction register (GPIO_GDIR)来确定是GPIO是输入还是输出。当为输入模式bit=0,对应输入情况由GPIO_PSR位读取确定。

在这里插入图片描述

1.2.2 GPIO data register (GPIOx_DR)

32位寄存器储存数据,时刻准备加载到output line中。 GPIO模式由IOMUX确定,由GPIO_GDIR确定输入还是输出;DR寄存器数据加载入output中。 • If GDIR[n] is set and IOMUXC input mode is GPIO, then reading DR[n] returns the contents of DR[n]. • If GDIR[n] is cleared and IOMUXC input mode is GPIO, then reading DR[n] returns the corresponding input signal’s value. • If GDIR[n] is set and IOMUXC input mode is not GPIO, then reading DR[n] returns the contents of DR[n]. • If GDIR[n] is cleared and IOMUXC input mode is not GPIO, then reading DR[n] always returns zero. 在这里插入图片描述

1.2.3 GPIO pad status register (GPIOx_PSR)

GPIO_PSR is a read-only register. Each bit stores the value of the corresponding input signal (as configured in the IOMUX). This register is clocked with the ipg_clk_s clock, meaning that the input signal is sampled only when accessing this location. Two wait states are required any time this register is accessed for synchronization.

1.3 GPIO时钟 先查阅手册,找到GPIO的时钟隶属于哪一组; 在这里插入图片描述去到Clock章节寻找对应的clock name:IPG_CLK_S 在这里插入图片描述去查对应的寄存器,以CCM_CCGR0为例:

在这里插入图片描述

1.4 GPIO逻辑结构

在这里插入图片描述

PADx:它代表了芯片上的一个内部引脚。IOMUX复用选择器:芯片的每个PAD通过IOMUXC中的MUX寄存器和PAD寄存器设置,可以支持多种功能(如GPIO、IIC、USART…)。每一个PAD的功能都需要有IOMUXC决定;被设置完功能的PAD就体现为外部IO引脚。Block外设功能控制块:例如具有PWM输出功能的引脚,它需要PWM外设的支持。GPIO外设:GPIO模块是每个PAD都具有的外设,但不一定每一个PAD都会使用。当需要赋予PAD引脚GPIO功能时,就要在通过IOMUX沛公功能后,再配置GPIO外设中的各个寄存器(DR、GDIR、PSR…)。与其它引脚的连接:这里是另一个引脚PAD2,它与PAD1有一根信号线连接,表示部分引脚的输出可以作为另一个引脚的输入。外部IO = 内部PAD + 外设。 2 IOMUX 2.1 何为IOMUX

它是CPU内部的控制器,负责给PAD赋予不同功能,使得PAD在外部展现出不同的功能;而PAD的外部就是IO引脚;因此实现IO复用。

2.2 IOMUX逻辑图 2.2.1 IOMUX和PAD

在这里插入图片描述

一个PAD可以去链接多个模块(module),从而实现PAD输入输出信号的复用功能;这里说明一个PAD可能有几种ALT。当需要链接一个模块并实现功能时,首先需要给PAD赋予功能(SW_MUX_CTL_PAD_x);在赋予功能后(如GPIO后)启动那些功能属性(SW_PAD_CTL_PAD_x)。每一个PIN是PAD在IOMUXC确定后,通过IOMUX Cell链接对应module之后对外展现的引脚。每一个PAD都有很多个外设模块可以链接,每一种外设模块对应PAD的一种ALT。 2.2.2 PAD和Module

在这里插入图片描述

每一个PAD都有一个IOMUIX Cell对应用于控制它;但是并不是每一个PAD会配有自己独立的模块;模块是共用的。PAD的复用是通过IOMUX Cell去分配这个PAD接受/输出数据是经过哪一个模块;PAD复用后(ALT选择后),与模块实例下的某一个端口相连; 3 IOMUX设置PAD为GPIO实例 3.1 寻找实例和对应的PAD

位于手册 Muxing Options: 在这里插入图片描述 在这里插入图片描述 从左到右分别为:实例(功能)、实例端口、PAD、PAD应该被设置为ALTx。 外部信号按模块实例分组的,每个信号的复用选项以及用于将信号路由到所选 PAD 的寄存器。

当你需要PIN(外部引脚)实现一个功能时,这个功能是由模块(CPU内外设)实现的;而PAD负责传输数据;实际信号流动顺序:外部信号(IO引脚)—module—PAD。实际使用中根据需要的功能去找实例和实例端口,再由端口去找可以链接这个模块端口的PAD;并完成对PAD的设置。

以实例GPIO1组下端口IO1为例:Pad为GPIO1_IO01,模式为ALT5。

3.1.1 设置SW_MUX_CTL_PAD_GPIO1_IO00

所有的Pad设置均是如此,先设置SW_MUX_CTL_PAD_xxx。 在这里插入图片描述

在这里插入图片描述 查手册,因此寄存器通过位运算设置低四位为:0101

3.1.2 设置SW_PAD_CTL_PAD_GPIO1_IO00

设置这个Pad的属性,比如驱动能力、是否使用上下拉电阻等。

3.1.3 设置实例GPIO1全组属性

注意:对于单个引脚(IO和Pad)需要设置它的功能(属于哪个module)和引脚属性,但是设置只是针对当前引脚的功能和属性;每一个引脚隶属于一个Instance(本质上是module外设),需要设置整个module(实例组)的属性。

GPIO实例需要设定的属性: 在这里插入图片描述 在这里插入图片描述 GPIOx_GDIR:每一个bit位的0/1表示一个GPIO实例的属性。 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有