大家周末好,我有个外围的器件是个串行接口。有片选、时钟、数据三根线构成,器件的时钟最快可以允许是25MHZ。我使用IO自己做个接口的函数,调用函数库 GPIO_ResetBits、GPIO_SetBits来控制IO输出,IO的初始化速度设置GPIO_Speed_50MHz。可是我实际测试,发现IO输出的速度最快只能到2MHZ,并且波形还不好。如果不放慢速度,时钟线输出的几乎是三角波。请问有人知道为什么吗?我怎么做才能达到25M的输出频率并且波形还好吗?
GPIO_Speed_50MHz。这并不能直接影响波形速度更重要的是, 要用最快的指令来完成 IO 口输出.可以说: 这么高的频率, 寄存器直接控制是唯一能达到的手段了.关于: 时钟线输出的几乎是三角波, 那是负责电容太大的缘故, 解决办法是1.通过布线等手段减少分布电容, 2. 采用缓冲驱动器增加驱动能力.
以前好像有帖子说IO最快是18MHz,不要用GPIO_ResetBits、GPIO_SetBits这些库函数,速度会慢,直接操作寄存器速度能快
这个一般用库,对速度敏感的话用寄存器,不过我也是常常在纠结这个问题的。
要速度快,只能用汇编了!
感谢分享
感谢楼主的分享,很实用了。