電子產業(yè)一站式賦能平臺

PCB聯盟網

搜索
查看: 76|回復: 0
收起左側

單片機IO配置不同速度有啥區(qū)別?

[復制鏈接]

319

主題

319

帖子

2727

積分

三級會員

Rank: 3Rank: 3

積分
2727
跳轉到指定樓層
樓主
發(fā)表于 2024-10-20 20:12:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
作者 | strongerHuang
微信公眾號 | strongerHuang
這是一個初學者不會去了解的問題,但,會使老司機掉坑的問題。
這也是最近在技術交流群看到的一個問題,所以,就出來簡單分享一下。
概述
這個問題看起來比較簡單,我相信很多人都能說出答案。
但是,很多人都只是停留在表面,沒有在項目中經歷過,也沒有更深入的去了解。

很早之前年的單片機可能沒有輸出速度這個配置選項,但是這后面的單片機基本都有配置速度的選項,下面結合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   /*!#define GPIO_Speed_10MHz GPIO_Speed_Level_2   /*!#define GPIO_Speed_50MHz GPIO_Speed_Level_3   /*!
  • #define  GPIO_SPEED_FREQ_LOW        (0x00000000u)  /*!#define  GPIO_SPEED_FREQ_MEDIUM     (0x00000001u)  /*!#define  GPIO_SPEED_FREQ_HIGH       (0x00000002u)  /*!#define  GPIO_SPEED_FREQ_VERY_HIGH  (0x00000003u)  /*!
    對于普通輸出GPIO,使用STM32CubeMX配置,默認配置低:

    當然,如果配置成其他模式,有可能是中,或高。
    比如:配置UART、CAN引腳,速度會是高。
    提問:你想過為什么會是低、高嗎?
    測量GPIO輸出波形
    不知道大家用示波器測量過GPIO輸出波形沒有,特別是在高速(單位M)的時候。
    我以前經常測量MCO引腳輸出時鐘,測量過的人應該都知道,如果輸出速度高于配置速度,會明顯看到波形不正常。
    波形會出現不完整,幅度低等失真現象。
    相信不用我說,有一定常識的人都能理解。
    差異原因
    速度的配置,就是決定IO口驅動電路的響應速度。
    我們需要結合實際情況配置速度,不同速度會有不同的影響。
    高低速差異:配置高速:輸出頻率高,噪音大,功耗高,電磁干擾強;
    配置低速:輸出頻率低,噪音小,功耗低,電磁干擾弱;提高系統EMI(電磁干擾)性能;
    看到差異,相信很多人就能理解了。
    實際情況中,比如:低功耗的產品,你會考慮功耗。
    環(huán)境不好的場合,通信不穩(wěn)定,你會考慮電磁干擾等。
    舉例:如果你使用9600波特率UART通信,建議速度配置為低。
    所以,如果你想使產品更加完美,速度配置也是關鍵的一項。------------ END ------------

    ●專欄《嵌入式工具●專欄《嵌入式開發(fā)》●專欄《Keil教程》●嵌入式專欄精選教程
    關注公眾號回復“加群”按規(guī)則加入技術交流群,回復“1024”查看更多內容。
    點擊“閱讀原文”查看更多分享。
  • 回復

    使用道具 舉報

    發(fā)表回復

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則

    關閉

    站長推薦上一條 /1 下一條


    聯系客服 關注微信 下載APP 返回頂部 返回列表