nrf52840 GPIOTE 高低精度设置问题

nrf52840 总共有8个GPIOTE通道,另外还有一个port事件,PORT 事件是多个引脚通过 GPIO DETECT 信号产生的事件,DETECT 信号的上升沿产生 PORT 事件(DETECT 信号是芯片 内部处理的逻辑,并不表示引脚只能在上升沿时触发 PORT 事件,引脚可以配置为上升沿、 下降沿或电平变化产生 PORT 事件);

芯片总共48个引脚共享这一个port事件,所以48个IO都可以触发port事件,在精度要求不高的时候,全部使用port事件也就是低精度模式是没有什么问题的;

8个GPIOTE通道,每个通道都可以分配给一个引脚,分配的引脚可 以配置为任务模式或事件模式。需要注意的是:不能将某个引脚同时分配给多个 GPIOTE 通道,否则会导致无法预料的错误。

如果设置GPIOTE为输出时,没有高低精度的概念,每设置一个引脚就会占用一个GPIOTE通道;

当设置为输入模式时,需要设置高低精度,如果设置为低精度,自动使用port的感知功能,设置为高精度才会占用一个GPIOTE通道;

这里的高低精度到底什么区别呢,其实就是启不启用高频时钟,当你的输入信号都在同一时刻到达时,建议使用高精度模式,因为低精度模式,某一时刻只能检测到一个活动的引脚,这一时刻有多长呢,根据低频时钟的猜测,大概就是30us,如果你检测的是外部来的中断信号,且同时会有很多个中断信号一起来时,还是要使用高精度。

我这里的例子就是,外部有8个接收天线,同时产生收到信号的中断信号,我这边需要去检测所有的中断,如果使用低精度模式,我最多只检测到5个中断信号,切换为高精度模式,能够同时检测到所有信号,但是这样一次就将所有通道全用了……

posted @ 2023-02-16 10:29  毛豆*_*  阅读(119)  评论(0编辑  收藏  举报