热度 4
2021-3-22 12:14
8050 次阅读|
0 个评论
单片机集成FLASH作为程序存储器,程序在FLASH中运行,一般是取指,译码执行这样。 FLASH的速度是有限的,有时并不能与核心频率一样,按手册要求, 当主频为24MHz或以下时,可以将LATENCY设置为0,48MHz时设置为 1,主频72MHz 需要插入2个等待,将速度降到72/3=24Mhz否则有可能取指不稳定。 意思就是不管HCLK有多高,取指令的速度最高为24Mhz。如果程序中单周期指令占绝大多数,简单核心中没有cache,即使使用流水线,实际指令运行速度也就是24M。 如果指令是多周期的,一次取指要多个时钟周期才能执行完成,这部分指令运行速度会按HCLK提高。 比如32位乘法,M0核心没有硬件乘法器,也没有硬件除法器,做乘除法时,需要32个时钟周期才能完成。而M0+核心号称有单周期硬件乘除法,这样乘除法的运算速度显然会比M0快上很多。 程序运行速度受FLASH速度影响,高HCLK会时候会有用呢?比如需要高精度的PWM,HCLK作为TIMER的时钟。PWM的分辨率就可以做得高。对于多周期才能完成的指令,更高的HCLK还是可以提高运行速度的。