[STM32F1] stm32f103 IO 输出的速度有多快?

[复制链接]
8552|44
 楼主| andiwxz 发表于 2013-11-25 14:01 | 显示全部楼层 |阅读模式
各位:
       我有个外围的器件是个串行接口。有片选、时钟、数据三根线构成,器件的时钟最快可以允许是25MHZ。我使用IO自己做个接口的函数,调用函数库 GPIO_ResetBits、GPIO_SetBits来控制IO输出,IO的初始化速度设置GPIO_Speed_50MHz。可是我实际测试,发现IO输出的速度最快只能到2MHZ,并且波形还不好。如果不放慢速度,时钟线输出的几乎是三角波。请问有人知道为什么吗?我怎么做才能达到25M的输出频率并且波形还好吗?
sonicll 发表于 2013-11-25 14:06 | 显示全部楼层
以前好像有帖子说IO最快是18MHz,不要用GPIO_ResetBits、GPIO_SetBits这些库函数,速度会慢,直接操作寄存器速度能快
tianli1980 发表于 2013-11-25 15:59 | 显示全部楼层
这个一般用库,对速度敏感的话用寄存器,不过我也是常常在纠结这个问题的。
airwill 发表于 2013-11-25 18:49 | 显示全部楼层
GPIO_Speed_50MHz。这并不能直接影响波形速度
更重要的是, 要用最快的指令来完成 IO 口输出.
可以说: 这么高的频率, 寄存器直接控制是唯一能达到的手段了.
关于: 时钟线输出的几乎是三角波, 那是负责电容太大的缘故, 解决办法是
1.通过布线等手段减少分布电容, 2. 采用缓冲驱动器增加驱动能力.
liang118038l 发表于 2021-6-19 17:17 来自手机 | 显示全部楼层
sonicll 发表于 2013-11-25 14:06
以前好像有帖子说IO最快是18MHz,不要用GPIO_ResetBits、GPIO_SetBits这些库函数,速度会慢,直接操作寄存 ...

问题是有人测过SPⅠ1能达到36MHz的难道io翻转的速度还会不一样的??
会飞的大葱 发表于 2021-6-22 15:49 | 显示全部楼层
IO配置的 Speed,影响的是上升沿的斜率

想通过IO输出高频率有以下几种方式
1、循环写GPIO的输出寄存器
2、通过TIM 输出PWM
3、通过DMA搬运数据到GPIO输出寄存器(可以M2M,也可以用TIM触发)
注孤终 发表于 2021-6-28 13:53 | 显示全部楼层
一般使用50MHz
b838899 发表于 2021-6-28 14:08 | 显示全部楼层

要看是不是低功耗产品,低功耗产品越慢越好。。
黑心单片机 发表于 2021-6-30 10:16 | 显示全部楼层
库函数的执行效率太低,我在需要高速应用都是直接用寄存器,速度会快几倍
tail066 发表于 2021-6-30 17:09 | 显示全部楼层
时钟线上带电容么?
SantaBunny 发表于 2023-3-7 20:43 | 显示全部楼层
试下把IO引脚并在一起,对应引脚初始化成对应外设,并在一起的另外没用到引脚初始化成高阻输入。
yufe 发表于 2023-7-13 23:42 | 显示全部楼层
以前好像有帖子说IO最快是18MHz
llia 发表于 2023-7-13 23:43 | 显示全部楼层
不要用GPIO_ResetBits、GPIO_SetBits这些库函数,速度会慢,直接操作寄存器速度能快
wangpe 发表于 2023-7-13 23:45 | 显示全部楼层
这个一般用库,对速度敏感的话用寄存器,不过我也是常常在纠结这个问题的。
langgq 发表于 2023-7-13 23:46 | 显示全部楼层
GPIO_Speed_50MHz。这并不能直接影响波形速度
wangzsa 发表于 2023-7-13 23:47 | 显示全部楼层
更重要的是, 要用最快的指令来完成 IO 口输出.
zhuww 发表于 2023-7-13 23:48 | 显示全部楼层
这么高的频率, 寄存器直接控制是唯一能达到的手段了.
zhanglli 发表于 2023-7-13 23:50 | 显示全部楼层
时钟线输出的几乎是三角波, 那是负责电容太大的缘故
zwll 发表于 2023-7-18 22:58 | 显示全部楼层
通过布线等手段减少分布电容
chuxh 发表于 2023-7-18 23:00 | 显示全部楼层
采用缓冲驱动器增加驱动能力.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

166

主题

258

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部