NXP RT1052的IO配置

IO 的PAD配置

当输出缓冲区使能时,引脚被配置为输出模式。在输出缓冲区中,又包含了如下的属性配置:

  • DSE 驱动能力

DSE 可以调整芯片内部与引脚串联电阻 R0 的大小,从而改变引脚的驱动能力。例如, R0 的初始值为 260 欧姆,在 3.3V 电压下其电流驱动能力为 12.69mA,通过 DSE 可以把 R0 的值配置为原值的 1/2、 1/3…1/7 等。

  • SRE 压摆率配置

压摆率是指电压转换速率,可理解为电压由波谷升到波峰的时间。增大压摆率可减少输出电压的上升时间。 RT1052 的引脚通过 SRE 支持低速和高速压摆率这两种配置。压摆率是大信号特性,下面的带宽是小信号特性。

  • SPEED 带宽配置

通过 SPEED 可以设置 IO 的带宽,分别可设置为 50MHz、 100MHz 以及 200MHz。带宽的意思是能通过这个 IO 口最高的信号频率,通俗点讲就是方波不失真,如果超过这个频率方波就变正弦波。但是这个带宽要区别于 IO 的翻转速率, IO 的翻转速率的信号来自于 GPIO 这个外设,而 IO 的带宽只是限制了 IO 口引脚的物理特性, IO 口的信号可以来自于内部定时器输出的 PWM 信号,也可以来自于GPIO 翻转输出的信号,两者相比之下, PWM 信号的频率是远远高于 GPIO 翻转输出的信号频率。况且 1052 没有高速 GPIO, GPIO 的翻转率约为 10M, 1060 系列则有高速 GPIO, GPIO 翻转速率达到了逆天的 150M。 但要使用 1060 的快速GPIO,需要改用 GPIO 编号。

  • ODE 开漏输出配置

通过 ODE 可以设置引脚是否工作在开漏输出模式。在该模式时引脚可以输出高阻态和低电平,输出高阻态时可由外部上拉电阻拉至高电平。开漏输出模式常用在一些通讯总线中,如 I2C。

当输入缓冲区使能时,引脚被配置为输入模式。在输入缓冲区中,又包含了如下的属性配置

  • HYS 滞后使能

RT1052 的输入检测可以使用普通的 CMOS 检测或施密特触发器模式(滞后模式)。施密特触发器具有滞后效应,对正向和负向变化的输入信号有不同的阈值电压,常被用于电子开关、波形变换等场合,如检测按键时,使用施密特模式即可起到消抖的功能。

Pull/Keeper 上下拉、保持器引脚的控制逻辑中还包含了上下拉、保持器的功能。芯片内部的上拉和下拉电阻可以将不确定的信号钳位在高、低电平,或小幅提高的电流输出能力,上拉提供输出电流,下拉提供输入电流。注意这些上下拉配置只是弱拉,对于类似 I2C 之类的总线,还是必须使用外部上拉电阻。 RT1052 芯片的电源模块中包含转换器,当转换器停止工作时,保持器会保持输入输出电压。上下拉、保持器可以通过如下属性配置:

  • PUS 上下拉配置

PUS 可配置项可选为 100K 欧下拉以及 22K 欧、 47K 欧及 100K 欧上拉。

  • PUE 上下拉、保持器选择

上下拉功能和保持器功能是二选一的,可以通过 PUE 来选择。

  • PKE 上下拉、保持器配置

上下拉功能和保持器还通过 PKE 来控制是否使能。

注意,当引脚被配置为输出模式时,不管上下拉、保持器是什么配置,它们都会被关闭。

最后:

1、配置复用模式

/* 设置 MUX 寄存器为 0x05,表示把引脚用于普通 GPIO */

SW_MUX_CTL_PAD_GPIO_AD_B0_09 = (unsigned int)0x05

2、设置PAD 属性配置

/* 设置 PAD 寄存器控制引脚的属性 */IOMUXC_PAD_GPIO_AD_B0_09 = (unsigned int)0x000B0;

/* 属性配置说明:十六进制数 0x000B0 = 二进制数 0b0000 0000 0000 1011 0000*/

