stm32 對於乙個輸出高低電平的io口,為什麼會有這麼多的模式和引數設定

時間 2021-06-01 08:32:47

1樓:阿木白

硬體的資源比軟體金貴。

輸出乙個高低電平本來只是這個IO乙個很小的功能,IO還有很多用途來適應不同的應用需求,為了最大限度利用金貴的硬體資源,所以需要配置,但這種配置應該不複雜才對呀。

2樓:[已重置]

你可能認為IO很簡單,但其實實際晶元中的IO的IP還是複雜很,也會有很多引數控制IP裡面的狀態,這些引數就是通過暫存器去設定。

3樓:893070

驅動方式不同,比如你要直接驅動乙個發光二極體,就得用推挽輸出,不能用開漏,因為開漏沒有驅動能力。再比如這個口要模擬I2C通訊,可以選上拉輸出

4樓:justin124

這個問題我可以試試,自己的理解,不做搬運工。

已經有朋友列舉了8種IO口的工作模式,就不重複了,題主肯定也很清楚。

從最簡單的開始,AF_PP和OUT_PP,復用功能的推挽輸出和普通輸出功能的推挽輸出模式。這兩個都是推挽輸出模式,AF_PP是由片上外設來控制,OUT_PP由ODR暫存器控制。推挽輸出是最基本的輸出模式,輸出高電平的時候PMOS導通,輸出低電平的時候NMOS導通。

照常理看,輸出模式有這一種模式就夠了。

在推挽輸出模式的基礎上,來看看OD模式,也就是開漏輸出,如果輸出級用的三極體,那就叫集電極開路輸出。AF_OD和OUT_OD都是開漏輸出,所以放一起。這種模式和推挽模式最大的區別是沒有與VDD相連的PMOS,所以在沒有必要的外部電路輔助的情況下,無法輸出高電平,如果要輸出高電平的話,必須要有上拉電阻(其實這個地方就和上拉輸入模式對應起來了)。

那麼,問題來了,這麼雞肋的功能,有啥用?其實在數字電子電路課程中,講過乙個內容,叫做「線與」。沒學過?!

也沒關係。我們看乙個實際使用了OD輸出的常用器件就行了——DS18B20。這個器件一般都不陌生。

DS18B20基於1-wire匯流排,只有乙個資料腳DQ,多個DS18B20掛在一根匯流排上時,所有的DQ都連一起。如果DS18B20的DQ是使用的類似於推挽輸出的結構,有沒有覺得會出bug?沒錯!

如果乙個DS18B20輸出高電平,另乙個輸出低電平,那麼電源就被短路了。換做開漏模式,因為有上拉電阻的存在,在同時有輸出高電平、低電平時,上拉電阻又起到了限流的作用,此時匯流排為低電平。概況了說,整個DQ連線上,只要有乙個輸出了低電平,那麼DQ就是低電平。

繼續概括,如果IO口將用於類似於匯流排的功能使用時,則需配置為OD模式。(當然,還有增強驅動能力的應用,不過我沒用過,所以我不說)

講完了輸出的,再來看輸入的。

AIN是最簡單的了,因為模擬輸入嘛,獨此乙個。

上拉輸入IPU可以結合OD輸出部分結合看,他倆是一對。當然,還有類似於外部接按鍵的應用,如果不配置成上拉輸入,就要外部接上拉電阻,否則在按鍵未按下時,沒法產生高電平。這個可以自己畫個圖理解一下。

下拉輸入IPD也是有一些特殊場合使用的,這種模式也必然對應一種輸出電路,只是我不知道這種電路是什麼樣的。但是我在實際專案中遇到過,某晶元資料手冊中,對於其某個輸出引腳,明確要求需要外接下拉電阻,這種情形可以考慮用IPD了。(PS:

我一直在想,與OD輸出類似,是不是下拉輸入對應的電路是一種OS或者叫OE的結構呢?)

所有的模式都說完了。

發現漏了浮空輸入沒說。

從參考手冊的框圖可以看出,浮空輸入即上拉電阻和下拉電阻都不接的輸入模式。對於推挽輸出模式輸出的訊號,使用浮空輸入模式即可,當然,使用上拉輸入或下拉輸入從功能上說應該也沒有大問題(我在使用時一般都首選IPU模式),但是對功耗(MCU功耗或外部器件功耗)會有影響。

5樓:purewater1

因為工程師啥模組都想往裡塞,這個口塞個adc,那個弄個usart,想想可以加點驅動能力做個推挽源跟隨器,於是就有了這麼多的功能。

以下是微電子相關的。

估計都是成熟的IP核,不用白不用

6樓:

因為微控制器作為一種通用的微控制器,他本來的設計就是多用途的。針對不同的應用需求選擇不同的引數你可以或者達到最高的效能(IO速度),或者最低的功耗。又或者硬體忘記作上下拉,軟體來補,等等等等。。

如何實現乙個基於STM32的藍芽防丟器?

Magician 我給你分享兩個思路吧。1.根據RSSI,就是接收訊號強度。一般情況下,接收訊號強度是跟距離負相關的,你可以設定乙個閾值,當接收訊號強度低於這個閾值的時候,就啟動蜂鳴器報警。但是這個思路有這麼幾個問題,第乙個是HC 05 就是你說的HM 05,我不知道是不是又新模組了,我之前用的時候...

如果用stm32設計乙個糧倉通風系統,該怎麼做呢?

伊韜 總體思路就算感測器加風機,簡單理解成感測器加乙個電風扇。通風可以控制溫度,比如糧倉溫度達到多少度就開始通風?就是讓電風扇轉起來。或者需不需要定期通風?保證糧倉內的空氣流通?這個設計的重點應該是邏輯行為,控制倒是很簡單。先理清楚要實現怎樣的邏輯,後面的設計自然也就清晰了。 夜望繁星 糧倉通風,主...

同乙個專案分別用stm32和51微控制器會有什麼不同?

wuzz 這個問題,無法回答,沒有給出細節。二者的區別就是資源不同。大白話,假如STM32是iphone12,那51可以比成iphone5。用iphone5打王者榮耀,就不用考慮了。所以要說有什麼不同就是資源不同,看專案需求選擇合適的MCU。 用STM32程式設計更簡單一些,適合工程師裝必,雖然產品...