隨著科技的演進, 在單晶片微控制器及 SoC 的領域中, SPI 及 I2C 這二種串列 (序列) 介面變得十分常見. 這二者與主機間通訊用的非同步串列通訊埠 RS-232 (UART) 非常不一樣
- 二個都是同步傳輸介面, 主要是用於 CPU 和週邊晶片之間.
- SPI 及 I2C 二者設計的主要目的在於減少 CPU 和週邊晶片之間的接腳數.
- SPI 一般需要 4 條接線 (至少三條), 而 I2C 則只要二條線, 這和早期常用的並列匯流排動輒十數條接線有著明顯的差異.
- SPI 的硬體結構簡單而且傳輸速度快, 一般是 5M/10M/20Mbps 或是更快 (可以到 200Mbps), I2C 的傳輸速度則只有 100Kbps/400Kbps/1Mbps(/3.4Mbps/單向5Mbps).
- SPI 是全雙工, I2C 則是半雙工.
- SPI 使用硬體線路來指定 slave 晶片, I2C 則在傳送的第一個位元組上指定 (7bit位址).
- SPI 不提供交握機制, 無法確認 slave 晶片是否有跟上. I2C 則有雙向的確認機制.
本篇介紹的是 SPI 介面
SPI 簡介
SPI 是 Serial Peripheral Interface 的縮寫, 中文意思是串列週邊介面, 該介面是由 Motorola 公司設計發展的高速同步串列介面, 原先是應用在其 68xx 系列的 8 位元處理器上 (1985 年首次出現在 M68HC11 處理器上, 並提供了完整之說明文件), 用以連接 ADC, DAC, EEPROM, 通訊傳輸 IC...等週邊晶片. 由於具備有低接腳數, 結構單純, 傳輸速度快, 簡單易用...等特性, 目前已經成為業界慣用標準: 不只是單晶片微控制器上有, 許多新的 SoC 晶片直接就支援多組 SPI 介面, 甚至普及到連模組化的產品 (如: 手機用的 LCD 模組 (SDI 介面), 相機模組) 及 3C 產品 (如: 數位相機用的記憶卡) 也都是使用 SPI 介面.