











串行:
串行芯片(如PCF8574, MCP23017):通過I2C或SPI等總線擴展。優點是引腳占用極少(2根線即可擴展8/16個IO)。缺點是速度相對較慢,且需要軟件協議驅動。
輸入/輸出能力:
準雙向IO(如PCF8574):引腳內部有弱上拉,可以通過軟件配置為輸入或輸出,但驅動能力較弱。結構簡單,但靈活性差。
真正雙向IO(如MCP23017):每個引腳可以獨立配置為輸入或輸出,并且有獨立的輸入寄存器、輸出寄存器和方向寄存器。功能強大,控制更精確。
中斷功能:
帶中斷(如MCP23017, PCF8574的INT引腳):極其重要! 當輸入引腳狀態發生變化時,芯片會通過一個專用的中斷引腳通知MCU。這避免了MCU不斷輪詢(Polling)輸入狀態,大大節省了MCU資源,并實現了實時響應。對于輸入應用,強烈推薦帶中斷的芯片。
驅動能力(拉電流/灌電流):
核心問題:GPIO擴展芯片單個引腳的驅動能力通常有限(例如PCF8574為25mA,MCP23017為25mA)。直接驅動繼電器、電機、大功率LED等是危險的。
解決方案:當需要驅動較大電流負載時,必須將擴展芯片的引腳作為控制信號,后級連接三極管或MOSFET來提供驅動能力。
灌電流能力通常強于拉電流,在設計驅動電路時可以優先考慮使用灌電流模式。
上拉電阻:
I2C總線:SDA和SCL線必須連接上拉電阻(典型值4.7kΩ至10kΩ)。
中斷引腳:芯片的INT輸出引腳通常是開漏輸出,必須加上拉電阻到VCC。
輸入引腳:如果連接的是開關、按鍵等,需要根據情況配置上拉或下拉電阻,確保在空閑時有確定的電平。
地址配置:
I2C芯片(如PCF8574、MCP23017)有多個地址選擇引腳(A0, A1, A2)。通過將這些引腳連接到GND或VCC,可以為芯片設置不同的I2C地址。這允許你在同一總線上使用多個同型號擴展芯片。務必規劃好地址,避免沖突。


