STM32引腳做輸入時,有開漏,浮空輸入,弱上拉,弱下拉,等多種方式,如何選擇????


          之前做DS18B20實驗時,一直在糾結一個問題,數據線既需要接收數據,又需要傳輸數據,應該選擇什么輸入輸出方式呢?

最開始的時候選擇了推挽輸出和浮空輸入切換的方式,當引腳作為輸入的時候切換成浮空輸出,當引腳作為輸出的時候又切換成推挽輸出,但是這樣弄很麻煩不停地換來換去,最終這個實驗沒有成功,主要原因應該是時序的問題,過了 一段時間以后,突然想起之前在Ti申請過一片TMP101的I2C接口的溫度傳感器,之前那個沒弄出來很不甘心,這次在心里暗下決心一定要把這個芯片調通!

       要弄好這個芯片首先遇到的問題,依然是端口的輸入輸出問題,這回我看了很多網友寫的I2C總線的代碼,絕大多數都是用推挽輸出加上拉電阻實現雙向數據傳輸的,所以我也這么干了,在芯片SDA腳加了一個5.1K的上拉電阻,剛開始用示波器看程序的時候發現SDA電平總是高,我開始有點不賴煩了,最后發現居然是示波器探頭沒接好(我發現有很多時候,我都會犯這種很低級的錯誤),就這樣,在時序上花一些功夫后最后縱欲調通了。調通知后,我馬上又 改配置,換成弱上拉的方式,把5.1K的上拉電阻給撤了,這樣也沒問題。

其實弱上拉說白了就是,開漏輸出加上拉電阻,也就是說STM32引腳的弱上拉方式就是ST公司為用戶提供的一個數據雙向傳輸口。

同理,弱下拉就是開漏輸出加下拉電阻,同樣是雙向數據傳輸口。因此大家基本上不需要用切換輸出方式的方法來處理雙向數據傳輸的問題。

//********************************************************************************************************

附上我在網上盪的別個的解釋:

上拉就是輸入高電平,然后接一個上拉電阻(起保護作用),在你目前開發學習時,只需要知道上拉就表示該端口在默認情況下輸入為高電平
下拉就相反了,指輸入接低電平,然后接一個下拉電阻(關於上拉電阻與下拉電阻,設計比較多的數電模電知識,此處就略過,反正其保護電路的作用)
浮空,顧名思義,就相當與此端口在默認情況下什么都不接,呈高阻態,這種設置在數據傳輸時用的比較多,譬如,你之后學習的I2C實驗
這三種,可能只有浮空稍微深奧一點了

//**************************************************************************************************************************************

IO配置輸入的時候有你說的三種模式外還有模擬輸入。

上拉輸入模式:區別在於沒有輸入信號的時候默認輸入高電平(因為有弱上拉)。

下拉輸入模式:區別在於沒有輸入信號的時候默認輸入低電平(因為有弱下拉)。

對於浮空輸入模式顧名思義也就是輸入什么信號才是什么信號,對於浮空輸入要保證有明確的輸入信號。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM