今天有人问:GPIO配置不同输出速度会有什么影响?你知道答案吗?
1写在前面
这个问题看起来比较简单,我相信很多人都能说出答案。
但是,很多人都只是停留在表面,至于深层次的含义,估计很少有人思考。
需要更深理解其中含义,可能需要结合特定场景来说,我自己也是在项目中才深刻体会其中含义。
2GPIO输出速度
不管标准外设库,还是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配置,默认配置低:
当然,如果配置成其他模式,有可能是中,或高。
提问:你想过为什么会是低、高吗?
3实验:测量GPIO输出波形
不知道大家用示波器测量过GPIO输出波形没有,特别是在高速(单位M)的时候。
我以前经常测量MCO引脚输出时钟,测量过的人应该都知道,如果输出速度和配置速度不匹配,会明显看到波形不正常。
波形会出现不完整,幅度低等失真现象。
相信不用我说,有一定常识的人都能理解。
4具体原因
速度的配置,就是决定IO口驱动电路的响应速度。
我们需要结合实际情况配置速度,不同速度会有不同的影响。
高低速差异:
配置高速:输出频率高,噪音大,功耗高,电磁干扰强;
配置低速:输出频率低,噪音小,功耗低,电磁干扰弱;提高系统EMI(电磁干扰)性能;
看到差异,相信很多人就能理解了。
实际情况中,比如:低功耗的产品,你会考虑功耗。
环境不好的场合,通信不稳定,你会考虑电磁干扰等。
举例:
如果你使用9600波特率UART通信,建议速度配置为低。
所以,如果你想使产品更加完美,速度配置也是关键的一项。
-
STM32
+关注
关注
2274文章
10929浏览量
358012 -
输出
+关注
关注
0文章
93浏览量
21882 -
GPIO
+关注
关注
16文章
1217浏览量
52485
发布评论请先 登录
相关推荐
GPIO模块与其他外设的连接方法
GPIO错误排查与解决
如何配置GPIO引脚
stm32 GPIO中断配置教程
STM32 GPIO的八种工作模式
![<b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的八种工作模式](https://file1.elecfans.com/web1/M00/F4/64/wKgaoWcqyfGAAD-yAABGKLy5VbM040.png)
使用STM32CubeMX对红外波形进行GPIO输出,并LED显示
STM32 GPIO八种模式及工作原理详解
![<b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>八种模式及工作原理详解](https://file1.elecfans.com/web2/M00/FD/9E/wKgZomadtqmANWVDAAAk9yCwOd4531.png)
在GPIO配置中有GPIO_Speed_10MHz 、GPIO_Speed_2MHz 和 GPIO_Speed_50MHz,这些是表示IO口的变换速度吗?
请问如何提高STM32 GPIO输出速度?
STM32上电启动后,会有几率出现程序运行速度变慢的现象,是为什么?
请问STM32普通的GPIO输出正确的配置方式是怎样的?
GD32 MCU如何将烧录口配置为GPIO使用?
![GD32 MCU如何将烧录口<b class='flag-5'>配置</b>为<b class='flag-5'>GPIO</b>使用?](https://file1.elecfans.com/web2/M00/C0/3E/wKgZomXUC-KAMeKGAAA5pwTymlM287.png)
评论