在本節中,我們將了解MCU如何使用串行通信與外部外圍設備進行通信。MCU充當嵌入式設備的“大腦”,而外圍設備則充當“手和腳”。這意味著MCU必須與這些單元中的每一個進行通信。例如,考慮我們如何連接傳感器。MCU的內置GPIO(通用輸入/輸出)端口,在本系列的第一部分中解釋過,可用于將8條信號線與傳感器連接,使傳感器能夠一次發送8位數據——最多使用8個GPIO數據引腳.這種類型的傳輸稱為并行傳輸,因為一個完整字節的數據一次沿并行線路傳輸。(參見圖1,左)但使用8條線連接到單個傳感器通常是一種資源浪費。
有沒有辦法用更少的行來完成同樣的事情?
當然有。我們可以通過一條數據線一次發送一個位。因為這些位現在是串行發送的,所以我們稱之為串行通信。(參見圖1,右側)但是請注意,MCU使用并行通信進行其內部處理和通信。這意味著MCU還必須處理必要的轉換:從傳感器接收到的數據的“串行到并行”轉換,以及發送到傳感器的數據的“并行到串行”轉換。
總結一下:假設我們希望發送單個文本字符,這需要我們發送一個八位字符類型的值。如果使用并行傳輸,則每一位需要一根數據線。對于串行并行,我們通過同一條線路一個接一個地發送8個數據位。
顯然,串行通信需要更少的引腳和電線。在當今世界,大多數MCU到外設的連接都是串行的。串行模式不僅用于與開關和來自ON/OFF傳感器的通信,還用于GPIO輸出軟件生成的電機驅動信號、LED閃爍信號等。
內置UART實現輕松串行通信
根據不同的電氣特性和不同協議的要求,串行通信可以通過多種方式實現。最簡單的實現,只需要一根電線——被稱為“啟動-停止同步通信”。在與無線LAN模塊和驅動器監視器通信時,通常使用此模式。
在起停同步通信中,數據以字符單位1發送。出于控制目的,在每組的開頭放置一個起始位,在結尾放置一個停止位。(參見圖2)這消除了通過使用單獨的時鐘信號線來控制傳輸時序的需要,正如其他常見串行模式所要求的那樣,例如I2C(“I平方C”)和SPI(串行并行接口)。為了幫助確保傳輸準確性,啟動/停止數據集還可以包括奇偶校驗位。啟動-停止同步通信由稱為“UART”(通用異步接收器/發送器)的組件處理。