/* bit0: SRE: 0b0 压摆率: 慢压摆率

bit1~bit2: -: 0b00 寄存器保留项

bit3~bit5: DSE: 0b110 驱动强度: R0/6 (仅作为输出时有效 )

bit6~bit7: SPEED:0b10 带宽 : medium(100MHz)

bit8~bit10: -: 0b000 寄存器保留项

bit11: ODE: 0b0 开漏配置: 关闭 (开漏高阻态常用于总线配置,如 I2C )

bit12: PKE: 0b0 拉/保持器配置: 关闭

bit13: PUE: 0b0 拉/保持器选择: 关闭了上下拉及保持器,任意值无效

bit14~bit15: PUS: 0b00 上拉/下拉选择: 关闭了上下拉及保持器,任意值无效

bit16: HYS: 0b0 滞回器配置: 关闭 (仅输入时有效,施密特触发器,使能后可以过滤输入噪声)

bit17~bit31: -: 0b0 寄存器保留项 */

在 Pad Settings 配置中,则用 IOMUXC_SetPinConfig();库函数来选择配置的;它的参数配置以及原型:

IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_09_GPIO1_IO09,0x10B0U);
              /* GPIO_AD_B0_09 PAD functional properties : */
              /* Slew Rate Field: Slow Slew Rate
                 Drive Strength Field: R0/6
                 Speed Field: medium(100MHz)
                 Open Drain Enable Field: Open Drain Disabled
                 Pull / Keep Enable Field: Pull/Keeper Enabled
                 Pull / Keep Select Field: Keeper
                 Pull Up / Down Config. Field: 100K Ohm Pull Down
                 Hyst. Enable Field: Hysteresis Disabled */

这里的 0x10B0U 就是设置为 转化速率慢,驱动强度为 R0/6,速度 100MHz,关闭开漏,开启拉 /保持器,选择为保持,100K下拉,关闭滞回。又或者可以像以下那样进行手动配置:

// 转换速率       0 慢           1 快
// 驱动强度       0 无           1 R0        2 R0/2      3 R0/3      4 R0/4    5 R0/5    6 R0/6    7 R0/7
// 输出速度       0 50MHz       1 100MHz    2 100MHz    3 200MHz
// 开漏输出       0 关闭          1 开启
// 拉/保持器      0 关闭          1 开启
// 拉/保持器设置  0 保持            1 拉
// 上下拉电阻     0 100K下拉       1 47K上拉 2 100K上拉    3 22K上拉
// 滞回器设置     0 关闭           1 开启

​    //led.c中led的IO引脚配置如下
    IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_03_GPIO1_IO03,0);    //GPIO_AD_B0_03配置为ALT5,即GPIO1_3
    IOMUXC_SetPinMux(IOMUXC_GPIO_SD_B1_03_GPIO3_IO03,0);    //GPIO_SD_B1_03配置为ALT5,即GPIO3_3
    
    //配置IO引脚GPIO_AD_B0_03和GPIO_SD_B1_03的功能
    //低转换速度,驱动能力为R0/6,速度为100Mhz,关闭开路功能,使能pull/keepr
    //选择keeper功能,下拉100K Ohm,关闭Hyst
    IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_03_GPIO1_IO03,0x10B0);
    IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_03_GPIO3_IO03,0x10B0);

    IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_09_GPIO1_IO09, 
                IOMUXC_SW_PAD_CTL_PAD_SRE(0)     // 转换速率慢
               |IOMUXC_SW_PAD_CTL_PAD_DSE(6)    // 驱动强度 R0/6
               |IOMUXC_SW_PAD_CTL_PAD_SPEED(2)  // 速度 100MHz
               |IOMUXC_SW_PAD_CTL_PAD_ODE(0)    // 关闭开漏
               |IOMUXC_SW_PAD_CTL_PAD_PKE(1)    // 拉/保持器开启
               |IOMUXC_SW_PAD_CTL_PAD_PUE(0)    // 选择为保持
               |IOMUXC_SW_PAD_CTL_PAD_PUS(0)    // 100K下拉
               |IOMUXC_SW_PAD_CTL_PAD_HYS(0));  // 关闭滞回

对应的配置位字段可以看上面的 Pad Settings 配置中的图。因为它的函数原型如下:

/*!
* @brief Sets the IOMUXC pin configuration.
* @note The previous five parameters can be filled with the pin function ID macros.
*
* @param muxRegister  The pin mux register.
* @param muxMode      The pin mux mode.
* @param inputRegister The select input register.
* @param inputDaisy   The input daisy.
* @param configRegister  The config register.
* @param configValue   The pin config value.
*/
staticinlinevoidIOMUXC_SetPinConfig(uint32_tmuxRegister,
                                       uint32_tmuxMode,
                                       uint32_tinputRegister,
                                       uint32_tinputDaisy,
                                       uint32_tconfigRegister,
                                       uint32_tconfigValue)
{
    if (configRegister)
    {
        *((volatileuint32_t*)configRegister) =configValue;
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值