最近在玩新唐的M451
开发板,遇到要测试IO管脚的最大翻转速度,经过一番研究终于测出来了,在这里做一个总结,希望对遇到同样问题的朋友,有所帮助。
新唐的MCU,IO口的翻转速度理论上的最大值是50MHz,但是理论与现实往往是有差距的,因此想要知道一款
单片机IO口的真正翻转速度,就需要自己去真实的测试。
测试方法:在程序中配置一个IO口为推挽输出模式,写一个while(1){} 循环,循环里面不停的将IO口拉低,拉高,拉低,拉高......然后用示波器去测试这个管脚的波形,从示波器上读出那个最高的频率是多少。
注意事项: 1.对于IO口的输出波形,正常情况下应该是方波。
2.写测试程序时,也尽可能的简单,不要有其他的干扰,只需要配置系统时钟,定义IO口,然后就是while循环了。
3.在IO口翻转速率较低的时候,观察波形,是正常的方波,随着翻转速度的不断加大,波形有可能会失真,而不再是一个方波了。在波形有失真时去观察这时候的频率的最大值,一般就是IO口的最大翻转速率。
4.在while循环中的拉低,拉高尽量写的多点,这样就更接近真实值。因为对循环条件的判断上也是要占用时间的
下面是具体的代码,代码基于新唐M451开发板
int main(void)
{
SYS_Init();
GPIO_SetMode(PC, BIT5, GPIO_MODE_OUTPUT);
while(1)
{
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
PC5 = 0;
PC5 = 1;
......
}
}