iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Arm Platforms

STM32 基礎入門教學系列 第 7

【Day7】:GPIO輸入輸出(下)

昨天講完了基本的輸入輸出模式,而事實上輸出有分成兩種,開漏輸出與推挽輸出,我們來實際看一下這兩種模式的區別吧。

認識電晶體

電晶體很像水關中的閥門,平時處於關閉狀態,施加微小的力,就可以啟動閥門,使大量的水流通過。
https://ithelp.ithome.com.tw/upload/images/20210911/20141525fGBZQe6kLS.jpg
例如:控制馬達時,我們不可以用GPIO腳直接供給馬達,因為單晶片是無法通過那麼大的電流,因此我們可以用電晶體的方式,只要提供微小的電流來控制閥門,就可以讓這個水閥通過大電流,使馬達轉動。

電晶體有三隻接腳,分別為B(基極)、C(集極)、E(射極),另外電晶體又分成NPN與PNP。對於N型半導體來說,當B極輸入高電位時,C、E兩極導通,而P型則相反。

對於數位電路來說,電晶體我們當作開關來使用,也就是導通與不導通,暫且不討論使用小電流驅動大電流的這種方式。

推挽輸出&開漏輸出

實際上的推挽輸出與開漏輸出是使用MOS場效電晶體來設計,下圖是其等效電路。
https://ithelp.ithome.com.tw/upload/images/20210911/20141525IOKRnns5ss.jpg
當輸出高電位時,上方電晶體導通,下方不導通,此腳位對外輸出高電位;當輸入低電位時,上方不導通,下方導通,腳位對外輸出低店位。兩個電晶體輪流導通,一個負責灌電流一個複雜拉電流。在STM32推挽輸出模式下低電位為0V,高電位為3.3V。
而在開漏輸出模式時,上方的電晶體完全不工作。如果輸出為0,則下方電晶體導通,腳位被下拉到0V;若控制輸出為高電位時,兩個電晶體都關閉,因此腳位不是高電位也不是低電位,為浮動的。因此這種模式下並沒有辦法輸出高電位,需要自己將腳位上拉。
一般在使用時我們都是使用推挽輸出,那開漏輸出既然沒有辦法真正的輸出高電位,有什麼好處呢?
由於開漏輸出的高電位是使用外部上拉的方式,因此你可以上拉至任何你想要的電壓,以符合需求,例如某些晶片需要輸入5V,但STM預設的輸出都是3.3V,此時你就可以使用開漏輸出,將腳位上拉至5V。

設定

實際使用時,可以先將腳位設成GPIO輸出,接著在左側System core底下的GPIO選擇剛剛配置的腳位,底下可以做設定,GPIO mode設為Output Open Drain開漏模式。使用時記得要外部上拉,否則這個腳位是沒辦法輸出高電位的喔!可以做個小實驗,設成開漏模式時,用電表去測量腳位輸出的變化,當程式輸出高電位時,去測量腳位,應當量到0.xxV,而不是3.3V,此時腳位是浮動的。
https://ithelp.ithome.com.tw/upload/images/20210912/20141525t9bwCwHpti.jpg

小結

迄今為止,我們已經可以對腳位做最一般的輸出輸入。而事實上,利用這些功能搭配上L298N我們就可以控制步進馬達了呢!有興趣的可以試試看,不過我們還是等到之後學到了PWM的輸出再來用A4988控制會比較容易一些。


上一篇
【Day6】:GPIO輸入輸出(中)
下一篇
【Day8】:ADC電壓採集
系列文
STM32 基礎入門教學30

尚未有邦友留言

立即登入留言