打印
[开发资料]

单片机IO配置不同速度有啥区别?

[复制链接]
1985|53
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2023-8-9 17:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是一个初学者不会去了解的问题,但,会使老司机掉坑的问题。
这也是最近在技术交流群看到的一个问题,所以,就出来简单分享一下。
概述
[color=rgba(0, 0, 0, 0.9)]这个问题看起来比较简单,我相信很多人都能说出答案。

但是,很多人都只是停留在表面,没有在项目中经历过,也没有更深入的去了解。很早之前年的单片机可能没有输出速度这个配置选项,但是这后面的单片机基本都有配置速度的选项,下面结合STM32来简单介绍一下。
GPIO输出速度
不管标准外设库,还是STM32CubeMX配置GPIO输出引脚,都会有速度GPIO_InitStruct.Speed这个选项。

类似如下:

GPIO_InitStruct.Pin = GPIO_PIN_5;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
根据不同MCU型号,速度选项,有些有3个,有些有4个。一般定义在xxx_gpio.h文件中。

#define GPIO_Speed_2MHz  GPIO_Speed_Level_1   /*!< I/O output speed: Low 2 MHz  */#define GPIO_Speed_10MHz GPIO_Speed_Level_2   /*!< I/O output speed: Medium 10 MHz */#define GPIO_Speed_50MHz GPIO_Speed_Level_3   /*!< I/O output speed: High 50 MHz */

#define  GPIO_SPEED_FREQ_LOW        (0x00000000u)  /*!< Low speed       */#define  GPIO_SPEED_FREQ_MEDIUM     (0x00000001u)  /*!< Medium speed    */#define  GPIO_SPEED_FREQ_HIGH       (0x00000002u)  /*!< High speed      */#define  GPIO_SPEED_FREQ_VERY_HIGH  (0x00000003u)  /*!< Very high speed */
对于普通输出GPIO,使用STM32CubeMX配置,默认配置低:
当然,如果配置成其他模式,有可能是中,或高。
比如:配置UART、CAN引脚,速度会是高。
提问:你想过为什么会是低、高吗?

测量GPIO输出波形
不知道大家用示波器测量过GPIO输出波形没有,特别是在高速(单位M)的时候。

我以前经常测量MCO引脚输出时钟,测量过的人应该都知道,如果输出速度高于配置速度,会明显看到波形不正常。
波形会出现不完整,幅度低等失真现象。
相信不用我说,有一定常识的人都能理解。
差异原因
速度的配置,就是决定IO口驱动电路的响应速度。

我们需要结合实际情况配置速度,不同速度会有不同的影响
高低速差异:配置高速:输出频率高,噪音大,功耗高,电磁干扰强;
配置低速:输出频率低,噪音小,功耗低,电磁干扰弱;提高系统EMI(电磁干扰)性能;
看到差异,相信很多人就能理解了。
实际情况中,比如:低功耗的产品,你会考虑功耗。
环境不好的场合,通信不稳定,你会考虑电磁干扰等。
举例:如果你使用9600波特率UART通信,建议速度配置为低。
所以,如果你想使产品更加完美,速度配置也是关键的一项。


使用特权

评论回复
沙发
forgot| | 2023-8-15 08:52 | 只看该作者
配置高速:输出频率高,噪音大,功耗高,电磁干扰强;
配置低速:输出频率低,噪音小,功耗低,电磁干扰弱;提高系统EMI(电磁干扰)性能;

使用特权

评论回复
板凳
小夏天的大西瓜| | 2023-8-26 12:05 | 只看该作者
其实还是看各个引脚的具体功能是干啥的吧,有的只是控制IO对速率要求比较低,高速信号就得高

使用特权

评论回复
地板
星辰大海不退缩| | 2023-8-27 20:25 | 只看该作者
一般情况下看需求,平常IO建议默认速度就好

使用特权

评论回复
5
AdaMaYun| | 2023-8-27 21:44 | 只看该作者
使用UART通信,建议我一般配置为高,因为兼容高速115200波特率

使用特权

评论回复
6
OKAKAKO| | 2023-8-27 22:11 | 只看该作者
一般情形下结合具体的情况进行选择速度选择

使用特权

评论回复
7
tpgf| | 2023-9-6 17:29 | 只看该作者
其实倒是可以用pwm来形象的额理解这个问题

使用特权

评论回复
8
kxsi| | 2023-9-7 09:06 | 只看该作者
如何做才能提高io的速度呢

使用特权

评论回复
9
zljiu| | 2023-9-7 09:58 | 只看该作者
如果设定的速度超过io的承受范围 输出的波形会不会严重变形呢

使用特权

评论回复
10
drer| | 2023-9-7 10:41 | 只看该作者
一般咱们的io的速度已经完全满足通讯的速度的需求了

使用特权

评论回复
11
tfqi| | 2023-9-7 11:18 | 只看该作者
zljiu 发表于 2023-9-7 09:58
如果设定的速度超过io的承受范围 输出的波形会不会严重变形呢

是的 严重的话会根本没有任何输出

使用特权

评论回复
12
磨砂| | 2023-9-7 23:07 | 只看该作者
当然是为了适应更快的控制以及输出了啊

使用特权

评论回复
13
macpherson| | 2023-9-9 16:50 | 只看该作者
配置不同速度主要影响信号的变化和稳定性。

使用特权

评论回复
14
10299823| | 2023-9-9 16:55 | 只看该作者
根据外部设备的特性、传输速率要求和电磁干扰等因素,选择合适的速度配置是很重要的

使用特权

评论回复
15
qiufengsd| | 2023-9-9 17:04 | 只看该作者
通信速率较低,可以选择低速IO配置来降低功耗和电磁干扰

使用特权

评论回复
16
kmzuaz| | 2023-9-9 17:12 | 只看该作者
在较高的时钟频率或传输速率下,低速模式可能导致延迟和传输速度的下降。

使用特权

评论回复
17
bartonalfred| | 2023-9-9 17:20 | 只看该作者
不同的速度设置可以在数据传输和信号触发方面提供不同的特性和可靠性。

使用特权

评论回复
18
albertaabbot| | 2023-9-9 17:28 | 只看该作者
低速IO口的电磁干扰较弱。              

使用特权

评论回复
19
rosemoore| | 2023-9-9 17:36 | 只看该作者
低速配置可以降低功耗,并且减少噪声和干扰对数据传输的影响。但是在高速数据传输场景下可能会导致数据传输速率较慢。

使用特权

评论回复
20
i1mcu| | 2023-9-9 17:45 | 只看该作者
在高速配置中,由于输出频率高,所以可能会产生更多的噪音。相比之下,低速配置的噪音较低。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1510

主题

4548

帖子

6

粉丝