EEWorld 电子工程世界

文章数:10827 被阅读:13690842

推荐内容
账号入驻

干货 | 单片机IO配置,不同速度有什么区别?

最新更新时间:2023-09-18
    阅读数:

这是一个初学者不会去了解的问题,但会使老司机掉坑的问题。 这也是最近在技术交流群看到的一个问题,今天我们就简单聊一聊。

这个问题看起来比较简单,我相信很多人都能说出答案。 但是,很多人都只是停留在表面,没有在项目中经历过,也没有更深入的去了解。

很早以前的单片机可能没有输出速度这个配置选项,但后来的单片机基本都有配置速度的选项。下面,我们结合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通信,建议速度配置为低。
所以,如果你想使产品更加完美,速度配置也是关键的一项。

推荐阅读


· END ·







 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved