在MIMXRT1021CAG4B使用中,当系统上电后,发现不同的端口在通电后具有不同的值。例如,现在使用GPIO_EMC_39和唤醒引脚,两者结果是不同的。从GPIO数据手册中,GPIO DATA寄存器的复位值为0x00000000。但对于唤醒引脚,复位后状态后为高电平。
-> GPIO引脚默认为输入功能,而非输出功能。因此,它由上拉和下拉配置决定。对于唤醒PIN,可以检查以下寄存器:
默认情况下,使能了内部100K上拉,因此上电复位后,GPIO口是高电平。针对GPIO_EMC_39 也是一样的,如果添加DCD将配置SDRAM SEMC端口,它将由SEMC配置结果决定。在从QSPI加载应用程序代码之前,如下相关信号被驱动为HIGH,为什么呢?
GPIO_PAD | DEFAULT SIGNAL |
GPIO_EMC_08 | SEMC_DM00 |
GPIO_EMC_29 | SEMC_CS0 |
GPIO_EMC_39 | SEMC_DQS |
问题是,将上述这些信号用作GPIO,并将其用作电机的启用以及打开/关闭阀门的控制。这些信号具有相当强的下拉电阻,因此认为处理器正在积极地将这些信号配置为输出并将其驱动为高电平。为什么这些信号在通电时会短暂地切换到高电平,如何防止这种情况发生吗?
->该问题与DCD配置有关。在RT1020EVK上做了一个快速测试,没有看到这个问题。可以检查C76处的电压以确定GPIO_EMC_39引脚状态。
还有一种应用场景,需要在固件升级后保留输出状态。通常它需要在固件升级后重新启动,但在重新启动期间输出状态将会被重置。如何实现在固件升级后保持输出状态高电平呢?
事实上,GPIO输出状态由代码控制,如果更新固件,然后复位,代码将运行,GPIO状态完全由代码控制。但是在复位期间,可以外接上拉电阻,因为,如果引脚是输入Keeper的,那么它是由外部信号决定的。GPIO_EMC_05和06中的Keeper 电路已启用,在复位期间将输出高电平。但对于GPIO_EMC_04,它将在复位期间用作调试 JTAG_ACT功能,它将输出低电平。
当输出驱动器被禁用时,Keeper功能够保持先前的输出值。
Keeper的内部电阻远高于标准输出驱动器的内部电阻——见上表。此选项对于在逻辑值更改时需要大量能量的应用中节省功耗,但在仅需要保持状态时几乎不需要消耗能量。另一种类型的应用是必须确保引脚在任何情况下都被驱动,即使强度小得多,因此输出引脚不会浮空,并且其电平被定义。
pull / keeper 由PKE、PUE和PUS位控制。pull / keeper 可通过pull / keeper 启用(PKE)位启用。当pull / keeper 启用时,可以选择PUE(上拉启用)位启用器件对应的功能。
I2C / I2S 要求双向通信,如下位在 IOMUX中需要配置:
• 输入 IBE = 0b1
• 输出OBE = 0b1
• 开漏功能ODE = 0b1
• 针对低频信号的配置PKE = 0b1, PUE = 0b1, PUS = 0b11或者外接上拉用于固定的或者高频信号
审核编辑:汤梓红
-
寄存器
+关注
关注
31文章
5336浏览量
120230 -
Data
+关注
关注
0文章
62浏览量
38266 -
引脚
+关注
关注
16文章
1193浏览量
50409 -
GPIO
+关注
关注
16文章
1204浏览量
52051
原文标题:MIMXRT1021CAG4B GPIO口复位值
文章出处:【微信号:嵌入式 MCU,微信公众号:嵌入式 MCU】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论