24小時聯系電話:18217114652、13661815404
中文
技術專題
微控制器簡介
微控制器簡介
幾乎每個電子產品都需要某種“大腦”來控制各種產品功能。但是什么“大腦”最適合您的特定硬件產品?
首先確定您是否需要微控制器單元 (MCU)或微處理器單元 (MPU)。幾乎所有的電子產品都使用這兩種處理器芯片中的一種,有些產品兩者都使用。
您的產品是否復雜,需要處理大量數據?您的產品是否需要 Android 或 Linux 等操作系統?如果是這樣,那么您可能需要使用微處理器。
或者您的產品是否適度簡單,不需要高速處理或操作系統?然后,您很可能會使用微控制器。微控制器是集成在單個微芯片上的相當簡單的計算機。
該單芯片將包含中央處理單元 (CPU)、內存和其他外圍設備。與微處理器相比,將所有內容集成在單個芯片上大大簡化了微控制器的設計。
您通常會看到用于描述具有高度集成度的微芯片(例如微控制器)的片上系統 (SoC)一詞。
下表總結了微控制器和微處理器之間的主要區別:
微控制器 |
微處理器 |
|
設計復雜性 |
低的 |
高的 |
時鐘速度 |
慢 |
快速地 |
操作系統 |
不 |
是的 |
處理速度 |
低的 |
高的 |
能量消耗 |
低的 |
高的 |
記憶 |
小/內部 |
大型/外部 |
輸入/輸出引腳 |
是的 |
不 |
位數 |
8-32 位 |
32-64 位 |
成本 |
低的 |
高的 |
表 1 – 微控制器與微處理器的比較
Arduino是最流行的基于微控制器的開發套件。大多數可用的 Arduino 模型都基于 8 位 Atmel AVR 微控制器。
圖 1 – Arduino 開發套件
Raspberry Pi是基于微處理器的開發平臺的一個示例。它是一個完整的計算機系統,運行先進的 Linux 操作系統。您可以連接鍵盤和顯示器以像使用任何其他計算機一樣使用 Raspberry Pi。
圖 2 – Raspberry Pi 開發平臺
設計基于定制微處理器的電路比使用微控制器設計復雜許多倍。微處理器將具有位于微處理器芯片本身外部的高速 RAM 存儲器。這需要對連接這些高速信號的 PCB 進行非常仔細的布局。
微處理器以更高的時鐘速度運行,這增加了很多復雜性。例如,Raspberry Pi 3 基于運行頻率為 1200 MHz 的 64 位四核處理器,而大多數 Arduino 版本基于運行頻率僅為 16 MHz 的 8 位處理器
由于它們的高速時鐘,微處理器更有可能導致不受歡迎的射頻傳輸問題,從而使 FCC 認證復雜化。
由于這些原因,如果您的產品需要微處理器,那么最好使用預先認證的模塊解決方案。它們被稱為CPU 模塊或SOM(模塊上的系統)。
另一方面,大多數基于微控制器的設計都足夠簡單,可以使用片上系統 (SoC)解決方案。
在大多數情況下,微控制器 SoC 解決方案的成本將比微處理器 SoM 解決方案低一個數量級。一個微控制器 SoC 的成本可以低至一美元,而一個超高性能微處理器 SoM(例如,Nvidia Jetson TX2)將花費數百美元。
常見的微控制器特性
在為您的產品選擇微控制器之前,您應該創建一個框圖,顯示整個系統所需的所有各種功能??驁D是我所說的產品預設計的一部分。我總是建議從預設計開始,這樣您就可以在開始設計實際原理圖之前看到更大的圖景。
什么需要連接到微控制器?他們需要什么通信協議?需要多少個通用輸入/輸出 (GPIO) 引腳?需要多少個通信端口?
圖 3 – 框圖示例
在選擇微控制器之前,您需要這些信息。有數以千計的微控制器可用。您不想選擇一款性能或功能超過您的產品所需的產品。這樣做只會不必要地使您的產品設計復雜化。
另一方面,您也不希望用太有限的微控制器來限制自己。您可能希望在未來添加新的產品功能,因此您需要一個微控制器,以便在必要時為您提供一點成長空間。
讓我們更詳細地了解微控制器上最常見的功能和外設:
內存類型
RAM 和閃存已內置于大多數微控制器中。RAM 內存用于臨時數據存儲。RAM 被認為是易失性存儲器,因為一旦電源關閉它就會丟失其內容。
FLASH 是非易失性存儲器。即使關閉電源,它仍會保留其內容。FLASH 主要用于存儲程序(稱為固件)。
EEPROM(電可擦除只讀存儲器)也是非易失性存儲器,但它通常用于存儲少量數據,例如配置和可變狀態。EEPROM 的優點是允許按字節擦除,而閃存僅允許擦除整個字節塊或頁面。
數字輸入/輸出 (GPIO)
微控制器上的數字輸入和輸出稱為通用輸入輸出或 GPIO。GPIO 引腳是用于輸入或輸出的邏輯電平引腳(高或低)。它們通常可以驅動高達幾十毫安的負載。
請記住,通常需要某種外部驅動電路來減輕驅動要求。此外,加在一起的所有引腳必須低于允許的最大總電流。
在決定使用哪些引腳時,請務必查閱數據表,因為某些引腳上沒有許多內部功能。您還必須遵守特定的映射限制。
映射是指設置哪些引腳服務于哪些功能。微控制器上的大多數引腳具有多種可能的功能,可為硬件設計人員提供最大的靈活性。
模擬輸入和輸出
除了數字 I/O,大多數微控制器還可以精確測量模擬電壓,有些還具有輸出精確模擬電壓的能力。
模擬電壓由微控制器使用稱為模數轉換器 (ADC) 的嵌入式專用電路進行測量。
從微控制器輸出模擬電壓有兩種方法。最精確但更復雜的方法是使用數模轉換器 (DAC) 電路。有許多微控制器包含用于此目的的內置 DAC,但許多微控制器沒有。
大多數微控制器上可用的第二種方法是使用脈寬調制 (PWM) 發生器。PWM 是一種在高電平和低電平之間振蕩的數字信號。微控制器能夠控制由固件程序確定的該信號高的時間百分比。
PWM 信號然后可以通過一個低通濾波器將其轉換為模擬電壓。通過控制 PWM 信號高與低的時間百分比,您可以準確地控制濾波器輸出側的模擬電壓電平。
通用異步接收器發送器 (UART)
今天仍在微控制器中使用的最古老的串行通信方法稱為 UART。UART 自 1970 年代初就已存在。顧名思義,UART是一種異步協議,意味著沒有時鐘信號來同步信號時序。UART 的最簡單形式僅使用兩條信號線:接收 (RX) 和發送 (TX)。
同步通信支持更快的數據傳輸速率。異步通信必須向數據添加同步位。發送這些額外的同步位會增加開銷,因此會降低有效的數據傳輸速率。
同步通信的缺點是它需要額外的時鐘信號線。它還需要主/從配置,因為主設備必須是生成時鐘信號的設備。
就個人而言,出于顯而易見的原因,我不喜歡術語master和slave。令我驚訝的是,這些術語仍然普遍使用。但是,主/從確實是描述此類通信的常用工程術語。
UART 通常與其他標準(例如 RS-232 或 RS-485)結合使用,以實現更遠距離的外部串行通信。一些微控制器也提供稱為 USART 的同步 UART。
串行外設接口 (SPI)
SPI 是一種同步通信協議。它通常比 UART 或 I2C 接口快得多。SPI 是一種全雙工通信標準,這意味著它可以同時發送和接收數據。與 UART 一樣,SPI 僅用于短距離通信,這在大多數情況下意味著同一 PCB 上的芯片之間。
SPI 由 4 條線組成,或者實際上是 3 條線加上每個外圍設備的一條線。SPI 信號是 MISO(主入從出)和 MOSI(主出從入)、SCLK(串行時鐘)和 SS(從選擇)??梢詫⒍鄠€外圍設備連接到微控制器的 SPI 端口,但一次只能選擇一個設備。
SPI 的主要優點是它的數據傳輸速度更快。SPI 的主要缺點是需要 4 條信號線,而 UART 和 I2C 只需要 2 條信號線。
內部集成電路 (I2C)
I2C 是一種同步串行總線協議,用于同一板上組件之間的串行通信。I2C 的主要優點是它只需要兩根線,是同步的,并且與 UART 或 SPI 不同,I2C 是一種總線協議。
成為真正的總線意味著 I2C 允許多個設備連接到相同的兩條線。I2C 與 SPI 的從選擇信號不同,它為每個設備使用唯一的地址。這一事實極大地簡化了板載信號路由。
與 SPI 一樣,I2C 使用時鐘信號來同步通信。但是,與 SPI 不同的是,I2C 只是半雙工,因此它對數據輸入和數據輸出使用單個信號。I2C 不能同時在兩個方向發送數據。
這種簡單性的代價是 I2C 比 SPI 慢得多。因此 I2C 主要用于連接不需要高數據傳輸速度的兩個組件。它特別適用于連接傳感器(相對較慢)。
通用串行總線 (USB)
您以前顯然聽說過 USB,因為這種串行通信協議是如此通用。USB 是大多數微控制器上可用的最快的串行通信協議。它通常用于在外圍設備之間傳輸大量數據。
USB 有多種速度可供選擇,因此請確保您選擇的微控制器具有 USB 端口,該端口具有您的應用所需的數據傳輸速率。
與我們討論過的用于短距離板載通信的其他串行協議不同,USB 設計用于與外部外圍設備進行長距離通信。
USB 是一種主/從協議。主機(主)可以向設備(從)傳輸數據,主機可以從設備讀取數據。關鍵是主機總是發起通信,外圍設備只響應。
由于主機啟動和管理所有通信,因此 USB 主機比 USB 設備更復雜。提供內置 USB 通信的微控制器只能用作外圍設備,而 PC 通常用作主機。這種嚴格定義的主/從關系要求任何 USB 電纜不對稱,兩端具有不同的連接器以識別主機。
稱為 USB On-The-Go (OTG) 的更新標準允許主/主機和從/設備交換角色。因此,帶有 USB OTG 端口的微控制器既可以用作 USB 設備,也可以用作 USB 主機。只有更高端的微控制器才會提供 USB OTG。
控制器局域網 (CAN)
CAN 是一種串行通信標準,僅用于汽車應用。
如果您的產品不適用于汽車,那么您的微控制器上將不需要 CAN 端口。只有部分微控制器包含 CAN 端口。
在電路編程 (ISP)
對微控制器進行編程有兩種廣泛的方法:電路內或電路外。
通過在線編程 (ISP),微控制器在插入完整電路后進行編程。這幾乎總是開發過程中的理想方法,因為它允許您編程和快速測試所有內容。JTAG 和 SWD 是最常用的 ISP 協議。
另一種選擇是在將微控制器芯片插入整個系統之前對其進行單獨編程。這在開發過程中很少有意義,但有時對于生產來說是可取的。
無線接口
您的產品是否需要無線功能?您可以購買包括藍牙、ZigBee、Wi-Fi 等在內的專用微控制器。藍牙低功耗微控制器尤其常見。
在大多數情況下,最好從任何無線功能的預認證模塊開始。無線設計可能很復雜,需要更昂貴的 FCC 認證。因此,模塊是一種風險較低、價格更實惠的選擇。
微控制器內核
讓我們仔細看看一些比較知名的微控制器內核:
ARM Cortex-M
ARM Cortex-M 微控制器功能強大、廣受歡迎且價格實惠。事實上,Cortex-M 微控制器在今天可能比任何其他微控制器更多地用于產品中。
ARM實際上并不制造微控制器,而是將其架構授權給其他芯片制造商。
ARM Cortex-M 是一種 32 位架構,比一般的 8 位微控制器要強大得多。事實上,Cortex-M 實現的處理速度可與某些微處理器相媲美。當您需要大量內存時,需要 32 位微控制器。
基于 ARM Cortex-M 架構的微控制器可從眾多公司獲得多種版本,包括 ST Microelectronics、Silicon Labs、Microchip Technology、Freescale、NXP、Cypress、Maxim Integrated、Analog Devices 和 Texas Instruments。
我最喜歡的 ARM Cortex-M 微控制器系列是ST Microelectronics的 STM32 系列。該STM32線是巨大的,可以細分為STM32F STM32L和系列。STM32F 系列優先考慮性能和/或成本,而 STM32L 系列優先考慮便攜式應用的低功耗。
圖 4 – 基于 STM32 微控制器的開發平臺
性能最高的模型是 STM32F7,它每秒能夠處理 10 億條命令!這種處理速度接近許多微處理器的處理速度。另一方面,STM32L0 每秒僅處理 2600 萬條命令,但耗電量明顯低于 STM32F7。
最后,與一些公司(如高通)不同的是,意法半導體為初創公司和小公司提供了出色的技術支持。他們甚至會提供使用他們產品的任何電路設計的設計審查。
8051
英特爾在 1980 年開發了 8 位 8051 微控制器,它仍然存在,并且應用相當廣泛。至少有八家不同的半導體制造商銷售 8051 的現代版本。
圖 5 – 8051 微控制器示例
在大多數情況下,8051 僅適用于對成本非常敏感的最簡單類型的產品。
愛特梅爾 AVR
大多數版本的 Arduino 使用來自 Atmel(現在由 Microchip Technology 擁有)的 AVR 系列微控制器。這可以更輕松地從 Arduino 過渡到 Atmel AVR 微控制器。Atmel AVR微控制器有 8 位和 32 位兩種版本。
圖 6 – Atmel AVR 微控制器
Atmel AVR 是一款非常適合創客和愛好者的控制器系列,特別是考慮到它們為 Arduino 提供動力。
PIC
Microchip Technology生產名為 PIC 的流行微控制器系列。它們可根據您的需要提供多種選項,包括 8 位、16 位和 32 位版本。您可以從無數的引腳、封裝樣式和片上外設組合中進行選擇。
圖 7 – Microchip 的 PIC 微控制器系列有多種版本
與 Atmel AVR 系列微控制器一樣,PIC 控制器非常受電子愛好者和制造商的歡迎。如果您的產品需要低成本的 8 位或 16 位,甚至 32 位控制器,那么 PIC 微控制器可能是一個不錯的低成本選擇。
設計電源
電源電路是硬件設計中最關鍵的部分之一。嘗試盡早定義您的接地和電源布局。
微控制器的電流消耗由時鐘頻率、工作電壓和 I/O 引腳上的負載決定。
為確保微控制器具有良好、干凈的電源電壓,您必須在其電源引腳旁邊放置去耦電容器。
包含模擬輸入和/或模擬輸出的微控制器將具有專門用于模擬的不同電源和接地引腳。對于這些模擬電源引腳來說,徹底清除所有噪聲尤為重要,因為任何噪聲都會降低精度。與模擬信號相比,數字信號對噪聲的容忍度更高。
包括一個與模擬電源引腳串聯的電感器以創建 LC(電感器-電容器)濾波器通常是一個好主意。它將濾除電源線上的任何高頻噪聲。
如果您的電源電壓高于微控制器的最大電源電壓,那么您將需要使用降壓穩壓器。如果電壓差很小,那么線性穩壓器可能是最好的。
例如,如果您的產品使用3.7V鋰電池,而微控制器最高只能工作到3V,那么低壓差線性穩壓器(通常稱為LDO)是最佳選擇。
但是,如果電源電壓明顯高于微控制器的最大電源電壓,那么您應該使用開關穩壓器(也稱為降壓轉換器)來降低電壓。
例如,如果您的產品使用 12VDC 電源,而您的微控制器只能處理高達 3V 的電壓,那么您可能需要使用開關穩壓器
如果線性穩壓器的輸入電源電壓遠高于輸出電壓,則它們的效率非常低,并且會以熱量的形式耗散過多的功率。
請注意,在使用開關穩壓器時,最好使用線性穩壓器對開關穩壓器的輸出電壓進行再調節。線性穩壓器提供更干凈的電壓,沒有噪聲和開關瞬變。在微控制器上使用模擬 I/O 時,線性穩壓器尤其重要。
時鐘
任何微控制器(或微處理器)都需要精確的時鐘進行計時。大多數微控制器可以使用外部或內部時鐘。對于精確計時應用,外部晶振是最佳選擇。
對于不需要精確時序的應用,使用內部時鐘將簡化電路設計。
在為晶振進行 PCB 布局時,請務必仔細遵循數據表中指定的布局指南。走線應盡可能短,晶體上的負載電容必須符合制造商的建議。