今天有人問: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
+關注
關注
2277文章
10951瀏覽量
359230 -
輸出
+關注
關注
0文章
93瀏覽量
21944 -
GPIO
+關注
關注
16文章
1223瀏覽量
52756
發布評論請先 登錄
相關推薦
使用stm32f405做6步pwm輸出時,定時器配置由強制輸出轉為pwm,com觸發后會有延遲生效的現象,怎么解決?
GPIO模塊與其他外設的連接方法
GPIO錯誤排查與解決
如何配置GPIO引腳
stm32 GPIO中斷配置教程
STM32 GPIO的八種工作模式

使用STM32CubeMX對紅外波形進行GPIO輸出,并LED顯示
STM32 GPIO八種模式及工作原理詳解

評論