Monster920728 发表于 2018-1-23 15:14:23

STM8S003如何提高IO翻转速度

本帖最后由 Inc_brza 于 2018-1-23 16:51 编辑


      现在项目里用的是STM8S003,PC5接的芯片MCLKIN,MCLKIN范围要达到500k-5M,现在程序达不到,请各位大神支支招

hxydj 发表于 2018-1-23 15:19:09

不清楚你说的程序达不到是什么意思?是PC5口要捕获500K--5M的信号,还是程序速度太慢,我自己测试PWM输出时,频率达到1M输出波形就会失真,这和单片机的晶振频率还有程序执行流程有关,可以接个示波器看看波形。

Inc_brza 发表于 2018-1-23 16:53:21

楼主,替你该了一下标题,请注意以后问问题先自己总结一下问题~
stm8在8M的时钟下,IO反转速度我测过最高能达到3M多,窍门在于,取消用库函数去
操作IO,用寄存器的方式直接反转IO即可!

toofree 发表于 2018-1-23 17:29:18

从你的意思来看,PC5输出到外部芯片的MCLKIN输入脚,你是想提高PC5输出的翻转速度。
如楼上所述,要想提高翻转速度,必须直接寄存器操作。并且尽可能减少循环控制,即减小使用while的机会。
不要舍不得占用点ROM资源。PC5 置0,置1,置0,置1,……置0,置1,置0,置1,若干次。
while(1)
{
    PC5 置0;
    PC5 置1;
    PC5 置0;
    PC5 置1;
    PC5 置0;
    PC5 置1;
    ……
    …… N多次操作
    ……
    PC5 置0;
    PC5 置1;
}

wenyangzeng 发表于 2018-1-23 17:42:28

至少你的系统时钟要配置到STM8S003的最高频率16MHZ.

黑夜之狼 发表于 2018-1-24 09:41:35

要速度就得用寄存器操作,另外,LZ现在的系统时钟是多少M?

MrJiu 发表于 2018-2-1 11:35:50

这个问题太笼统了。。。是要捕捉,还是PWM,还是自己程序的IO口翻转,首先高速翻转,IO的设置就有要求。。。其次,肯定使用寄存器直接操作了。。。还有就是需要计算好时间,比如捕捉,捕捉超过1M的信号频率估计很难,因为晶振最快运行速度就是16M,捕捉需要出栈,进栈也需要耗时,所以捕捉可行的应该在100K的频率为合适,至于PWM,好像可以达到很高,可以根据计算来参考!!!

Johnson Cao 发表于 2018-2-8 10:04:09

如果是当CLK用,建议用PWM输出.信号稳定,频率高.用IO操作,信号一致性不行.

robter 发表于 2018-2-11 12:16:15

寄存器操作IO的速度还是很快的,我习惯用
页: [1]
查看完整版本: STM8S003如何提高IO翻转速度