在嵌入式開發(fā)中,我們經(jīng)常聽到 GPIO、PWM、ADC 這些術(shù)語。初學(xué)者常常搞不清楚它們的區(qū)別和用途:“它們不是都是和電平有關(guān)嗎?為什么還要分這么多種?”今天,我們就把這些基礎(chǔ)概念講清楚,讓你在動手開發(fā)時不再迷糊。
GPIO
最基礎(chǔ)的數(shù)字接口
GPIO(General Purpose Input/Output),通用輸入輸出,是 MCU 上最常見的引腳類型。GPIO 的核心功能就是讀取或者輸出數(shù)字信號:高電平或者低電平。
輸入模式:GPIO 可以用來讀取開關(guān)狀態(tài)、傳感器輸出或其他數(shù)字信號。
輸出模式:GPIO 可以控制 LED 燈的亮滅、繼電器開關(guān),甚至驅(qū)動一些簡單的外設(shè)。
GPIO 的特點(diǎn)是簡單直接,只處理“開或關(guān)”兩種狀態(tài)。要注意的是,GPIO 并不適合直接輸出模擬信號,也無法實(shí)現(xiàn)平滑的亮度或速度控制。
PWM
數(shù)字信號模擬模擬量
PWM(Pulse Width Modulation,脈寬調(diào)制)是一種利用數(shù)字信號模擬連續(xù)輸出的方法。簡單來說,它通過快速切換高低電平,調(diào)整高電平在整個周期中的占比,從而控制輸出平均電壓。
占空比:PWM 的核心概念是占空比(Duty Cycle),即高電平持續(xù)時間占整個周期的比例。占空比越大,輸出平均電壓越高。
應(yīng)用場景:控制電機(jī)轉(zhuǎn)速、LED 亮度調(diào)節(jié)、舵機(jī)位置控制等。
舉例來說,你想讓 LED 燈亮一半亮度,用 GPIO 是不可能的,但用 PWM 就可以通過調(diào)整占空比,實(shí)現(xiàn)亮度漸變。
ADC
把模擬信號變成數(shù)字信號
ADC(Analog-to-Digital Converter,模數(shù)轉(zhuǎn)換器)**是 MCU 用來讀取模擬信號的接口。很多傳感器輸出的不是簡單的高低電平,而是連續(xù)變化的電壓,例如溫度、光照、聲音等。
原理:ADC 會把模擬電壓轉(zhuǎn)換成 MCU 可以處理的數(shù)字值。比如,輸入 03.3V 的電壓,經(jīng)過 12 位 ADC 轉(zhuǎn)換,可能得到 04095 的數(shù)字。
應(yīng)用場景:讀取溫度傳感器、光敏電阻、壓力傳感器等模擬信號。
ADC 的特點(diǎn)是只能讀取模擬信號,輸出的是數(shù)字值,便于程序處理。
04
GPIO、PWM、ADC 的區(qū)別與聯(lián)系
信號類型
GPIO:數(shù)字信號,高/低電平。
PWM:數(shù)字信號模擬模擬量,通過占空比控制平均電壓。
DC:輸入模擬信號,轉(zhuǎn)換成數(shù)字?jǐn)?shù)據(jù)。
應(yīng)用目的
GPIO:簡單控制或讀取開關(guān)狀態(tài)。
PWM:控制模擬效果,例如亮度、速度。
ADC:采集外部傳感器的連續(xù)信號,用于計算或決策。
控制方向
GPIO 和 PWM:通常是 MCU 向外控制。
ADC:通常是 MCU 從外部采集數(shù)據(jù)。
05
開發(fā)者常見誤區(qū)
GPIO 可以模擬亮度?
很多人一開始會嘗試用 GPIO 控制 LED 亮度,但 GPIO 只有高低兩種狀態(tài),想要亮度漸變,必須用 PWM。
PWM 是模擬接口?
雖然 PWM 可以模擬輸出模擬電壓,但本質(zhì)上還是數(shù)字信號,只是利用占空比讓輸出平均值變化。
ADC 直接控制設(shè)備?
ADC 只能讀取信號,不能直接控制外設(shè)。要控制設(shè)備,需要通過程序處理 ADC 值,再用 GPIO 或 PWM 輸出。
06
實(shí)踐中的選擇指南
控制開關(guān)或簡單狀態(tài):GPIO 足夠。
調(diào)節(jié)亮度或速度:PWM 最合適。
讀取傳感器信號:ADC 必不可少。
此外,很多嵌入式 MCU 都支持 GPIO 與 PWM、ADC 復(fù)用,一條引腳可能同時支持多種功能。在配置前,一定要查手冊,明確引腳功能和寄存器設(shè)置。理解 GPIO、PWM、ADC 的區(qū)別和聯(lián)系,是嵌入式開發(fā)的入門基礎(chǔ)。
掌握它們,你就能更準(zhǔn)確地控制外設(shè)和采集數(shù)據(jù),為后續(xù)開發(fā)打下堅實(shí)基礎(chǔ)。無論是控制 LED 燈、驅(qū)動舵機(jī),還是讀取傳感器數(shù)據(jù),選擇合適的接口都能讓你的程序更簡潔、可靠。
-
PWM
+關(guān)注
關(guān)注
116文章
5872瀏覽量
225649 -
adc
+關(guān)注
關(guān)注
100文章
7511瀏覽量
555980 -
GPIO
+關(guān)注
關(guān)注
16文章
1328瀏覽量
56230
發(fā)布評論請先 登錄
ADC配置為什么不要像PWM模塊設(shè)置一樣,還要指定那個pwm模塊的那一路pwm信號呢?
TWEN-ASR ONE 語音識別系列教程(2)— GPIO、ADC、PWM的使用
PWM到底是什么?怎樣去使用呢
使用ADC來改變定時器1PWM的占空比
ESP32-Wroom上到底有多少個ADC使能引腳?
Nano100B如何初始化GPIO/Timer/ADC/PWM和SPI
如何使用PWM觸發(fā)ADC和PWM剎車功能來阻止PWM輸出
Nano130如何初始化GPIO、Timer、ADC、PWM和SPI
PWM硬件間隔觸發(fā)ADC
Part13--怎么區(qū)分I/O與GPIO
定時器,pwm,gpio
GPIO、PWM、ADC,到底怎么區(qū)分?
評論