0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32單片機I/O的工作模式

h1654155282.3538 ? 來源:HACK實驗室 ? 作者:HACK實驗室 ? 2020-11-03 15:47 ? 次閱讀

最近有個朋友在設(shè)計低功耗設(shè)備,用的是STM32的主控,他知道我做過很多類似的超低功耗項目,于是向我咨詢了一些問題,其中就包括I/O口的幾種工作模式。今天我就詳細的來總結(jié)一下這幾種工作模式,讓大家在以后的設(shè)計中知其然也知其所以然。

先說說GPIO

在聊這8種工作模式之前,我想先說一下GPIO的概念—通用輸入輸出GeneralPurposeInputOutput簡稱GPIO,就是芯片引腳可以通過它們輸出高、低電平,也可以通過他們輸入、讀取引腳的電壓、電平狀態(tài)。

下面的8種工作模式我將圍繞下圖進行分析介紹,讀懂這一張圖大家基本就可以完全理解STM32的GPIO了。希望大家仔細的看一看。

四種不同的輸出模式

推挽輸出:該模式下引腳可以輸出高低電平,可連接、驅(qū)動數(shù)字器件。對于推挽有部分小伙伴可能不知道是啥意思,其實很簡單,就是兩個參數(shù)相同的NPN、PNP三極管或者NMOS、PMOS管以推挽方式存在于電路中,各負責正負半周波形放大的任務(wù)。兩只對稱管每次只有一個導通,損耗小效率高,既可以提高電路的帶負載能力,又可以提高開關(guān)速度。電路如下圖所示,大家可以到IO內(nèi)部圖里面對比著找一找。

開漏輸出:該模式下引腳就相當于連接到了上圖NMOS的漏極,PMOS關(guān)閉去掉不存在。這時該引腳只能輸出低電平,不能輸出高電平,需要引腳加上拉電阻,才能得到高電平。這時一定有小伙伴疑惑,這東西沒有推挽輸出好用啊,錯!開漏輸出是有一些特別的優(yōu)點的,比如:1、可用于連接與主控電平不匹配的器件,只需要將上拉電阻的上拉端連接到對方電平即可;2、以小博大,利用外部電路的驅(qū)動能力,減小內(nèi)部電流,內(nèi)部只需要很小的柵極驅(qū)動電流。缺點就是會有上升沿的延時,因為有上拉電阻的原因,這一點大家可以去閱讀一下我的上一篇關(guān)于電平匹配的文章,里面有介紹。

復用推挽輸出、復用開漏輸出:顧名思義該模式下就是將引腳復用為其他功能,不再是簡單的GPIO。像我們常用的UART、SPI等的輸出引腳就是復用的推挽輸出,而我們常用的I2C就是復用的開漏輸出,這時大家就應(yīng)該知道為什么我們在用I2C的時候需要上拉電阻了吧。這里給大家埋個伏筆——用I2C時為什么要開漏呢?知道的小伙伴可以在留言區(qū)回復,后面有機會分析I2C時我會詳細和大家來說。

四種不同的輸入模式

浮空輸入:這種輸入模式一般多用于檢測外部高低電平狀態(tài),比如按鍵等。大家結(jié)合下面的IO內(nèi)部圖來看,浮空輸入時上下拉電阻都沒有連接,引腳電平狀態(tài)不確定,如果引腳懸空時這種模式下讀出來的數(shù)據(jù)是沒意義的。

上拉、下拉輸入:基本看名字大家就已經(jīng)知道這種模式是怎么回事了,上圖中如果上面紅圈電阻接入就是上拉輸入,下面紅圈電阻接入就是下拉輸入。上一段我說過按鍵輸入檢測用浮空輸入模式,如果用上拉、下拉模式就更簡單了,就可以省掉外部的上下拉電阻節(jié)約項目成本。

模擬輸入:這個模式也是我們非常常用的了,那就是引腳設(shè)置為STM32內(nèi)部ADC的模擬信號輸入。值得注意的是這種模式就不是所有的IO都有的功能了,需要帶ADC的IO口才可以設(shè)置。

補充說明些東西

關(guān)于IO引腳內(nèi)部的兩個保護二極管,很久以前看到有人說是用來鉗位的,后來我在參加ST的研討會時問過官方,官方答復說并不是用于鉗位的而是用于做ESD保護的。當引腳作為ADC輸入的時候我們必須保證輸入模擬信號不超過3.6V,5V是不可以的。

上面說了芯片引腳內(nèi)部有二極管保護,但是我建議大家在做設(shè)計時如果引腳引出板外最好格外再加TVS二極管來做加強保護,因為引腳連出板外很容易受靜電等外界因素傷害。比如下載接口,我在空間充足的時候都會放上一個SOT-23的TVS二極管來做保護。

總結(jié)

到這里大家會發(fā)現(xiàn)我今天所講的都是硬件層面的,而非軟件層面上的具體設(shè)置。其實如果大家從硬件層面搞懂這幾種模式,軟件上就簡單了,按照datasheet上面的說明進行配置就可以了。

最后來說一下近況,臨近年底工作上比較忙,之前說的幾個項目都跳票了,實在抱歉。但是大家不要擔心,忙過這會我會騰出更多時間投身于開源項目,2020年我給自己制定的目標之一就是做更多的開源項目與大家分享。
責任編輯人:CC

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628309
  • STM32
    +關(guān)注

    關(guān)注

    2257

    文章

    10828

    瀏覽量

    352444
