1. 程式人生 > >STM32之GPIO開漏(Push-pull)和推輓(open-drain)輸出

STM32之GPIO開漏(Push-pull)和推輓(open-drain)輸出

STM32GPIO介紹:

  1. 每一個GPIO包括4個32bit的控制暫存器(GPIOx_MODER,GPIOx_OTYPER,GPIOx_OSPEEDRandGPIOx_PUPDR);2個32bit的資料暫存器(GPIOx_IDR,GPIOx_ODR);1個32位的復位/置位暫存器(GPIOx_BSRR);1個32位的時鐘暫存器(GPIOx_LCKR);2個32位的複用功能暫存器(GPIOx_AFRH,GPIOx_AFRL).
  2. 在描述GPIO的時候有兩個名詞是開漏(Push-pull)和推輓(open-drain),以前也接觸過,但還是不明白,究其原理,今天抽出時間特來分析一下:

    通過上圖我們可以看到在GPIO的輸出控制器有一個P-MOS和N-MOS的組合,用Multisim軟體進行模擬;
    推輓輸出:

    開漏輸出:
    這裡寫圖片描述
    推輓輸出的特點:能夠真正輸出高電平和低電平,且驅動能力很強,不能實現線與功能,也不支援電平轉換。
    開漏輸出的特點:開漏輸出想要輸出高電平必須由外部上拉提供,這種特性可以實現電平的轉換,可以實現線與功能,但是開漏輸出的低電平驅動能力很強。
    具體要使用推輓還是開漏要視具體情況而設定。
    下面是我參考學習的一些文件:
    [1]http://blog.csdn.net/techexchangeischeap/article/details/72569999
    [2]http://blog.csdn.net/lostand/article/details/70052918