討論典型的微控制器I/O要求,并介紹一些合適的外部擴展器件,然后說明如何使用這些片外資源來增加通用輸入和輸出、存儲器存儲、脈沖寬度調制 (PWM) 甚至看門狗定時器功能。
選擇擴展接口
微控制器配有多個不同的片載外設接口,可用于與外部設備通信。根據(jù)微控制器的不同,這些接口可能包括(僅列舉幾例):
●串行外設接口 (SPI)
●內部集成電路 (I2C) 總線
●通用串行總線 (USB)
●通用異步接收器/發(fā)送器(UART)
●控制器區(qū)域網(wǎng)絡 (CAN)
●Wi-Fi
其中最適合與外部擴展設備通信的接口是I2C和SPI。
I2C是一種兩線總線,傳統(tǒng)的運行速率為100千位/秒 (kb/s) 或400kb/s,但也有一些可支持1Mb/s或更快速度的高速設備。其中一條線是專用的時鐘引腳,而另一條線則用于主設備和從設備之間的雙向通信。通常情況下,微控制器充當主設備,外部設備充當從設備。從設備可使用7位或10位尋址方案進行尋址。
SPI是一種三線總線接口,運行速率介于1Mb/s和12Mb/s之間。SPI總線配有專用的主設備輸出數(shù)據(jù)線、從設備輸出數(shù)據(jù)線和時鐘。微控制器同樣配置為主設備,使用“從設備選擇”線與從設備通信。每個與微控制器連接的從設備都需要一個專用輸出引腳,用于選擇它進行通信。不難想象,如果開發(fā)人員有很多想要連接的外部設備,他們可能很快就會用盡 I/O 線,然后選擇從設備。
例如,如果開發(fā)人員使用STMicroelectronics的STM32L011D4P7,可供使用的I/O線共有11條(圖1)。僅SPI數(shù)據(jù)和時鐘就需要三條I/O線,剩下的八條線除了與從設備通信,還需要執(zhí)行系統(tǒng)所需的所有其他功能。雖然這完全可以滿足許多應用的要求,但某些時候,設計人員仍可能需要對I/O進行擴展。
圖1:STM32L011D4P7是一款Arm® Cortex®-M0+處理器,其I/O引腳數(shù)限制為11個(圖片來源:STMicroelectronics)
一般情況下,經(jīng)驗法則非常簡單:添加以下功能時使用I2C總線:
●I/O
●PWM
●EEPROM
●看門狗定時器
SPI 總線應該用于增加諸如為SD卡提供高速存儲器訪問等功能。
擴展通用I/O
有相當多的集成電路可支持通過I2C接口來擴展輸入和輸出。以下是一些有趣的示例:
●Texas Instruments的TCA9534PWR
●NXP Semiconductors的PCA8574
●Semtech Corporation的SX1520I087TRT
·
PCA8574是一款特別有趣的器件,因為它只包含一個用于執(zhí)行輸入和輸出的寄存器。單個寄存器極大地精簡了配置器件以及讀寫引腳所需的軟件數(shù)量(圖2)。微控制器通過I2C與PCA8574通信,并根據(jù)A0至A2引腳的配置方式對此器件進行尋址。這一特性增加了設計的靈活性,因此開發(fā)人員可以為PCA8574選擇從設備地址,并且可在一個設計中使用多個從設備地址。
圖2:NXP的PCA8574是一款準雙向8位I/O I2C擴展器。該擴展器只有一個I2C寄存器可供讀寫,從而在其引腳上執(zhí)行I/O功能,因此是一款非常簡單、精巧的器件。(圖片來源:NXP Semiconductors)
默認情況下,P0至P7在上電時配置為輸入。讀取單個內部寄存器時將為器件上的各個引腳指定狀態(tài),無論該引腳配置為輸入還是輸出。PCA8574允許引腳同時用作輸入和輸出,因此對寄存器的寫入也會設置相應的位輸出。
輸出驅動由微弱的內部電阻器上拉,該電阻器很容易因輸入值而過載。如果任何一個輸入狀態(tài)發(fā)生變化,INT引腳將切換為低電平,讓微控制器知道輸入狀態(tài)發(fā)生了變化。然后,微控制器可以調用I2C來讀取新值。
拓展PWM
PWM擴展器是一款非常有用的擴展器件。該器件在驅動LED時特別有用。當微控制器未執(zhí)行任何操作時,可將其設為休眠模式,此時PWM擴展器可負責驅動LED狀態(tài)。
關于如何使用PWM擴展器的完美范例經(jīng)常出現(xiàn)在RGB按鈕電路中,該電路可使用E-Switch的PV6F240SSG RGB按鈕。
圖 3:E-Switch的 PV6F240SSG RGB 按鈕
Maxim Integrated的MAX7315便是一款適用于I2C接口的PWM擴展芯片。MAX7315配有8個PWM端口,并具有LED強度控制功能,這樣可以輕松涵蓋驅動RGB開關所需的3個通道,使得單個器件能夠驅動若干開關和一些獨立的LED。此外,MAX7315還有第9個端口,可以用作轉換檢測中斷或通用輸出。
MAX7315 I2C接口比NXP的PCA8574稍微復雜一些,因為它包含多個寄存器。因此,開發(fā)人員必須尋址從設備,提供其有興趣讀取或寫入的存儲器地址,然后執(zhí)行寫入或讀取。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,可用于存儲重要的應用設置(如序列號)以及其他重要的配置參數(shù)。
仔細查看圖5,您會看到GPort 2上的WD6引腳。該引腳是一個看門狗定時器輸出引腳,可在微控制器無法通信時用于復位微控制器,以及操控CY8C9529看門狗??撮T狗設置是完全可配置的,并且可用于為應用程序代碼增加額外的穩(wěn)健性。
擴展微控制器功能的技巧和訣竅
目前有許多技術可幫助擴展微控制器的功能。以下是一些有幫助的技巧和訣竅:
●使用I2C連接外部設備。該接口只需兩個引腳,并且支持多個從設備。
●在將某個零件設計成硬件之前,先購買一個開發(fā)板,或將芯片焊接到擴展板上,測試其能否滿足您的系統(tǒng)需求。
●使用I2C總線工具與擴展器件連接,并了解其工作情況,這樣可大幅提升軟件的開發(fā)速度。
●在軟件開發(fā)過程中,使用總線分析器監(jiān)視與外部設備的通信,最大限度縮短調試時間。
●如果可能,選擇配有外部看門狗定時器的器件,這可以作為一種工具,為系統(tǒng)設計增加穩(wěn)健性。
●在連接片外存儲器獲取數(shù)據(jù)(非配置數(shù)據(jù))時,請使用SPI等高速接口。
●如果設備返回否定應答 (NAK) 信號,或者總線受到拖累,請確保微控制器的I2C驅動程序可以處理此類問題。對于這些驅動程序來說,在收到意外響應時忽略錯誤并進入無限循環(huán)的情況并不罕見。