0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

单片机

单片机如何测试IO口的极限翻转速度

最近在玩新唐的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;

......

      }

}

提问者:hjhdf 地点:- 浏览次数:10055 提问时间:10-22 11:01
我有更好的答案
提 交
2条回答
gsdafs 03-29 03:57
真要知道极限,先使用最高频的本振,一般应该还能超频至少20%。然后用汇编编程,用“复制”、“粘贴”法,将整个存储器容量都填充成置1、置0的直接端口操作,最后一条直接跳转到起始地址即可。这才是极限。
uyuy77 04-04 04:16
恩  配置好频率  主函数中进行IO的高低切换   然后用示波器测输出引脚的频率  看看能到多少  
这应该就是他的最大输出频率
撰写答案
提 交
1 / 3
1 / 3
相关单片机
具有音调控制的单片机立体声前置放大器
用于单片机与电子装置中的开关电源
单片机软硬件复位的条件都有啥
电动机的单片机控制
单片机应用系统开发实例导航