如何設計微控制器電路

九月 28, 2016
Facebook
Twitter
嵌入式微控制器所需要的電路設計是個相當龐大的工程。對進階的微控制器而言,光是資料表和技術文件就可以長達好幾百頁。
在開始設計電路前,最好可以先畫出專題中所有主要元件的運作流程圖,包含所有和微控制器之間有介面的周邊裝置。

ARM Cortex-M微控制器

本文將聚焦在導入ARM Cortex-M微控制器所需的電路設計考量。ARM Cortex-M微控制器有不同晶片製造商供應的不同版本。
具有32位元架構的ARM Cortex-M和典型的8位元微控制器相比特別適合密集與計算強度高的工作。如果有需要更大記憶體容量空間或為未來的擴充需求而能簡化系統平台轉移的應用,32位元微控制器也具有優勢。
我們要討論的ARM Cortex-M微控制器是ST Microelectronics出品的STM32家族;更精確地說,我們會聚焦在STM32F4系列
然而,STM32家族其實包含很多機型,例如超低功耗的STM32L系列和效能高於及低於STM32F4版本的系列。效能最高的版本是STM32F7,每秒能夠執行10億個指令。在效能最低的機型裡則有每秒只執行2600萬個指令的STM32L0。
請參考下方圖1裡本文所根據的STM32F4微控制器的電路圖。
图片

圖 1. 點選以放大圖片。

電源設計

電路的供電是硬體設計最重要的環節之一;不要等到設計的後期才決定供電和接地的配置。
微控制器使用的電流由多重因素決定,例如工作電壓、時脈頻率,和輸入/輸出腳位的負載。
MCU上每個電源VDD腳位旁應該要有盡可能接近的位置安排1uF和100nF陶瓷電容器(例如圖1的C7和C8)來提供電源解耦。另外應加裝4.7uF陶瓷電容器(圖1中C1)在接近供應VDD的主要電路佈線上IC的位置。
具有類比數位轉換器(ADC)的微控制器通常也有獨立的電源(VDDA)和接地腳位(VSSA)專供類比訊號使用。這些腳位需特別避免雜訊。
VDDA腳位應有1uF和10nF陶瓷電容器(圖1中C10、C11),位置盡可能接近VDDA腳位。在多數情況下,我發現最好在VDDA腳位也加裝一個電感器(圖1中L1),形成LC低通濾波器來提供更穩定的類比電壓。
如果你的電源電壓高於微控制器的輸入電壓上限,則通常需要降壓型線性穩壓器。舉例來說,德州儀器出品的TPS795xx有特別低雜訊的特性,並且可以供應高達500mA的電流。
如果你的電源電壓明顯高於微控制器所需的電壓,則降壓型開關穩壓器會是比較好的選擇。當輸入電壓明顯高於輸出電壓時,線性穩壓器會浪費太多電力。
然而,通常能對開關穩壓器的輸出電壓用線性穩壓器進行次穩壓還是最好,這是因為線性穩壓器提供的電壓雜訊低很多。

時鐘

STM32F4可以內部或外部的系統時鐘執行。啟動時使用的系統時鐘是內部時脈(16 MHz),在系統起始化後可以透過軟體選取外部時脈來源。
STM32F4上的時鐘腳位可以驅動一個外部4到26 MHz 的石英晶體(參見圖1中X1)或可使用一個最高50 MHz的外部時鐘來源。
晶體的配置上必須嚴格遵守資料表上的指示。一般而言,佈線要短,而晶體上的負載電容要和晶體製造商建議的數值相同。

GPIO

微控制器上的通用輸入輸出(GPIO)腳位可程式化,且可以透過軟體設定為輸入或輸出。
舉例來說,圖1中的S1是和一個被程式化為輸入的GPIO腳位相連的按鈕。STM32提供內建的上拉電阻器,所以這個按鈕不需要加裝外部的上拉電阻元件。此例的GPIO輸出用來驅動LED。
多數的GPIO腳位亦具有其他功能,而晶片上的各種周邊元件就是透過這些多功能腳位和外界聯繫。
並非所有內部功能都能透過每個GPIO腳位使用,而且有嚴格的腳位對應要遵守,所以選擇要使用哪些腳位時務必參考資料表。
GPIO腳位可以用來驅動各種負載,而多數的腳位可以供應或承受最高25mA的電流。然而一般而言使用外部驅動電路來減輕微控制器GPIO驅動負載是較好的設計。可以參考圖1中MN1驅動LED的例子。
STM32每個腳位都有額定的電流上限,也有所有GPIO腳位電流總和的上限。

連接周邊元件

STM32透過UART、I2C、SPI和USB等介面來提供序列訊號連接。
舉例來說,在圖1裡有一個溫度感應器(U2 – LM75BDP)透過I2C匯流排連接到微控制器。I2C匯流排上需要兩個上拉電阻器(R2、R3)連接汲極開路驅動器。
對於多數低速感測器這類的應用而言,我偏好使用I2C做為序列協定,因為它只用兩條電線來進行通訊。另外,和需要額外晶片選擇工作埠來處理每個周邊元件的SPI不同的是I2C使用單一的位址。
圖1裡的SPI匯流排連接到Invensense出品的MPU-9250九軸動作感測器。MPU-9250包含一個三軸加速度計、一個三軸陀螺儀和一個三軸磁力儀。

編程連接器

STM32F4提供兩種系統內程式編輯(ISP)介面:序列線除錯(SWD)和JTAG。STM32較低價的版本只提供SWD介面。SWD和JTAG是微控制器最常採用的兩種編程介面。

結論

在本文中我們討論了微控制器的電路設計,並針對能夠讀取輸入按鈕、驅動LED、和I2C溫度感應器以及SPI動作感應器通訊的STM32F4進行介紹。歡迎參考我的「電子產品開發終極指南(Ultimate Guide on How to Develop a New Electronic Product)」所討論開發新的電子產品需注意的更多細節。
(譯:屠建明)
原文
Social media & sharing icons powered by UltimatelySocial