收藏 人收藏

    評論

    相關(guān)推薦

    8051單片機的四組I/O端口

     單片機I/O端口是輸入信號和輸出信號的通道。8051單片機有P0、P1、P2、P3四組I/O
    發(fā)表于 08-05 16:18 ?1.2w次閱讀
    8051<b class='flag-5'>單片機</b>的四組<b class='flag-5'>I</b>/<b class='flag-5'>O</b>端口

    STC8系列單片機I/O口的工作模式

    STC8系列單片機的輸入/輸出口(英文是:Input/Output Interface,下文簡稱為:I/O口)有4種可以通過軟件配置的工作模式
    發(fā)表于 08-16 14:24 ?6259次閱讀
    STC8系列<b class='flag-5'>單片機</b><b class='flag-5'>I</b>/<b class='flag-5'>O</b>口的<b class='flag-5'>工作</b><b class='flag-5'>模式</b>

    STM32單片機I/O簡介

    STM32單片機---(二)I/O應(yīng)用stm32I/O簡介GPIO的8種
    發(fā)表于 02-16 07:04

    單片機的并行I/O口與工作模式介紹

    目錄2.5 單片機的并行I/O口2.5.1 單片機的并行I/O口與
    發(fā)表于 02-18 06:20

    單片機I/O口的使用

    單片機I/O口的使用:對單片機的控制,其實就是對I/O口的控制,無論
    發(fā)表于 12-03 22:51 ?69次下載

    詳解STM32單片機I/O的幾種工作模式

    最近有個朋友在設(shè)計低功耗設(shè)備,用的是STM32的主控,他知道我做過很多類似的超低功耗項目,于是向我咨詢了一些問題,其中就包括I/O口的幾種工作模式
    的頭像 發(fā)表于 05-03 18:22 ?6341次閱讀
    詳解<b class='flag-5'>STM32</b><b class='flag-5'>單片機</b><b class='flag-5'>I</b>/<b class='flag-5'>O</b>的幾種<b class='flag-5'>工作</b><b class='flag-5'>模式</b>

    單片機I/O接口電路的擴展

    單片機I/O (輸入/輸出)接口是其與外設(shè)交換數(shù)字信息的橋梁。事實上,真正用作I/O口線的只有P1口的8位
    的頭像 發(fā)表于 06-30 15:37 ?9397次閱讀
    <b class='flag-5'>單片機</b>的<b class='flag-5'>I</b>/<b class='flag-5'>O</b>接口電路的擴展

    為什么單片機I/O口需要驅(qū)動

    為什么單片機I/O口需要驅(qū)動呢?這個問題需要從I/O口的電氣特性上進行解釋。
    發(fā)表于 07-21 11:10 ?2423次閱讀
    為什么<b class='flag-5'>單片機</b>的<b class='flag-5'>I</b>/<b class='flag-5'>O</b>口需要驅(qū)動

    stm32單片機的基本工作原理

    我們使用的大部分電器都使用了單片機,那么stm32單片機的基本工作原理是什么呢?下面小編就帶大家了解一下stm32
    的頭像 發(fā)表于 08-19 11:06 ?2.8w次閱讀

    51單片機并行I/O工作原理

    51單片機并行I/O工作原理51單片機并行I/O
    發(fā)表于 11-11 11:51 ?50次下載
    51<b class='flag-5'>單片機</b>并行<b class='flag-5'>I</b>/<b class='flag-5'>O</b>口<b class='flag-5'>工作</b>原理

    STM32單片機---I/O應(yīng)用

    STM32單片機---(二)I/O應(yīng)用stm32I/O簡介GPIO的8種
    發(fā)表于 12-17 18:33 ?18次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>單片機</b>---<b class='flag-5'>I</b>/<b class='flag-5'>O</b>應(yīng)用

    51 單片機實戰(zhàn)教程(二 STC15系列I/O工作模式設(shè)定及外圍元件驅(qū)動電路)

    STC15單片機的用戶手冊中,對其I/O做了如下描述:可以看出要改變I/O工作方式,必須改變配
    發(fā)表于 12-23 19:27 ?9次下載
    51 <b class='flag-5'>單片機</b>實戰(zhàn)教程(二 STC15系列<b class='flag-5'>I</b>/<b class='flag-5'>O</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>設(shè)定及外圍元件驅(qū)動電路)

    I/O口是單片機與外界聯(lián)系的通道

    I/O口是單片機與外界聯(lián)系的通道。它可對各類外部信號(開關(guān)量、模擬量、頻率信一號)進行檢測、判斷、處理,并可控制各類外部設(shè)備。單片機通過I/
    發(fā)表于 02-10 10:32 ?1次下載
    <b class='flag-5'>I</b>/<b class='flag-5'>O</b>口是<b class='flag-5'>單片機</b>與外界聯(lián)系的通道

    單片機I/O口驅(qū)動的作用分析

    為什么單片機I/O口需要驅(qū)動呢?這個問題需要從I/O口的電氣特性上進行解釋。
    發(fā)表于 01-29 09:51 ?1652次閱讀

    為什么單片機I/O口需要驅(qū)動?

    為什么單片機I/O口需要驅(qū)動?
    的頭像 發(fā)表于 09-27 15:32 ?752次閱讀
    為什么<b class='flag-5'>單片機</b>的<b class='flag-5'>I</b>/<b class='flag-5'>O</b>口需要驅(qū)動?