Silicon Labs微控制器產品經理 Evan Schulz
?
輕松三步添加USB功能
Silicon Labs微控制器產品經理 Evan Schulz
對于當今的系統設計人員來說,通過一種快速且容易的方法把嵌入式系統連接到計算機已經成為系統設計的必要條件。而能使嵌入式應用與計算機通信的最常見方法是采用通用串行總線(USB),幾乎可以在每一臺臺式電腦、筆記本電腦和平板電腦上發現通用串行總線。隨著USB的普及,嵌入式開發人員面臨著學習挑戰,即如何使用USB協議以及如何把它集成到系統中。問題在于,USB通信協議是復雜的,并且使用通用微控制器(MCU)實現USB設計是費時和具有挑戰性的。少數半導體廠商提供了具有固定功能的通信橋接器,旨在通過消除USB設計相關的復雜性來簡化添加USB功能的設計難度。
關于這種通信接口產品的一個例子就是Silicon Labs的CP2130 USB轉SPI橋接器,它通過使用通用MCU上的串行外設接口(SPI)使能USB連接。圖1顯示了這種通信橋接器是如何與嵌入式系統連接的。除了USB轉SPI橋接器,下面是一些支持其他接口的通信橋接器:
① USB轉1 UART、2 UART、4 UART。
② USB轉SMBus/I2C。
③ USB轉I2S。

圖1 系統級USB主機與MCU主機連接示意圖
面向USB通信的嵌入式系統分成兩種類型:使用USB更新原有設計或者在新設計中添加USB功能。
對于任何一種類型,開發人員只要遵循三個簡單步驟,就可以很快使USB通信,而且不需要開發人員具有USB專業知識:
① 確定MCU主機上所提供的通信外設;
② 使用評估套件和跳線構建原型設計;
③ 使用通信橋接器創建定制的原理圖和PCB圖。
此外,開發人員能夠構建應用定制的器件和驅動程序。現在,讓我們來仔細看看每一個具體步驟,并探討這些步驟中幾種設計選擇的利弊。
無論是升級原有設計,還是優化全新設計,開發人員都必須明確主機MCU可用的通信外設。如果是原有設計方案,開發人員應當尋找主機MCU上的空閑外設。如果沒有,開發人員可以使用可尋址協議,例如SMBus/I2C。如果是全新設計,開發人員可以選擇主機MCU去匹配預見要遵循的通信協議。例如,如果SPI通信是預見要滿足的協議,開發人員應該選擇一個具有空閑SPI接口的主機MCU。當選擇一個通信外設時,考慮應用所需的最大通信速率也是十分重要的。如果有大數據需要高速傳輸,那么SPI或UART是最好的選擇。如果傳輸速率不重要,而具有仲裁機制的多設備總線連接才是重要的,那么SMBus/I2C是最好的選擇,因為它僅僅需要2個引腳。
除了選擇通信外設,對于可用的驅動程序選項的選擇也是很重要的。最人性化的選擇是人機接口設備(HID)類通信橋接器,它不需要安裝驅動程序,HID類設備使用一般操作系統中內置的驅動程序,它只需將設備插入USB口即可使用。其他驅動程序選項包括虛擬COM端口(VCP)驅動程序、WinUSB/LibUSB驅動程序和供應商定制的驅動程序。所有這些選項都需要安裝驅動程序,并且通常能夠比HID類產品獲得更高的吞吐量。
在接下來的步驟中,開發人員能夠使用通信橋接評估套件去構建一個原型設計,這個原型設計可以使用跳線來連接評估套件和主機MCU。此原型設計用于驗證兩個設備之間的通信,并且作為原理圖設計的起始點。一般情況下,評估板上將有明確清晰的標識,幫助開發人員決定需要連接哪些跳線,而不用翻閱技術文檔。
在圖2中,將CP2130評估板連接到一個正在運行SPI Slave示例代碼的C8051F850單片機板上。在這個示例中,具有SPI信號測試點的原有設計被用來替代C8051F850 單片機卡。SPI頭已經連接到MCU開發板的特定端口引腳上,而且這些引腳已連接到內部SPI外設。

