設計人員經常面臨兩個微控制器 I/O 問題。第一個問題是,最適合應用的微控制器不具備合適的 I/O 能力組合。第二個問題是,已推出的產品線需要增加 I/O。
出現第一個問題時,開發人員經常不得不購買更昂貴且功能更強的微控制器。而面對第二個問題時,切換到新的微控制器以及隨之而來的軟件移植所需的成本及時間可能會多得令人難以承受。
要同時解決這兩個問題,一種潛在的解決方案是使用外部 I/O 擴展器件,這種器件通??蛇B接到微控制器的 SPI 或 I2C 總線。這樣就能避免在引腳數以及可能的性能和封裝方面,對微控制器做出過多的規定。同時,這種方法還能讓產品設計具有前瞻性,以應對功能蠕變、目標市場擴張、客戶功能請求和微控制器選擇不當(這種情況時有發生)等問題。
本文將討論典型的微控制器 I/O 要求,并介紹一些合適的外部擴展器件,然后說明如何使用這些片外資源來增加通用輸入和輸出、存儲器存儲、脈沖寬度調制 (PWM) 甚至看門狗定時器功能。
選擇擴展接口
微控制器配有多個不同的片載外設接口,可用于與外部設備通信。根據微控制器的不同,這些接口可能包括(僅列舉幾例):
其中最適合與外部擴展設備通信的接口是 I2C 和 SPI。
I2C 是一種兩線總線,傳統的運行速率為 100 千位/秒 (kb/s) 或 400 kb/s,但也有一些可支持 1 Mb/s 或更快速度的高速設備。其中一條線是專用的時鐘引腳,而另一條線則用于主設備和從設備之間的雙向通信。通常情況下,微控制器充當主設備,外部設備充當從設備。從設備可使用 7 位或 10 位尋址方案進行尋址。
SPI 是一種三線總線接口,運行速率介于 1 Mb/s和 12 Mb/s 之間。SPI 總線配有專用的主設備輸出數據線、從設備輸出數據線和時鐘。微控制器同樣配置為主設備,使用“從設備選擇”線與從設備通信。每個與微控制器連接的從設備都需要一個專用輸出引腳,用于選擇它進行通信。不難想象,如果開發人員有很多想要連接的外部設備,他們可能很快就會用盡 I/O 線,然后選擇從設備。
例如,如果開發人員使用 STMicroelectronics 的 STM32L011D4P7,可供使用的 I/O 線共有 11 條。僅 SPI 數據和時鐘就需要三條 I/O 線,剩下的八條線除了與從設備通信,還需要執行系統所需的所有其他功能。雖然這完全可以滿足許多應用的要求,但某些時候,設計人員仍可能需要對 I/O 進行擴展。
一般情況下,經驗法則非常簡單:添加以下功能時使用 I2C 總線:
- I/O
- PWM
- EEPROM
- 看門狗定時器
- SPI 總線應該用于增加諸如為 SD 卡提供高速存儲器訪問等功能。
- 擴展通用 I/O
- 有相當多的集成電路可支持通過 I2C 接口來擴展輸入和輸出。以下是一些有趣的示例:
- Texas Instruments 的 TCA9534PWR
- NXP Semiconductors 的 PCA8574
- Semtech Corporation 的 SX1520I087TRT
PCA8574 是一款特別有趣的器件,因為它只包含一個用于執行輸入和輸出的寄存器。單個寄存器極大地精簡了配置器件以及讀寫引腳所需的軟件數量(圖 2)。微控制器通過 I2C 與 PCA8574 通信,并根據 A0 至 A2 引腳的配置方式對此器件進行尋址。這一特性增加了設計的靈活性,因此開發人員可以為 PCA8574 選擇從設備地址,并且可在一個設計中使用多個從設備地址。
圖 2:NXP 的 PCA8574 是一款準雙向 8 位 I/O I2C 擴展器。該擴展器只有一個 I2C 寄存器可供讀寫,從而在其引腳上執行 I/O 功能,因此是一款非常簡單、精巧的器件。(圖片來源:NXP Semiconductors)
默認情況下,P0 至 P7 在上電時配置為輸入。讀取單個內部寄存器時將為器件上的各個引腳指定狀態,無論該引腳配置為輸入還是輸出。PCA8574 允許引腳同時用作輸入和輸出,因此對寄存器的寫入也會設置相應的位輸出。
輸出驅動由微弱的內部電阻器上拉,該電阻器很容易因輸入值而過載。如果任何一個輸入狀態發生變化,INT 引腳將切換為低電平,讓微控制器知道輸入狀態發生了變化。然后,微控制器可以調用 I2C 來讀取新值。
擴展 PWM
PWM 擴展器是一款非常有用的擴展器件。該器件在驅動 LED 時特別有用。當微控制器未執行任何操作時,可將其設為休眠模式,此時 PWM 擴展器可負責驅動 LED 狀態。
關于如何使用 PWM 擴展器的完美范例經常出現在 RGB 按鈕電路中,該電路可使用 E-Switch 的 PV6F240SSG RGB 按鈕或 Schurter Electronic Components 的 3-101-399 SPST RGB 按鈕(圖 3)。
Schurter 的 RGB 按鈕在 SPST 按鈕周圍配有紅綠藍 LED,可允許開發人員創建亮色圖案。這些類型的應用非常適合 PWM 擴展芯片。
Maxim Integrated 的 MAX7315 便是一款適用于 I2C 接口的 PWM 擴展芯片。MAX7315 配有 8 個 PWM 端口,并具有 LED 強度控制功能,這樣可以輕松涵蓋驅動 RGB 開關所需的 3 個通道,使得單個器件能夠驅動若干開關和一些獨立的 LED。此外,MAX7315 還有第 9 個端口,可以用作轉換檢測中斷或通用輸出。
MAX7315 I2C 接口比 NXP 的 PCA8574 稍微復雜一些,因為它包含多個寄存器。因此,開發人員必須尋址從設備,提供其有興趣讀取或寫入的存儲器地址,然后執行寫入或讀取。MAX7315 的存儲器映射如圖 4 所示。
圖 4:MAX7315 PWM 控制器配有 8 個輸出端口,其中包括 LED 強度功能。該器件的寄存器映射非常簡單,允許輕松訪問高級 PWM 功能。(圖片來源:Maxim Integrated)
MAX7315 的寄存器映射非常簡單,允許輕松訪問高級 PWM 功能。
配有 WDT、EEPROM 和 PWM 的組合型擴展器
如圖所示,I2C 總線 I/O 擴展器在用作獨立器件時可能非常強大。也就是說,這種擴展器只包含諸如 I/O 或 PWM 等特定功能。例如 Cypress Semiconductor 的 CY8C9520A 多端口 I/O 擴展器,這類擴展器在一個 IC 封裝中包含了多個外設擴展。CY8C9520A 共有三種擴展形式:20 位、40 位或 60 位擴展。然后可將這些引腳配置為輸入、輸出或 PWM(圖 5)。
圖 5:Cypress Semiconductor 的 CY8C9520 是一款配有 EEPROM 的 20 位、40 位或 60 位 I/O 擴展器。該擴展器允許將擴展引腳配置為輸入、輸出或 PWM。(圖片來源:Cypress Semiconductor)
除 I/O 擴展外,CY8C9520 還配有 EEPROM,可用于存儲重要的應用設置(如序列號)以及其他重要的配置參數。
仔細查看圖 5,您會看到 GPort 2 上的 WD6 引腳。該引腳是一個看門狗定時器輸出引腳,可在微控制器無法通信時用于復位微控制器,以及操控 CY8C9529 看門狗??撮T狗設置是完全可配置的,并且可用于為應用程序代碼增加額外的穩健性。
擴展微控制器功能的技巧和訣竅
目前有許多技術可幫助擴展微控制器的功能。以下是一些有幫助的技巧和訣竅:
使用 I2C 連接外部設備。該接口只需兩個引腳,并且支持多個從設備。
在將某個零件設計成硬件之前,先購買一個開發板,或將芯片焊接到擴展板上,測試其能否滿足您的系統需求。
使用 I2C 總線工具與擴展器件連接,并了解其工作情況,這樣可大幅提升軟件的開發速度。
在軟件開發過程中,使用總線分析器監視與外部設備的通信,最大限度縮短調試時間。
如果可能,選擇配有外部看門狗定時器的器件,這可以作為一種工具,為系統設計增加穩健性。
在連接片外存儲器獲取數據(非配置數據)時,請使用 SPI 等高速接口。
如果設備返回否定應答 (NAK) 信號,或者總線受到拖累,請確保微控制器的 I2C 驅動程序可以處理此類問題。對于這些驅動程序來說,在收到意外響應時忽略錯誤并進入無限循環的情況并不罕見。
結論
當設計進展到微控制器無法繼續提供更多 I/O 時,開發人員無需將現有的設計推倒重來。相反,他們可以使用外設芯片,以便為系統增加額外的功能。
評論
查看更多