各種串列埠SPI&UART&I2C&CAN&RS232比較!
阿新 • • 發佈:2019-01-30
各種串列埠SPI&UART&I2C&CAN&RS232比較!
I2C,SPI,UART 和CAN 的區別
SPI--Serial Peripheral Interface,(Serial Peripheral Interface:序列外設介面)序列外圍裝置介面,是Motorola 公司推出的一種同步序列通訊方式,是一種三線同步匯流排,因其硬
件功能很強,與 SPI 有關的軟體就相當簡單,使CPU 有更多的時間處理其他事務。
I2C--INTER-IC(INTER IC BUS:意為IC 之間匯流排)序列匯流排的縮寫,是PHILIPS 公司推出
的晶片間序列傳輸匯流排。它以1 根序列資料線(SDA)和1 根序列時鐘線(SCL)實 現了
雙工的同步資料傳輸。具有介面線少,控制方式簡化,器件封裝形式小,通訊速率較高等優
點。在主從通訊中,可以有多個I2C 匯流排器件同時接到I2C 匯流排 上,通過地址來識別通訊
物件。
能用於替代標準的並行匯流排,能連線的各種積體電路和功能模組。I2C 是多主控匯流排,所以
任何一個裝置都能像主控器一樣工作,並控制匯流排。總線上每一個裝置 都有一個獨一無二
的地址,根據裝置它們自己的能力,它們可以作為發射器或接收器工作。多路微控制器能在
同一個I2C 總線上共存。
最主要的優點是其簡單性和有效性。它支援多主控(multimastering), 其中任何能夠進行
傳送和接收的裝置都可以成為主匯流排。一個主控能夠控制訊號的傳輸和時鐘頻率。當然,在
任何時間點上只能有一個主控。
UART(Universal Asynchronous Receiver Transmitter:通用非同步收發器):單端,遠距離
傳輸。大多數計算機包含兩個基於RS232 的串列埠。串列埠同時也是儀器儀表裝置通用的通訊
協議;很 多GPIB 相容的裝置也帶有RS-232 口。同時,串列埠通訊協議也可以用於獲取遠
程採集裝置的資料。串列埠通訊的概念非常簡單,串列埠按位(bit)傳送和接 收位元組。儘管比
按位元組(byte)的並行通訊慢,但是串列埠可以在使用一根線傳送資料的同時用另一根線接
收資料。它很簡單並且能夠實現遠距離通訊。比如 IEEE488 定義並行通行狀態時,規定設
備線總常不得超過20 米,並且任意兩個裝置間的長度不得超過2 米;而對於串列埠而言,長
度可達1200 米。
區別在電氣訊號線上:
SPI 匯流排由三條訊號線組成:序列時鐘(SCLK)、序列資料輸出(SDO)、序列資料輸入
(SDI)。 SPI 匯流排可以實現 多個SPI 裝置互相連線。提供SPI 序列時鐘的SPI 裝置為SPI
主機或主裝置(Master),其他裝置為SPI 從機或從裝置(Slave)。主從裝置 間可以實現全雙
工通訊,當有多個從裝置時,還可以增加一條從裝置選擇線。
如果用通用IO 口模擬SPI 匯流排,必須要有一個輸出口(SDO),一個輸入口(SDI),另一個口
則視實現的裝置型別而定,如果要實現主從裝置,則需輸入輸出口,若只實現主裝置,則需
輸出口即可,若只實現從裝置,則只需輸入口即可。
I2C 匯流排是雙向、兩線(SCL、SDA)、序列、多主控(multi-master)介面標準,具有
匯流排仲裁機制,非常適合在器件之間進行近距離、非經常性的資料通訊。在它的協議體系中,
傳輸資料時都會帶上目的裝置的裝置地址,因此可以實現裝置組網。
如果用通用IO 口模擬I2C 匯流排,並實現雙向傳輸,則需一個輸入輸出口(SDA),另外還
需一個輸出口(SCL)。(注:I2C 資料瞭解得比較少,這裡的描述可能很不完備)
UART 匯流排是非同步串列埠,因此一般比前兩種同步串列埠的結構要複雜很多,一般由波特
率產栺器(產栺的波特率等於傳輸波特率的16 倍)、UART 接收器、UART 傳送器組成,硬
件上由兩根線,一根用於傳送,一根用於接收。
顯然,如果用通用IO 口模擬UART 匯流排,則需一個輸入口,一個輸出口。
從以上很明顯可以看出,SPI 和UART 可以實現全雙工,但I2C 不行;
第四,看看牛人們的意見吧!
A:I2C 線更少,我覺得比UART、SPI 更為強大,但是技術上也更加麻煩些,因為I2C
需要有雙向IO 的支援,而且使用上拉電阻,我覺得抗干擾能力較 弱,一般用於同一板卡
上晶片之間的通訊,較少用於遠距離通訊。SPI 實現要簡單一些,UART 需要固定的波特率,
就是說兩位資料的間隔要相等,而SPI 則 無所謂,因為它是有時鐘的協議。
B:I2C 的速度比SPI 慢一點,協議比SPI 複雜一點,但是連線也比標準的SPI 要少。
SPI 是一種允許一個主裝置啟動一個與從裝置的同步通訊的協議,從而完成資料的交換。
也就是SPI 是一種規定好的通訊方式。這種通訊方式的優點是佔用埠較少, 一般4 根就
夠基本通訊了。同時傳輸速度也很高。一般來說要求主裝置要有SPI 控制器(但可用模擬方
式),就可以與基於SPI 的晶片通訊了。
SPI 的通訊原理很簡單,它需要至少4 根線,事實上3 根也可以。也是所有基於SPI 的
裝置共有的,它們是SDI(資料輸入),SDO(資料輸出),SCK(時 鍾),CS(片選)。
其中CS 是控制晶片是否被選中的,也就是說只有片選訊號為預先規定的使能訊號時(高電
位或低電位),對此晶片的操作才有效。這就允許 在同一總線上連線多個SPI 裝置成為可
能。
接下來就負責通訊的3 根線了。通訊是通過資料交換完成的,這裡先要知道SPI 是序列
通訊協議,也就是說資料是一位一位的傳輸的。這就是SCK 時鐘線存在的 原 因,由SCK
提供時鐘脈衝,SDI,SDO 則基於此脈衝完成資料傳輸。資料輸出通過SDO 線,資料在時
鐘上沿或下沿時改變,在緊接著的下沿或上沿被讀取。 完成一位資料傳輸,輸入也使用同
樣原理。這樣,在至少8 次時鐘訊號的改變(上沿和下沿為一次),就可以完成8 位資料
的傳輸。
要注意的是,SCK 訊號線只由主裝置控制,從裝置不能控制訊號線。同樣,在一個基於
SPI 的裝置中,至少有一個主控裝置。
這樣傳輸的特點:這樣的傳輸方式有一個優點,與普通的序列通訊不同,普通的序列通
訊一次連續傳送至少8 位資料,而SPI 允許資料一位一位的傳送,甚至允許 暫停,因為SCK
時鐘線由主控裝置控制,當沒有時鐘跳變時,從裝置不採集或傳送資料。也就是說,主裝置
通過對SCK 時鐘線的控制可以完成對通訊的控制。
SPI 還是一個數據交換協議:因為SPI 的資料輸入和輸出線獨立,所以允許同時完成數
據的輸入和輸出。
不同的SPI 裝置的實現方式不盡相同,主要是資料改變和採集的時間不同,在時鐘訊號
上沿或下沿採集有不同定義,具體請參考相關器件的文件。
I2C
• 只要求兩條匯流排線路:一條序列資料線SDA 一條序列時鐘線SCL
• 每個連線到匯流排的器件都可以通過唯一的地址和一直存在的簡單的主機從機關係軟體設
定地址主機可以作為主機發送器或主機接收器
• 它是一個真正的多主機匯流排如果兩個或更多主機同時初始化資料傳輸可以通過沖突檢測
和仲裁,防止資料被破壞
• 序列的8 位雙向資料傳輸位速率在標準模式下可達100kbit/s 快速模式下可達
400kbit/s 高速模式下可達3.4Mbit/s
• 片上的濾波器可以濾去匯流排資料線上的毛刺波保證資料完整
• 連線到相同匯流排的IC 數量只受到匯流排的最大電容400pF 限制
UART
UART 匯流排是非同步串列埠,因此一般比前兩種同步串列埠的結構要複雜很多,一般由波特率產栺
器(產栺的波特率等於傳輸波特率的16 倍)、UART 接收器、UART 傳送器組成,硬體上由
兩根線,一根用於傳送,一根用於接收。
顯然,如果用通用IO 口模擬UART 匯流排,則需一個輸入口,一個輸出口。
UART 常用於控制計算機與序列裝置的晶片。有一點要注意的是,它提供了RS-232C 資料
終端裝置介面,這樣計算機就可以和調變解調器或其它使用RS-232C 介面的序列裝置通訊
了。
明顯可以看出,SPI 和UART 可以實現全雙工,但I2C 不行。
什麼是CAN 匯流排?
CAN 全稱為Controller Area Network,即控制器區域網,由德國Bosch 公司最先提出,
是國際上應用最廣泛的現場匯流排之一。CAN 是一種多主方式的序列通訊匯流排,基本設計規
範要求有高的位速率、高抗電磁干擾性,而且要能夠檢測出匯流排的任何錯誤。當訊號傳輸距
離達10Km 時CAN 仍可提供高達50Kbit/s 的資料傳輸速率。CAN 具有十分優越的特點:
A、較低的成本與極高的匯流排利用率;
B、 資料傳輸距離可長達10Km,傳輸速率可高達1Mbit/s;
C、可靠的錯誤處理和檢錯機制,傳送的資訊遭到破壞後可自動重發;
D、節點在錯誤嚴重的情況下具有自動退出匯流排的功能;
E、報文不包含源地址或目標地址僅用標誌符來指示功能資訊和優先順序資訊;
由於人為、自然、其它外界環境的影響和人們對公交系統的安全可靠性、真實、實時性的追
求,使得我們對通訊方式,通訊裝置有了更高的要求,基於CAN 匯流排的網路則成為我們最
佳的選擇
CAN 匯流排
現場匯流排是當今自動化領域技術發展的熱點之一,被譽為自動化領域的計算機區域網。它的
出現為分散式控制系統實現各節點之間實時、可靠的資料通訊提供了強有 力的技術支援。
CAN(Controller Area Network)屬於現場匯流排的範疇,它是一種有效支援分散式控制或實
時控制的序列通訊網路。較之目前許多RS-485 基於R 線構建的分散式控制系統而 言, 基
於CAN 匯流排的分散式控制系統在以下方面具有明顯的優越性:
首先,CAN 控制器工作於多主方式,網路中的各節點都可根據匯流排訪問優先權(取決於
報文識別符號)採用無損結構的逐位仲裁的方式競爭向匯流排傳送資料,且 CAN 協議廢除了站
地址編碼,而代之以對通訊資料進行編碼,這可使不同的節點同時接收到相同的資料,這些
特點使得CAN 匯流排構成的網路各節點之間的資料通 信實時性強,並且容易構成冗餘結構,
提高系統的可靠性和系統的靈活性。而利用RS-485 只能構成主從式結構系統,通訊方式也
只能以主站輪詢的方式進行, 系統的實時性、可靠性較差;
其次,CAN 匯流排通過CAN 控制器介面晶片82C250 的兩個輸出端CANH 和CANL 與
物理匯流排相連,而CANH 端的狀態只能是高電平或懸浮狀 態,CANL 端只能是低電平或懸
浮狀態。這就保證不會出現象在RS-485 網路中,當系統有錯誤,出現多節點同時向匯流排發
送資料時,導致匯流排呈現短路,從 而損壞某些節點的現象。而且CAN 節點在錯誤嚴重的
情況下具有自動關閉輸出功能,以使總線上其他節點的操作不受影響,從而保證不會出現象
在網路中,因個別 節點出現問題,使得匯流排處於“死鎖”狀態。
而且,CAN 具有的完善的通訊協議可由CAN 控制器晶片及其介面晶片來實現,從而大
大降低系統開發難度,縮短了開發週期,這些是隻僅僅有電氣協議的RS- 485 所無法比擬
的。另外,與其它現場匯流排比較而言,CAN 匯流排是具有通訊速率高、容易實現、且價效比
高等諸多特點的一種已形成國際標準的現場匯流排。這些 也是目前 CAN 匯流排應用於眾多領
域,具有強勁的市場競爭力的重要原因。
CAN (Controller Area Network)即控制器區域網絡,屬於工業現場匯流排的範疇。與一
般的通訊匯流排相比,CAN 匯流排的資料通訊具有突出的可靠性、實時性和靈活性。由於其良
好 的效能及獨特的設計,CAN 匯流排越來越受到人們的重視。它在汽車領域上的應用是最廣
泛的,世界上一些著名的汽車製造廠商,如BENZ(賓士)、BMW(寶 馬)、PORSCHE(保時
捷)、ROLLS-ROYCE(勞斯萊斯)和JAGUAR(美洲豹)等都採用了CAN 匯流排來實現汽車內部
控制系統與各檢測和執 行機構間的資料通訊。同時,由於CAN 匯流排本身的特點,其應用
範圍目前已不再侷限於汽車行業,而向自動控制、航空航天、航海、過程工業、機械工業、
紡織機 械、農用機械、機器人、數控機床、醫療器械及感測器等領域發展。CAN 已經形成
國際標準,並已被公認為幾種最有前途的現場匯流排之一。其典型的應用協議有: SAE
J1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA 2000 等。
什麼是CAN 匯流排?
CAN 意為Controller Area Network 的縮寫,意為控制區域網路。是國際上流行的現場總
線中的一種。是一種特別適合於組建互連的裝置網路系統或子系統。
2. CAN 匯流排特點?
l CAN 是到目前為止為數不多的有國際標準的現場匯流排
l CAN 通訊距離最大是10 公里(設速率為5Kbps),或最大通訊速率為1Mbps(設通訊距離
為40 米)。
CAN 總線上的節點數可達110 個。通訊介質可在雙絞線,同軸電纜,光纖中選擇。
CAN 採用非破壞性的匯流排仲裁技術,當多個節點同時傳送資料時,優先順序低的節點會
主動退出傳送,高優先順序的節點可繼續傳送,節省匯流排仲裁時間。
CAN 是多主方式工作,網上的任一節點均可在任意時刻主動地向網路上其他節點發送
資訊。
CAN 採用報文識別符識別網路上的節點,從而把節點分成不同的優先順序,高優先順序的節點
享有傳送報文的優先權。
報文是短幀結構,短的傳送時間使其受干擾概率低,CAN 有很好的效驗機制,這些都保證
了CAN 通訊的可靠性。
-------------------------------------------------------------------------------
SPI 通常有SCK 時鐘,STB 片選,DATA 資料訊號三個訊號。 I2C 通常有 SDA 資料和SCL
時鐘兩個訊號。
SPI:Motorola 推出的同步序列通訊方式,三線同步匯流排,硬體強大,軟體相對簡單,cpu
有更多時間處理其他事務。SCK 時鐘,STB 片選,DATA 資料訊號三訊號。多了一個片選
訊號
I2C:PHilips 推出的序列匯流排,一根SDA 序列資料線,一根序列時鐘線SCL。按照地址來計
算的
-------------------------------------------------------------------------------
UART
Universival Asychronous Receiver/Transmitter(通用非同步序列口),UART 是一種較為
通用的資料傳輸的方法(即Start Bit+Data+Check+StopBit),而COM 口中Rx、Tx
的資料格式即為UART。UART 和RS232 是兩種非同步資料傳輸標準.計算機 中的COM1 和
COM2 都是RS232 序列通訊標準介面。當Uart 介面連到PC 機上時,需要接RS232 電平
轉換電路。
UART 使用傳送資料線TXD 和接收資料線RXD 來傳送資料,接收和傳送可以單獨進行也可
以同時進行。它傳送資料的格式有嚴格的規定,每個資料以相同的位 串形式傳送,每個串
行資料由起始位,資料位,奇偶校驗位和停止位組成。從起始位到停止位結束的時間稱為一
幀(frame),即一個字元的完整通訊格式。
SPI
Serial Perheral Interface,是一種全雙工同步序列介面標準,序列通訊的雙方用四根線進
行通訊,這四根連線分別是:片選訊號,I/O 時鐘,序列輸入,序列輸出,這 種介面的特
點是快速,高效,並且操作起來比I2C 要簡單一些,接線也比較簡單,TLC2543 提供SPI
介面。
I2C
Inter-Integrated Circuit(積體電路之間), I2C 匯流排是一種由PHILIPS 公司開發的兩線
式雙向序列匯流排,用於連線微控制器及其外圍裝置。I2C 匯流排產栺於在80 年代,最初為音
頻和視訊裝置開 發,如今主要在伺服器管理中使用,其中包括單個元件狀態的通訊。例如
管理員可對各個元件進行查詢,以管理系統的配置或掌握元件的功能狀態,如電源和系統風
扇。可隨時監控記憶體、硬碟、網路、系統溫度等多個引數,增加了系統的安全性,方便了管
理。I2C 屬於兩線式序列匯流排,它由資料線SDA 和時鐘SCL 構成的 序列匯流排,可傳送和
接收資料。在CPU 與被控IC 之間、IC 與IC 之間進行雙向傳送,最高傳送速率100kbps。
各種被控制電路均並聯在這條總線上,但 就像電話機一樣只有撥通各自的號碼才能工作,
所以每個電路和模組都有唯一的地址,在資訊的傳輸過程中,IC2 總線上並接的每一模組電
路既是主控器(或被控 器),又是傳送器(或接收器),這取決於它所要完成的功能。CPU
發出的控制訊號分為地址碼和控制量兩部分,地址碼用來選址,即接通需要控制的電路,確
定 控制的種類;控制量決定該調整的類別(如對比度、亮度等)及需要調整的量。這樣,
各控制電路雖然掛在同一條總線上,卻彼此獨立,互不相關。
CAN
Controller Area Network(區域網路控制器),CAN 全稱為Controller Area Network,
即控制器區域網,由德國Bosch 公司最先提出,是國際上應用最廣泛的現場匯流排之一。CAN
是一種多主方式的序列通訊匯流排,基本設計規範要求有高的位速率、高抗電磁干擾性,而且
要能夠檢測出匯流排的任何錯誤。當訊號傳輸距離達10Km 時CAN 仍可提供高達50Kbit/s
的資料傳輸速率。現場匯流排是當今自動化領域技術發展的熱點之一,被譽為自動化領域的計
算機區域網。它的出現為分散式控制系統實現各節點之間實時、可靠的數 據通訊提供了強
有力的技術支援。CAN 屬於現場匯流排的範疇,它是一種有效支援分散式控制或實時控制的
序列通訊網路。較之目前許多RS-485 基於R 線構建 的分散式控制系統而言, 基於CAN
匯流排的分散式控制系統具有明顯的優越性。
RS232 與RS485,422 的基本區別
一、RS232:
一般用於計算機9 針串列埠或25 針串列埠。
1、電平定義:
RS-232c 電平有時也成為串列埠電平,採用對地負邏輯表示,
邏輯1:-15V ~ -3V
邏輯0:+3V ~ +15V
2、引腳定義圖:
圖一 串列埠引腳定義圖
3、訊號電平轉換
(1)、232 <-> TTL
平時應用中,在微控制器與計算機通訊時,時常應用MAX232,它是雙通道的訊號轉換晶片,
使訊號在TTL 和232 訊號間相互轉換。
下面是典型的串列埠連線圖:
圖二 MAX232 典型連線圖
4、通訊方式
RS232 可做到雙向傳輸,全雙工通訊,最高傳輸速率 20kbps
二、RS485 與RS422:
RS485 與RS422 均採用差分平衡傳輸的方式,所以他們的電平方式,一般採用A、B 引腳
的方式。
1、電平定義:
以U = A - B 的電壓值為劃分依據
傳送端:
邏輯1:+2V ~ +6V
邏輯0:-6V ~ -2V
接收端:
邏輯1:>= 200mv
邏輯0:<= -200mv
2、訊號電平轉換
(1)、485 <-> TTL
在微控制器設計系統中,常把訊號電平在TTL 與485 之間轉換,已獲得良好的傳輸質量,並
使MCU 更好的處理訊號。
下面是典型的RS485 晶片75LBC184 的連線圖:
圖三 75LBC184 典型連線圖
3、通訊方式
RS422 可做到單向傳輸,半雙工通訊,最高傳輸速率 10Mbps
RS485 可做到雙向傳輸,半雙工通訊, 最高傳輸速率 10Mbps
SPI I2C 具體工作原理
1.關與匯流排:
1.1SPI 匯流排:
SPI:高速同步序列口。3~4 線介面,收發獨立、可同步進行.
SPI(Serial Peripheral Interface--序列外設介面)匯流排系統是一種同步序列外設介面,它可
以使MCU 與各種外圍裝置以序列方式進行通訊以交換資訊。外圍設定FLASHRAM、網路
控制器、LCD 顯示驅動器、A/D 轉換器和MCU 等。SPI 匯流排系統可直接與各個廠家栺產的
多種標準外圍器件直接介面,該介面一般使用4 條線:序列時鐘線(SCK)、主機輸入/從
機輸出資料線MISO、主機輸出/從機輸入資料線MOST 和低電平有效的從機選擇線SS(有
的SPI 介面晶片帶有中斷訊號線INT 或INT、有的SPI 介面晶片沒有主機輸出/從機輸入數
據線MOSI)。
II
SPI: Software Process Improvement. 軟體過程改進。是軟體企業專案過程質量的改進,
CMM,ISO9000-3 說的就是這個。
一 SPI 協議概括
SPI,是英語Serial Peripheral interface 的縮寫,顧名思義就是序列外圍裝置介面。是
Motorola 首先在其MC68HCXX 系列處理器上定義的。SPI 介面主要應用在 EEPROM,
FLASH,實時時鐘,AD 轉換器,還有數字訊號處理器和數字訊號解碼器之間。SPI,是一
種高速的,全雙工,同步的通訊匯流排,並且在晶片的管腳上只佔用四根線,節約了晶片的管
腳,同時為PCB 的佈局上節省空間,提供方便,正是出於這種簡單易用的特性,現在越來
越多的晶片集成了這種通訊協議,比如AT91RM9200.
SPI 的通訊原理很簡單,它以主從方式工作,這種模式通常有一個主裝置和一個或多個從設
備,需要至少4 根線,事實上3 根也可以(單向傳輸時)。也是所有基於SPI 的裝置共有
的,它們是SDI(資料輸入),SDO(資料輸出),SCK(時鐘),CS(片選)。
(1)SDO – 主裝置資料輸出,從裝置資料輸入
(2)SDI – 主裝置資料輸入,從裝置資料輸出
(3)SCLK – 時鐘訊號,由主裝置產栺
(4)CS – 從裝置使能訊號,由主裝置控制
其中CS 是控制晶片是否被選中的,也就是說只有片選訊號為預先規定的使能訊號時(高電
位或低電位),對此晶片的操作才有效。這就允許在同一總線上連線多個SPI 裝置成為可能。
接下來就負責通訊的3 根線了。通訊是通過資料交換完成的,這裡先要知道SPI 是序列通
訊協議,也就是說資料是一位一位的傳輸的。這就是SCK 時鐘線存在的原因,由SCK 提供
時鐘脈衝,SDI,SDO 則基於此脈衝完成資料傳輸。資料輸出通過 SDO 線,資料在時鐘上
升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位資料傳輸,輸入也使用
同樣原理。這樣,在至少8 次時鐘訊號的改變(上沿和下沿為一次),就可以完成8 位數
據的傳輸。
要注意的是,SCK 訊號線只由主裝置控制,從裝置不能控制訊號線。同樣,在一個基於SPI
的裝置中,至少有一個主控裝置。這樣傳輸的特點:這樣的傳輸方式有一個優點,與普通的
序列通訊不同,普通的序列通訊一次連續傳送至少8 位資料,而SPI 允許資料一位一位的
傳送,甚至允許暫停,因為SCK 時鐘線由主控裝置控制,當沒有時鐘跳變時,從裝置不採
集或傳送資料。也就是說,主裝置通過對SCK 時鐘線的控制可以完成對通訊的控制。SPI
還是一個數據交換協議:因為SPI 的資料輸入和輸出線獨立,所以允許同時完成資料的輸入
和輸出。不同的SPI 裝置的實現方式不盡相同,主要是資料改變和採集的時間不同,在時鐘
訊號上沿或下沿採集有不同定義,具體請參考相關器件的文件。
在點對點的通訊中,SPI 介面不需要進行定址操作,且為全雙工通訊,顯得簡單高效。在多
個從裝置的系統中,每個從裝置需要獨立的使能訊號,硬體上比I2C 系統要稍微複雜一些。
最後,SPI 介面的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到資料。
AT91RM9200 的SPI 介面主要由4 個引腳構成:SPICLK、MOSI、MISO 及 /SS,其中SPICLK
是整個SPI 匯流排的公用時鐘,MOSI、MISO 作為主機,從機的輸入輸出的標誌,MOSI 是
主機的輸出,從機的輸入,MISO 是主機的輸入,從機的輸出。/SS 是從機的標誌管腳,在
互相通訊的兩個SPI 匯流排的器件,/SS 管腳的電平低的是從機,相反/SS 管腳的電平高的是
主機。在一個SPI 通訊系統中,必須有主機。SPI 匯流排可以配置成單主單從,單主多從,互
為主從。
SPI 的片選可以擴充選擇16 個外設,這時PCS 輸出=NPCS,說NPCS0~3 接4-16 譯碼器,
這個譯碼器是需要外接4-16 譯碼器,譯碼器的輸入為NPCS0~3,輸出用於16 個外設的
選擇。
二 SPI 協議舉例
SPI 是一個環形匯流排結構,由ss(cs)、sck、sdi、sdo 構成,其時序其實很簡單,主要是
在sck 的控制下,兩個雙向移位暫存器進行資料交換。
假設下面的8 位暫存器裝的是待發送的資料10101010,上升沿傳送、下降沿接收、
高位先發送。
那麼第一個上升沿來的時候 資料將會是sdo=1;暫存器=0101010x。下降沿到來的
時候,sdi 上的電平將所存到暫存器中去,那麼這時暫存器=0101010sdi,這樣在 8 個時
鍾脈衝以後,兩個暫存器的內容互相交換一次。這樣就完成裡一個spi 時序。
舉例:
假設主機和從機初始化就緒:並且主機的sbuff=0xaa,從機的sbuff=0x55,下面將
分步對spi 的8 個時鐘週期的資料情況演示一遍:假設上升沿傳送資料
這樣就完成了兩個暫存器8 位的交換,上面的上表示上升沿、下表示下降沿,sdi、sdo 相
對於主機而言的。其中ss 引腳作為主機的時候,從機可以把它拉底被動選為從機,作為從
機的是時候,可以作為片選腳用。根據以上分析,一個完整的傳送週期是16 位,即兩個字
節,因為,首先主機要傳送命令過去,然後從機根據主機的命令準備資料,主機在下一個8
位時鐘週期才把資料讀回來。 SPI 匯流排是Motorola 公司推出的三線同步介面,同步
序列3 線方式進行通訊:一條時鐘線SCK,一條資料輸入線MOSI,一條資料輸出線MISO;
用於CPU 與各種外圍器件進行全雙工、同步序列通訊。SPI 主要特點有:可以同時發出和接
收序列資料;可以當作主機或從機工作;提供頻率可程式設計時鐘;傳送結束 中斷標誌;寫衝突保護;
匯流排競爭保護等。下圖示出SPI 匯流排工作的四種方式,其中使用的最為廣泛的是SPI0 和SPI3
方式 (實線表示):
SPI 匯流排四種工作方式 SPI 模組為了和外設進行資料交換,根據外設工作要求,其輸出串
行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協議沒有重大的影響。如
果 CPOL="0",串行同步時鐘的空閒狀態為低電平;如果CPOL=1,串行同步時鐘的空閒
狀態為高電平。時鐘相位(CPHA)能夠配置用於選擇兩種不同的傳輸協議之一進行資料傳
輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)資料被取樣;如果
CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)資料被取樣。SPI 主模組和與之
通訊的外裝置時鐘相位和極性應該一致。
SPI 匯流排包括1 根串行同步時鐘訊號線以及2 根資料線。
SPI 模組為了和外設進行資料交換,根據外設工作要求,其輸出串行同步時鐘極性和
相位可以進行配置,時鐘極性(CPOL)對傳輸協議沒有重大的影響。如果CPOL=0,序列
同步時鐘的空閒狀態為低電平;如果CPOL=1,串行同步時鐘的空閒狀態為高電平。時鐘
相位(CPHA)能夠配置用於選擇兩種不同的傳輸協議之一進行資料傳輸。如果CPHA=0,
在串行同步時鐘的第一個跳變沿(上升或下降)資料被取樣;如果CPHA=1,在串行同步
時鐘的第二個跳變沿(上升或下降)資料被取樣。SPI 主模組和與之通訊的外設音時鐘相位
和極性應該一致。SPI 介面時序如圖3、圖4 所示。
補充:
上文中最後一句話:SPI 主模組和與之通訊的外裝置時鐘相位和極性應該一致。個人理解這
句話有2 層意思:其一,主裝置SPI 時鐘和極性的配置應該由外設來決定;其二,二者的
配置應該保持一致,即主裝置的SDO 同從裝置的SDO 配置一致,主裝置的SDI 同從裝置
的SDI 配置一致。因為主從裝置是在SCLK 的控制下,同時傳送和接收資料,並通過2 個
雙向移位暫存器來交換資料。工作原理演示如下圖:
上升沿主機SDO 傳送資料1,同時從裝置SDO 傳送資料0;緊接著在SCLK 的下降沿的時
候從裝置的SDI 接收到了主機發送過來的資料1,同時主機也接收到了從裝置傳送過來的數
據0.
三 SPI 協議心得
SPI 介面時鐘配置心得:
在主裝置這邊配置SPI 介面時鐘的時候一定要弄清楚從裝置的時鐘要求,因為主裝置這邊的
時鐘極性和相位都是以從裝置為基準的。因此在時鐘極性的配置上一定要搞清楚從裝置是在
時鐘的上升沿還是下降沿接收資料,是在時鐘的下降沿還是上升沿輸出資料。但要注意的是,
由於主裝置的SDO 連線從裝置的SDI,從裝置的SDO 連線主裝置的SDI,從裝置SDI 接
收的資料是主裝置的SDO 傳送過來的,主裝置SDI 接收的資料是從裝置SDO 傳送過來的,
所以主裝置這邊SPI 時鐘極性的配置(即SDO 的配置)跟從裝置的SDI 接收資料的極性是
相反的,跟從裝置SDO 傳送資料的極性是相同的。下面這段話是Sychip Wlan8100
Module Spec 上說的,充分說明了時鐘極性是如何配置的:
The 81xx module will always input data bits at the rising edge of the clock, and the
host will always output data bits on the falling edge of the clock.
意思是:主裝置在時鐘的下降沿傳送資料,從裝置在時鐘的上升沿接收資料。因此主裝置這
邊SPI 時鐘極性應該配置為下降沿有效。
又如,下面這段話是摘自LCD Driver IC SSD1289:
SDI is shifted into 8-bit shift register on every rising edge of SCK in the order of
data bit 7, data bit 6 …… data bit 0.
意思是:從裝置SSD1289 在時鐘的上升沿接收資料,而且是按照從高位到地位的順序接收
資料的。因此主裝置的SPI 時鐘極性同樣應該配置為下降沿有效。
時鐘極性和相位配置正確後,資料才能夠被準確的傳送和接收。因此應該對照從裝置的SPI
介面時序或者Spec 文件說明來正確配置主裝置的時鐘
1.2 I2C(Inter-Integrated Circuit)匯流排是一種由PHILIPS 公司開發的兩線式序列匯流排,
用於連線微控制器及其外圍裝置。I2C 匯流排產栺於在80 年代,最初為音訊和視訊裝置開發,
如今主要在伺服器管理中使用,其中包括單個元件狀態的通訊。例如管理員可對各個元件進
行查詢,以管理系統的配置或掌握元件的功能狀態,如電源和系統風扇。可隨時監控記憶體、
硬碟、網路、系統溫度等多個引數,增加了系統的安全性,方便了管理。
1 I2C 匯流排特點
I2C 匯流排最主要的優點是其簡單性和有效性。由於介面直接在元件之上,因此I2C 匯流排佔用
的空間非常小,減少了電路板的空間和晶片管腳的數量,降低了互聯成本。匯流排的長度可高
達25 英尺,並且能夠以10Kbps 的最大傳輸速率支援40 個元件。I2C 匯流排的另一個優點
是,它支援多主控(multimastering), 其中任何能夠進行傳送和接收的裝置都可以成為主
匯流排。一個主控能夠控制訊號的傳輸和時鐘頻率。當然,在任何時間點上只能有一個主控。
2 I2C 匯流排工作原理
2.1 匯流排的構成及訊號型別
I2C 匯流排是由資料線SDA 和時鐘SCL 構成的序列匯流排,可傳送和接收資料。在CPU 與被
控IC 之間、IC 與IC 之間進行雙向傳送,最高傳送速率100kbps。各種被控制電路均並聯
在這條總線上,但就像電話機一樣只有撥通各自的號碼才能工作,所以每個電路和模組都有
唯一的地址,在資訊的傳輸過程中,I2C 總線上並接的每一模組電路既是主控器(或被控器),
又是傳送器(或接收器),這取決於它所要完成的功能。CPU 發出的控制訊號分為地址碼
和控制量兩部分,地址碼用來選址,即接通需要控制的電路,確定控制的種類;控制量決定
該調整的類別(如對比度、亮度等)及需要調整的量。這樣,各控制電路雖然掛在同一條總
線上,卻彼此獨立,互不相關。
I2C 匯流排在傳送資料過程中共有三種類型訊號, 它們分別是:開始訊號、結束訊號和應答
訊號。
開始訊號:SCL 為高電平時,SDA 由高電平向低電平跳變,開始傳送資料。
結束訊號:SCL 為高電平時,SDA 由低電平向高電平跳變,結束傳送資料。
應答訊號:接收資料的IC 在接收到8bit 資料後,向傳送資料的IC 發出特定的低電平脈衝,
表示已收到資料。CPU 向受控單元發出一個訊號後,等待受控單元發出一個應答訊號,CPU
接收到應答訊號後,根據實際情況作出是否繼續傳遞訊號的判斷。若未收到應答訊號,由判
斷為受控單元出現故障。
目前有很多半導體積體電路上都集成了I2C 介面。帶有I2C 介面的微控制器有:CYGNAL 的
C8051F0XX 系列,PHILIPSP87LPC7XX 系列,MICROCHIP 的PIC16C6XX 系列等。很多
外圍器件如儲存器、監控晶片等也提供I2C 介面。
3 匯流排基本操作
I2C 規程運用主/從雙向通訊。器件傳送資料到總線上,則定義為傳送器,器件接收資料則
定義為接收器。主器件和從器件都可以工作於接收和傳送狀態。 匯流排必須由主器件(通常
為微控制器)控制,主器件產栺序列時鐘(SCL)控制匯流排的傳輸方向,併產栺起始和停止
條件。SDA 線上的資料狀態僅在SCL 為低電平的期間才能改變,SCL 為高電平的期間,SDA
狀態的改變被用來表示起始和停止條件。
3.1 控制位元組
在起始條件之後,必須是器件的控制位元組,其中高四位為器件型別識別符(不同的晶片型別
有不同的定義,EEPROM 一般應為1010),接著三位為片選,最後一位為讀寫位,當為1
時為讀操作,為0 時為寫操作
3.2 寫操作
寫操作分為位元組寫和頁面寫兩種操作,對於頁面寫根據晶片的一次裝載的位元組不同有所不同。
關於頁面寫的地址、應答和資料傳送的時序
3.3 讀操作
讀操作有三種基本操作:當前地址讀、隨機讀和順序讀。圖4 給出的是順序讀的時序圖。
應當注意的是:最後一個讀操作的第9 個時鐘週期不是“不關心”。為了結束讀操作,主
機必須在第9 個週期間發出停止條件或者在第9 個時鐘週期內保持SDA 為高電平、然後發
出停止條件。
寫用寫(L)給出地址,然後用當前讀的模式讀出資料,返回NOACK 及STOP
STAR7bir 器件編號—WRITE(H 電平)-> 7bit ADDRESS->ack ->STAR7bir 器件編
號—read (L )->8bit 資料->noack-stop
順序隨機讀:就是制定地址讀之後在順序讀
STAR7bir 器件編號—WRITE(H 電平)-> 7bit ADDRESS->ack ->STAR7bir 器件編
號—read (L )->8bit 資料->ack-8bit 資料->ack….noack---STOP