圖2 總線供電的原型系統示例
現在硬件已經準備就緒,可以為你的USB主機準備安裝演示應用和驅動程序。所有需要的軟件通常能夠在器件制造商網站上找到,這樣的做法值得推薦,因為它通常包含最新的軟件和文檔。CP2130橋接設備在使用前需要安裝驅動程序,并且還要使用一個評估軟件工具用于USB通信,這兩個軟件包含在CP2130評估套件提供的軟件包中。完成安裝后,評估軟件工具能夠通過USB讀寫C8051F850 MCU上的SPI數據。這時可以運行幾個讀寫測試程序來驗證操作。
原型設計有助于為最終設計創建原理圖。首先,找到為通信橋接器評估套件提供的原理圖,CP2130 USB轉SPI橋接控制器的原理圖可以在CP2130-EK用戶指南中找到,而用戶指南可從網絡鏈接www.silabs.com/USB-Bridge下載。
評估套件原理圖可以顯示對于USB操作哪些組件是必要的。需要特別提及的是,一些通信橋接器集成功能消除了外部器件、減少了BOM成本、簡化了設計。現在檢查你的通信橋接器是否支持下列特性:
◆ 免晶振USB操作:你的通信橋接器能夠支持無需片外晶振的USB通信嗎?
◆ 片內5 V調壓器:橋接器能夠通過無需片外器件的USB連接給系統供電嗎?輸出電流最大是多少(這個特性主要用于USB總線供電的應用)?
◆ 片內可編程存儲器:橋接器設備包含允許通過USB定制的集成的可編程存儲器嗎?
◆ 小封裝選項:更小的封裝有助于開發人員創建更小、更便攜的解決方案。
選擇包含這些特性的通信橋接器將大大簡化設計的復雜度。接下來,把CP2130器件和主機MCU之間的SPI信號(SCLK、MOSI、MISO、SS、GND)原型連接轉換成原理圖連接。開始PCB設計之前,通過網絡鏈接www.silabs.com/contactsupport發送原理圖給Silicon Labs技術支持團隊,他們將免費檢查審核你的原理圖配置是否正確。技術支持團隊將檢查你的原理圖并在需要時提供修改建議。現在板子可以發給加工廠生產了。如果產品設計需要定制化的器件和驅動程序,請繼續閱讀。如果不需要,開始通信吧!
假使你想要創建定制器件和驅動程序,通信橋接器和驅動程序通常具有出廠時自帶的供應商特定的標準USB描述符和字符串。USB供應商ID(VID )、產品ID(PID )描述符和串行字符串被操作系統用于匹配連接設備的驅動程序。因此,強烈推薦描述符和字符串組合具有唯一性,以避免當兩個具有相同信息的設備連接到同一系統時產生錯誤。創建定制的驅動程序和設計使得開發人員可以使用產品特定的字符串和設備描述符。圖3顯示的是當安裝非定制CP2130器件時,在Windows上呈現的默認字符串。

圖3 CP2130安裝過程中在窗口顯示的默認字符串
為了成功定制一款產品,通信橋接器和相關驅動(如果需要)必須更新。通信橋接器有相關的圖形化定制工具,這款工具允許通過USB連接實現定制化。橋接器制造商通常也提供一個驅動程序定制工具,指導你一步一步地創建一個定制化的驅動程序。定制橋接器以后,除非相關定制的驅動程序已經被安裝到主機上,否則這款橋接器不能與主機系統進行通信。
① 一旦驅動程序以任何方式被定制了,操作系統供應商可能需要額外的認證過程。例如Microsoft的Windows硬件質量實驗室(WHQL)測試。Windows 7(x64)和Windows 8(x64)不允許安裝未認證過的驅動程序。其他Windows版本允許安裝,但是將為用戶顯示警告信息。應用筆記220——USB驅動定制詳細介紹了如何定制驅動程序;而應用筆記807——重新認證定制的Windows HCK驅動程序包詳細介紹了如何為Windows重新認證定制過的驅動程序。兩個應用筆記可以從網絡鏈接www.silabs.com/interface-appnotes下載。
② 對于定制的通信橋接器的量產,制造商能夠為用于最終系統的器件提供預編程服務,從而不需要圖形化定制工具。
③ 在銷售產品給客戶時,產品包括一條USB線纜,以及定制驅動程序所需的Flash存儲盤、CD/DVD或者網絡下載鏈接地址。
雖然三步法添加USB功能的主要目標是使