CAN I2C SPI匯流排簡介

2021-07-24 09:55:22 字數 4297 閱讀 6492

一、spi匯流排說明

序列外圍裝置介面spi(serial peripheral inte***ce)匯流排技術是motorola公司推出的一種同步序列介面,motorola公司生產的絕大多數mcu(微控制器)都配有spi硬體介面,如68系列mcu。spi 用於cpu與各種外圍器件進行全雙工、同步序列通訊。spi可以同時發出和接收序列資料。它只需四條線就可以完成mcu與各種外圍器件的通訊,這四條線是:序列時鐘線(csk)、主機輸入/從機輸出資料線(miso)、主機輸出/從機輸入資料線(mosi)、低電平有效從機選擇線cs。這些外圍器件可以是簡單的ttl移位暫存器,複雜的lcd顯示驅動器,a/d、d/a轉換子系統或其他的mcu。當spi工作時,在移位暫存器中的資料逐位從輸出引腳(mosi)輸出(高位在前),同時從輸入引腳(miso)接收的資料逐位移到移位暫存器(高位在前)。傳送乙個位元組後,從另乙個外圍器件接收的位元組資料進入移位暫存器中。主spi的時鐘訊號(sck)使傳輸同步。其典型系統框圖如下圖所示。

spi主要特點有:可以同時發出和接收序列資料;

可以當作主機或從機工作;

提供頻率可程式設計時鐘;

傳送結束中斷標誌;

寫衝突保護;

匯流排競爭保護等。

圖2示出spi匯流排工作的四種方式,其中使用的最為廣泛的是spi0和spi3方式(實線表示):

spi 模組為了和外設進行資料交換,根據外設工作要求,其輸出序列同步時鐘極性和相位可以進行配置,時鐘極性(cpol)對傳輸協議沒有重大的影響。如果 cpol=0,序列同步時鐘的空閒狀態為低電平;如果cpol=1,序列同步時鐘的空閒狀態為高電平。時鐘相位(cpha)能夠配置用於選擇兩種不同的傳輸協議之一進行資料傳輸。如果cpha=0,在序列同步時鐘的第乙個跳變沿(上公升或下降)資料被取樣;如果cpha=1,在序列同步時鐘的第二個跳變沿(上公升或下降)資料被取樣。spi主模組和與之通訊的外設音時鐘相位和極性應該一致。spi匯流排介面時序如圖所示。

1,什麼是can2,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匯流排應用於眾多領域,具有強勁的市場競爭力的重要原因。

3. can匯流排應用領域

can匯流排最初是德國bosch為汽車行業的監測,控制而設計的。現已應用到鐵路、交通、國防、工程、工業機械、紡織、農用機械、數控、醫療器械機械人、樓宇、安防等方面。

i2c(inter-integrated circuit)匯流排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為高電平、然後發出停止條件。

在i2c匯流排的應用中應注意的事項總結為以下幾點 :

1) 嚴格按照時序圖的要求進行操作,

2) 若與口線上帶內部上拉電阻的微控制器介面連線,可以不外加上拉電阻。

3) 程式中為配合相應的傳輸速率,在對口線操作的指令後可用nop指令加一定的延時。

4) 為了減少意外的干擾訊號將eeprom內的資料改寫可用外部寫保護引腳(如果有),或者在eeprom內部沒有用的空間寫入標誌字,每次上電時或復位時做一次檢測,判斷eeprom是否被意外改寫。

新增:i2c 匯流排

在現代電子系統中,有為數眾多的ic 需要進行相互之間以及與外界的通訊。為了提供

硬體的效率和簡化電路的設計,philips 開發了一種用於內部ic 控制的簡單的雙向兩線串

行匯流排i2c(inter ic 匯流排)。i2c 匯流排支援任何一種ic 製造工藝,並且philips 和其他廠商

提供了種類非常豐富的i2c 相容晶元。作為乙個專利的控制匯流排,i2c 已經成為世界性的工

業標準。

每個i2c 器件都有乙個唯一的位址,而且可以是單接收的器件(例如:lcd 驅動

器)或者可以接收也可以傳送的器件(例如:儲存器)。傳送器或接收器可以在主模式

或從模式下操作,這取決於晶元是否必須啟動資料的傳輸還是僅僅被定址。i2c 是乙個

多主匯流排,即它可以由多個連線的器件控制。

早期的i2c 匯流排資料傳輸速率最高為100kbits/s,採用7 位定址。但是由於資料傳

輸速率和應用功能的迅速增加,i2c 匯流排也增強為快速模式(400kbits/s)和10 位定址

以滿足更高速度和更大定址空間的需求。

i2c 匯流排始終和先進技術保持同步,但仍然保持其向下相容性。並且最近還增加了

高速模式,其速度可達3.4mbits/s。它使得i2c 匯流排能夠支援現有以及將來的高速序列

傳輸應用,例如eeprom 和flash 儲存器。

UART I2C SPI協議對比

串列埠匯流排協議詳解 串列埠一般是2根線,乙個tx,乙個rx,可進行非同步全雙工通訊 1.串列埠傳送資料,低位在前,高位在後。2.串列埠線上面,空閒的時候是高電平的,傳送資料的時候 1 第乙個bit位 起始位,是0,匯流排從高變為低,這個0持續的時間是 1 波特率 例如波特率是4800,那麼這個0的...

USB UART I2C SPI等介面傳輸速率

usb1.1 低速模式 low speed 1.5mbps 全速模式 full speed 12mbps usb2.0 向下相容。增加了高速模式,最大速率480mbps。高速模式 high speed 25 480mbps usb3.0 向下相容。super speed 理論上最高達4.8gbps,...

海思hisi I2C SPI讀寫暫存器

i2c 讀寫命令示例 此操作示例通過 i2c 讀寫命令實現對 i2c 外圍裝置的讀寫操作。a.在控制台使用 i2c read 命令對 i2c 外圍裝置進行讀操作 i2c read 例如讀掛載在 i2c 控制器 2 上的 sil9024 裝置的 0x8 暫存器 i2c read 2 0x72 0x8 ...