芯源CW32L010GPIO翻转速度到底可以有多快?
芯源的CW32L010 MCU,这颗MCU是Cortex-M0+内核,但是其GPIO没有直接挂在内核上,而是挂在AHB总线上。该MCU最高主频是48Mhz。我们基于CW32L010_StandardPeripheralLib_V1.0.2ExamplesGPIOgpio_blink做了简单修改,该例子默认跑的是4Mhz主频,将其修改为48Mhz
实际测试结果只有8Mhz,这是什么原因呢?我们可以看到低电平时间是2个指令周期,但是高电平时间却是4个指令周期。
这是因为Flash读等待所导致的,当主频大于24Mhz之后,需要插入1个等待周期,所以无法保证每个翻转都能达到2个指令周期。
我们可以再做一个测试,将其主频降低为24Mhz,可以看到此时GPIO翻转速率可以达到6Mhz,这是因为没有flash读等待周期了。
最后再做一个测试,把上述翻转GPIO的代码做一点修改,上述用了BSRR、BRR寄存器来实现置位和清零,如果使用ODR寄存器会有什么效果呢?
可以看到,翻转速率直接只有4Mhz。
通过汇编代码可以看到,多了一条MOVS指令,该指令需要1个指令周期,所有最高翻转速率为24Mhz/(3+3)=4Mhz。
除了置位/清零寄存器、输出数据寄存器实现GPIO翻转外,有的MCU还有翻转寄存器,比如CW32L010有,MM32G0001和PY32F002B没有,直接用这一个寄存器就可以实现IO翻转,实测这个效果和BSRR/BRR一样。
由此可见,影响MCU GPIO翻转速度的因素有很多,包括系统主频、是否支持单周期翻转、Flash读等待、翻转语句写法、编译器优化等级等多个因素。
芯源的CW32L010 MCU,这颗MCU是Cortex-M0+内核,但是其GPIO没有直接挂在内核上,而是挂在AHB总线上。该MCU最高主频是48Mhz速率非常快的 GPIO的翻转速率其实还是比较快的满足大部分场景需求 在实际测试中,CW32L010的GPIO翻转速度可能低于理论值。 芯源CW32L010的GPIO翻转速度受多个因素影响,其实际翻转速度可能低于理论值。在具体应用中,需要根据实际需求和条件来选择合适的配置和优化方式,以实现最佳的GPIO翻转性能。 一般IO反转速率就够输出输入使用了 芯源的CW32L010 MCU性能非常不错 翻转速度肯定是越快越好
页:
[1]