This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于28335GPIO口翻转速率的问题

想用IO口输出时钟频率,想知道IO口最高翻转频率是多少,我使用定时器Timer0通过中断实现IO口的翻转,使用的是TOGGLE寄存器,为什么最高频率只能达到1.923MHz,请问影响这个频率的上限因素有哪些,还有如果通过中断实现输出时钟频率最高可以到多少MHz

以下是中断中的代码

interrupt void cpu_timer0_isr()
{
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;
CpuTimer0Regs.TCR.bit.TIF=1;
CpuTimer0Regs.TCR.bit.TRB=1;
GpioDataRegs.GPBTOGGLE.bit.GPIO53 = 1;


}

  • 这样测试受限于定时器,不能这么干,你直接使用寄存器进行IO的翻转,放在while中,然后用逻辑分析仪或者示波器抓波形就好了。

  • 你好 谢谢你的回复。

    1、又重新测试了,使用while循环能达到10.7MHz,那么这就是它的最高速率吗?

    2、因为板子上一个外设的CLKIN引脚接在了28335的GPIO53上,要给这个外设提供时钟的话除了使用IO口的翻转还有其他方法吗,需要尽可能高的时钟频率,比如25.5MHz。

  • 找相关手册    看看IO口最高的翻转速度是多少      普通IO最高也就几兆

    要想速率更高   建议配置为PWM输出的功能口

    这样也不占用CPU的资源

  • 1.还是可以速度更高的,因为STM32主频72M,IO翻转速度都可以达到12M的,根据手册上的说法,最大是25M。

    2.针对你的情况,我觉得单独用专门的时钟芯片好点。手册上说,最大可以达到25M,但是IO翻转要想达到这个稳定输出是比较难得。或者你可以试试XCLKOUT这个引脚,可以输出一半或者四分之一SYSCLKOUT的。

  • 十分感谢你的解答。

    嗯,就是这样很纠结,设计板子时外设的时钟引脚接在了28335的GPIO53上,该引脚复用了eQEP的索引端口,好像只能使用IO口翻转了。