前面三篇文章我們簡單介紹了一下最常用的三種序列匯流排SPI、I2C、UART,總體來講序列匯流排需要的管腳少、PCB設計的時候連線少,非常方便MCU和外設尤其是感測器之間的連線,相對於並行匯流排有很大的優勢,可以說這三種匯流排已經是任何一款MCU必有的外設連線方式了。
這三種匯流排也各有千秋,I2C看似簡約但用起來不簡單,主要是要讓2根訊號線處理那麼多複雜的場景並能夠保證資料的傳輸,背後支撐的硬體機制以及協議是不簡單的,用FPGA自己寫一個I2C的控制邏輯會非常的燒腦;SPI比I2C多出用於片選的訊號線,因此邏輯設計上要簡單很多,但帶來的劣勢就是每多連線一個外設,就要多出一條連線線;UART是一種非同步的序列連線方式,沒有了時鐘線的連線就像I2C一樣硬體連線起來非常簡單,但使用的時候需要收、發兩端的波特率設定在共同的頻率,偏差要很小,否則就會出現傳輸錯誤。
今天我們就透過一些生動的動圖來對我們三種匯流排再次進行一次深刻的認識。
我們先看看SPI的傳輸(同步、序列)
我們再看看I2C的傳輸(同步、序列、2線):
最常用的除錯通道 UART(非同步、序列):
紅外控制也是基於非同步序列的方式:
序列通訊離不開資料的並/串轉換和串/並轉換:
還有一些與我們相關的有趣的動畫:
比如PWM的產生和應用:
通訊中常用到的模擬調製訊號:
相位調製:
方波訊號的邊沿抖動: