赞
踩
免责说明: 本人才疏学浅,翻译不保证正确,仅供参考
通用输入/输出(GPIO)被指定到一个端口,最多具有32个I/O(取决于封装),从而可以通过一个端口访问和控制多达32个引脚。 每个GPIO均可单独访问。
GPIO具有以下用户可配置的功能:
GPIO端口外设最多可实现32个引脚,即PIN0至PIN31。这些引脚中的每一个都可以用PIN_CNF[n]寄存器单独配置(n = 0…31)。可以通过这些寄存器配置以下参数:
PIN_CNF寄存器为保留寄存器。有关保留寄存器的更多信息,请参见第78页的电源—电源。
可以通过PIN_CNF [n]寄存器中的SENSE字段对引脚进行单独配置,以检测其输入的高电平或低电平。
当在任何这样配置的引脚上检测到正确的电平时,检测机制会将DETECT信号设置为高电平。每个引脚都有一个单独的DETECT信号,DETECTMODE寄存器定义的默认行为是,来自GPIO端口所有引脚的DETECT信号被组合成一个公共的DETECT信号,该信号在整个系统中路由,然后可以由其他外围设备使用。看图21.该机制在ON和OFF模式下均起作用。
GPIO端口包含32个单独的引脚,其中PIN0更详细地用作参考。插图左侧的所有信号都被系统中的其他外围设备使用,因此,CPU无法直接使用。
在启用前,请确保引脚处于无法触发检测机制的电平。启用检测机制后,如果满足PIN_CNF寄存器中配置的检测条件,检测将立即变高。如果在启用检测机制之前,DETECT信号为低电平,则将触发PORT事件。
有关如何使用DETECT信号的更多信息,请参见以下外围设备:
当引脚的PINx.DETECT信号变为高电平时,将在LATCH寄存器中设置一个标志,例如 当PIN0.DETECT信号变为高电平时,LATCH寄存器中的位0将被设置为’1’
仅当CPU通过将1写入要清除的位来显式清除LATCH寄存器时,即PINx.DETECT信号设置为低,才不会影响LATCH寄存器。
如果在关联的PINx.DETECT信号为高电平时,CPU对LATCH寄存器中的某位执行清除操作,则不会清除LATCH寄存器中的该位。
当LATCH寄存器中的一个或多个位为1时,LDETECT信号将被设置为高电平。 当LATCH寄存器中的所有位成功清零时,LDETECT信号将被设置为低电平。
如果在CPU对LATCH寄存器执行清除操作后,如果LATCH寄存器中的一个或多个位为1,则会在LDETECT信号上产生一个上升沿,如图22所示:第113页的DETECT信号行为
重要提示: CPU可以随时读取LATCH寄存器,以检查一个或多个GPIO引脚上是否满足SENSE条件,即使在CPU查询LATCH寄存器时不再满足该条件。 即使未将LDETECT信号用作DETECT信号,此机制也将起作用。
默认情况下,LDETECT信号未连接到GPIO端口的DETECT信号,但可以通过DETECTMODE寄存器从GPIO端口更改GPIO端口的DETECT信号的行为。可以将上述默认行为直接从LDETECT信号获取,请参见第121页上的图21:GPIO端口和GPIO引脚详细信息。第122页上的图22:DETECT信号行为说明了这两种选择的DETECT信号行为。
当不将GPIO引脚的输入缓冲器用作输入时,可以将其断开连接,以节省功耗,请参见第112页上的图21:GPIO端口和GPIO引脚详细信息。必须连接输入,以便在IN寄存器中获得有效的输入值,并使检测机制能够访问该引脚。
系统中的其他外围设备可以将自身连接至GPIO引脚,并覆盖其输出值和配置,或者读取其模拟或数字输入值,请参阅第21页上的图21:GPIO端口和GPIO引脚详细信息。
选定的引脚还支持模拟输入信号,请参见第112页上的图21:GPIO端口和GPIO引脚详细信息。模拟引脚的分配可以在第113页的引脚分配中找到。
重要提示 当引脚配置为数字输入时,在nRF52832设计中要注意的是,当输入电压介于VIL和VIH之间时,要最大程度地减小电流消耗。 但是,优良作法是确保外部电路长时间不将其引脚驱动至VIL和VIH之间的电平。
射频性能参数(例如,灵敏度)可能会受到高频数字I / O的影响,而高频数字I / O的吸收/源电流较大,靠近无线电电源和天线引脚。
有关建议的使用指南,请参阅第13页的引脚分配,以最大程度地提高应用中的无线电性能。
可以通过GPIOTE使用任务和事件的方法来访问GPIO。每个GPIOTE通道可以分配给一个引脚。
GPIOTE模块使GPIO可以在引脚状态变化时生成事件,这些事件可用于通过PPI系统执行任务。也可以使用PPI系统驱动GPIO以更改系统事件的状态。在系统开启或系统关闭时,可以通过低功率检测引脚状态变化。
每个GPIOTE通道中最多可以使用三个任务来执行对引脚的写操作。固定有两项任务(SET和CLR),并且一项任务(OUT)可配置为执行以下操作:
可以从以下输入条件之一在每个GPIOTE通道中生成一个事件:
GPIOTE模块具有许多任务和事件,可以将其配置为在单个GPIO引脚上运行。
任务(SET [n],CLR [n]和OUT [n])可用于写入各个引脚,事件(IN [n])可根据各个引脚输入发生的变化生成。
SET任务会将CONFIG [n] .PSEL中选择的引脚设置为高电平。
CLR任务会将引脚设置为低电平。
OUT任务对引脚的影响可在CONFIG [n] .POLARITY中进行配置,并且可以将引脚设置为高电平,将其设置为低电平或进行切换。
使用CONFIG [n]寄存器配置任务和事件。 每组SET,CLR和OUT [n]任务以及IN [n]事件都有一个与之关联的CONFIG [n]寄存器。
只要将SET [n],CLR [n]和OUT [n]任务或IN [n]事件配置为控制引脚n,该引脚的输出值将仅由GPIOTE模块更新。因此,只要该引脚由GPIOTE控制,该引脚在GPIO中指定的输出值就会被忽略。尝试将一个引脚写为普通GPIO引脚将无效。当GPIOTE与引脚断开连接时,请参见CONFIG [n]寄存器中的MODE字段,相关的引脚将获得GPIO模块中指定的输出和配置值。
当在一个通道中同时(即在同一时钟周期内)触发冲突任务时,任务的优先级将如第157页上的表32:任务优先级中所述。
设置CONFIG [n]寄存器时,MODE = Disabled与MODE = Task和POLARITY = None效果不同。在后一种情况下,根据上表中所述的优先级,与OUT完全同时发生的CLR或SET任务将最终在引脚上保持不变。
当将GPIOTE通道配置为作为任务在引脚上进行操作时,该引脚的初始值将在CONFIG [n]的OUTINIT字段中进行配置。
PORT是一个事件,可以使用GPIO DETECT信号从多个输入引脚生成。该事件将在DETECT信号的上升沿产生。有关DETECT信号的更多信息,请参见GPIO —通用输入/输出在第111页。
当DETECT处于高电平时将系统置于“空闲”状态下不会导致DETECT再次唤醒系统。在进入睡眠状态之前,请确保清除所有“检测”源。如果将LATCH寄存器用作源,如果清除了全部或部分寄存器后LATCH中的任何位仍然为高(例如,由于PINx.DETECT信号之一仍为高),则将在 检测,请参阅第111页的引脚配置。
尝试在DETECT为高电平时将系统置于系统关闭状态将导致系统关闭复位唤醒。
尽管外围设备本身似乎是空闲的,但始终启用此功能,也就是说,无需请求时钟或其他耗电的基础设施即可保持此功能。因此,在所有外围设备和CPU空闲的情况下,可以使用此功能将CPU从WFI或WFE类型的睡眠状态唤醒,即系统打开模式下的最低功耗。
为了防止在配置源时来自PORT事件的虚假中断,用户应首先禁用PORT事件上的中断(通过INTENCLR.PORT),然后配置源(PIN_CNF [n] .SENSE),清除配置期间可能发生的任何潜在事件(将1写入EVENTS_PORT),最后使能中断(通过INTENSET.PORT)。
每个GPIOTE通道通过CONFIG.PSEL字段与一个物理GPIO引脚关联。在CONFIG.MODE中选择事件模式时,由CONFIG.PSEL指定的引脚将配置为输入,覆盖GPIO中的DIR设置。同样,当在CONFIG.MODE中选择任务模式时,由CONFIG.PSEL指定的引脚将被配置为覆盖GPIO中DIR设置和OUT值的输出。在CONFIG.MODE中选择Disabled时,CONFIG.PSEL指定的引脚将使用GPIO中PIN [n] .CNF寄存器的配置。
只能将一个GPIOTE通道分配给一个物理引脚。 否则可能会导致无法预测的行为。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。