NXP KL系列的MCU是Cortex-M0+内核,经常有人不清楚M0+和M0内核有什么区别,总体来说M0+内核相对M0内核除了能效比提高了30%,还有一个比较有特色的功能就是M0+内核增加了单周期快速GPIO功能。至于为什么叫单周期GPIO,下面且听我慢慢道来。
我们通常使用的GPIO一般来说都是挂载到内部总线上的(一般是AHB Bus),内核操作IO一般都是通过这个总线去读写控制的,而总线时钟往往都是小于内核时钟的,且总线也都是被很多外设共同占用的,由此带来的一个现象是往往我们的芯片主频很高(内核时钟),但是外部IO操作却跟不上,导致一些功能满足不了,比如快速刷屏(无拖影)或者一些时序模拟,M0+内核增加的单周期GPIO也叫RGPIO(Rapid GPIO)就可以解决这个问题。如上图所示,RGPIO是直接挂载到内核总线上的,对其读写都是直接通过内核专用总线进行操作的,所以操作RGPIO的速度自然就比普通GPIO快啦。单周期GPIO的优势很大,且使用方法也是非常简单的。NXP KL系列MCU将RGPIO命名为FGPIO(Fast GPIO),同时保留了传统的GPIO模块。熟悉NXP Kinetis系列MCU的工程师对GPIO的使用一定是轻车熟路了,因为FGPIO的使用方法与普通GPIO的一样,两者寄存器的数量和对应功能都是一样的,唯一不同的就是寄存器名称不一样,FGPIO的每个寄存器都比普通GPIO的寄存器多一个F,但是操作的都是相同的IO管脚。例如将PTA4引脚电平置高,普通GPIO的操作方法是:GPIOA->PSOR |= 1 << 4,而FGPIO的操作方法是:FGPIO->PSOR |= 1 << 4,引脚其它的功能配置操作也是一样的。下面附上普通GPIO和FGPIO引脚翻转测速的截图,其中系统时钟配置为48MHz,总线时钟配置为24MHz。注:图中波形不为标准方波是因为GPIO和FGPIO内部开关器件延迟导致,高频信号经过低频电路时出现失真,实际使用时应根据需求合理设置输出频率。从图中可以清晰的看出,极限情况下,普通GPIO引脚的速度是16MHz,而FGPIO引脚的速度达到可怖的48MHz,这么高的速度我就问,还有谁!!!。怎么样,FGPIO是不是简单实用又高效啊,那还等什么,赶紧来体验一下吧。