目錄
TWI的特性
數(shù)據(jù)傳輸格式?
時鐘同步?
數(shù)據(jù)仲裁
功能描述
?總線接口單元
頻率生成單元
地址匹配單元
控制單元
傳輸模式
主機發(fā)送模式
?主機接收模式
?從機發(fā)送模式
?從機接收模式
TWI的特性
- 兩線模式,簡單快捷;
- 支持主機模式和從機模式;
- 允許發(fā)送數(shù)據(jù)和接收數(shù)據(jù);
- 支持多主機通訊的仲裁功能;
- 具有低電平總線超時判斷;
- 在空閑模式可喚醒系統(tǒng);
- 地址可編程;
? ? TWI串行總線采用兩根線(SDA和SCL)在總線和裝置之間傳遞信息。?一些芯片符合這個通訊協(xié)議的總線規(guī)范,自動對字節(jié)進(jìn)行傳輸進(jìn)行處理,并對串行通訊進(jìn)行跟蹤。TWI時鐘為系統(tǒng)的時鐘,典型TWI通訊如下圖所示,最高可以支持128個不同的期間進(jìn)行通訊。
數(shù)據(jù)傳輸格式?
? ? 數(shù)據(jù)傳輸中數(shù)據(jù)線上的每一個位的傳輸均需要時鐘線上的脈沖。在時鐘高電平是數(shù)據(jù)線應(yīng)該保持穩(wěn)定,但是始發(fā)條件和終止條件時不需要遵守這個規(guī)定。
? ? 和IIC通訊協(xié)議相似,TWI定義了兩個特殊的波形:起始條件和終止條件。在時鐘線為高電平的時候數(shù)據(jù)線的下降沿定義為起始條件和終止條件之間,總線定義為“busy”狀態(tài)。其他主機不應(yīng)該去試圖發(fā)起傳輸。在“busy”狀態(tài)下,如果主機再一次發(fā)送起始條件,那么就定義為“重復(fù)起始條件”,表示主機不放棄總線的情況下開始一次新的傳輸。發(fā)送重復(fù)起始條件后,總線仍處于“busy”狀態(tài),一直到總線出現(xiàn)終止條件。
? ?所有的數(shù)據(jù)包(包括地址包)均有9位組成,包括1個字節(jié)和一個應(yīng)答位。主機負(fù)責(zé)發(fā)出時鐘和起始以及終止條件,接收這負(fù)責(zé)給出應(yīng)答信號。接收者通過在第九個時鐘脈沖處將數(shù)據(jù)線拉低發(fā)出“應(yīng)答”信號;或維持第九個脈沖處維持高電平表示“不應(yīng)答”信號。當(dāng)接收放接收到最后一個字節(jié),或因為某種原因沒有繼續(xù)接收數(shù)據(jù)的時候,應(yīng)回應(yīng)“不應(yīng)答”信號。TWI采用從高到低諸位進(jìn)行傳輸。
? ?一次傳輸通常包括一個起始條件,地址+讀寫位,一個或者多個數(shù)據(jù)包和一個終止條件。僅僅包含起始條件和終止條件的數(shù)據(jù)格式是不合通訊規(guī)則的。值得注意的是“線與”結(jié)構(gòu)給主機和從機之間的握手信號提供了方便。當(dāng)主機相對太快或者從機需要處理其他事物的時候,從既可以通過拉低時鐘線的低電平時間,從而降低通訊頻率。從機可以拉低時鐘線的低電平周期但不會影響到時鐘線高電平的周期。
當(dāng)產(chǎn)生應(yīng)答信號的時候,拉低SDA信號線。中斷標(biāo)志位置起期間,拉低SCL信號線,釋放SDA信號線。中斷處理完畢 后清楚TWINT標(biāo)志,釋放SCL信號線。
時鐘同步?
? ?當(dāng)多個主機同時希望控制總線的時候,總線將一句“線與”原則決定時鐘線高低電平。對于所有參與傳輸?shù)闹鳈C來說,定義清楚每一個時鐘脈沖的起始是相當(dāng)重要的。
? ?時鐘線電平的由高到低跳變導(dǎo)致所有參與傳輸?shù)腻X開始低電平計時。每一個期間及時到達(dá)自己低電平要求釋放時鐘線,早時鐘線變?yōu)楦唠娖街斑M(jìn)入高電平等待期;當(dāng)所有期間均計滿低電平周期,時鐘線才變?yōu)楦唠娖?。之后所有期間開始對高電平進(jìn)行計時,第一個計滿高電平周期的期間將拉低時鐘線,進(jìn)入下一個時鐘周期。
數(shù)據(jù)仲裁
? ?主機只有在總線處于空閑狀態(tài)的時候才能開始一次傳輸。兩個或者多個主機可能在最小保持時間內(nèi)同時發(fā)送起始條件,從而在總線上只看到一個起始條件。
? ?由于發(fā)送起始條件的主機無法知道是否有其他主機在競爭總線,只能靠時鐘高電平是讀數(shù)據(jù)先的仲裁判斷哪個主機占用總線。當(dāng)有主機傳輸?shù)碗娖降臅r候,傳輸高電平的主機將失去仲裁必須放棄總裁。
? ? 失去仲裁的主機將繼續(xù)發(fā)送時鐘,直到當(dāng)前傳輸字節(jié)發(fā)送完畢。當(dāng)兩個主機同時訪問一個從機的時候,可能會順利通過地址階段,在傳輸數(shù)據(jù)的時候?qū)⒗^續(xù)進(jìn)行仲裁。這種機制要求所有的TWI器件在進(jìn)行數(shù)據(jù)傳輸?shù)臅r候可以檢測數(shù)據(jù)線上的真實狀態(tài)。
? ? 如果這個主機同時開啟了從機模式,在發(fā)送地址階段失去仲裁后應(yīng)檢測線上的地址是否與自己相匹配;如果是對自己的訪問,應(yīng)立即切換到從機模式,接收信息。
? ? 每次傳輸中,仍要檢測線上的“重復(fù)起始條件”,當(dāng)檢測到并非自己發(fā)出的“重復(fù)起始條件”時,應(yīng)立即退出當(dāng)前傳輸。
仲裁不應(yīng)發(fā)生在如下的情況:
1、重復(fù)起始條件和數(shù)據(jù);
2、終止條件和數(shù)據(jù);
3、重復(fù)起始條件和終止條件.
?文章來源地址http://www.zghlxwxcb.cn/news/detail-637899.html
功能描述
?總線接口單元
? ?總線接口單元包括數(shù)據(jù)和地址移位寄存器(TWIDAT),開始/終止條件控制器,仲裁和總線超時檢 測單元。 寄存器TWIDAT存儲了即將發(fā)送的數(shù)據(jù)或地址和接收到的數(shù)據(jù)和地址。 開始/終止條件控制器負(fù)責(zé)發(fā)送和檢測總線上的開始條件,重復(fù)開始條件和終止條件。 如果SH79F6441已經(jīng)作為主機開始一次傳輸,仲裁單元將始終檢測是否有仲裁發(fā)生。當(dāng)失去仲裁時,控制單元可以進(jìn)行合 適的動作,并產(chǎn)生相應(yīng)的狀態(tài)碼。 SH79F6441在傳輸數(shù)據(jù)/地址時,必須在SCL由低跳高前維持?jǐn)?shù)據(jù)穩(wěn)定。 SH79F6441在傳輸ACK/NACK時,在SCL由低跳高后產(chǎn)生TWINT中斷,并在SCL由高跳低時拉低SCL,在TWINT中斷清零 時釋放SCL。 SH79F6441在傳輸ACK/NACK信號時,若TWINT已被清零,SCL仍為高電平時,SDA產(chǎn)生跳變,則重新產(chǎn)生TWINT中斷, 狀態(tài)為00H。SH79F6441當(dāng)前通訊終止,該狀態(tài)與普通00H狀態(tài)處理一致。 SH79F6441在傳輸ACK/NACK信號時,若TWINT未被清零,SCL仍為高電平時,SDA產(chǎn)生跳變,則狀態(tài)直接切換到00H, 不會再次產(chǎn)生中斷。SH79F6441作為從機進(jìn)入該狀態(tài),則當(dāng)前通訊終止,可發(fā)生STA開始主機傳輸,或重新接受STA+ADR對 自己地址的訪問。SH79F6441作為主機進(jìn)入該狀態(tài),則當(dāng)前通訊終止,可發(fā)生STA開始主機傳輸,或重新接受STA+ADR對自 己的訪問。 SH79F6441在當(dāng)前通訊終止后,不會再參與當(dāng)前傳輸。SH79F6441若作為主機存在,請開啟EFREE功能,防止進(jìn)入邏輯 死區(qū)。 SH79F6441規(guī)定總線維持高電平超過TFREE = TSYS X TWTFREE X 256(必須保證TFREE大于tSCL/2(tSCL為時鐘線的周期)) 所定義的系統(tǒng)時鐘個數(shù)時為“空閑”狀態(tài),釋放總線。該功能僅適用于一個數(shù)據(jù)包傳輸過程中(8+1個位)。SH79F6441處于 從機發(fā)送模式,且所傳輸?shù)牡谝粋€字節(jié)為低電平時適用該功能。起始條件(STA、RSTA)不適用于該功能。SH79F6441產(chǎn)生 中斷,寄存器TWICON中的TFREE會被置位(如果控制位EFREE已置位)。 如果時鐘線SCL被從機拉低時,通訊會暫時中止;而主機也沒有辦法將時鐘線拉高。為解決此問題,TWI協(xié)議規(guī)定參與傳 輸?shù)乃衅骷?,將時鐘線維持低電平超過N X TSYS(N值由TWITOUT寄存器決定)所定義的時鐘個數(shù)時為“總線超時”,寄存 器TWICON中的TOUT會被置位(如果控制位ETOT已置位)。
頻率生成單元
? ?在主機模式下,可以通過寄存器TWICON的CR[1:0]分頻系數(shù)以及TWIBR寄存器來設(shè)定通訊的頻率。
地址匹配單元
? 地址匹配單元檢驗所收到的地址是否與寄存器TWIADR中的七位地址相匹配。如果通用地址使能拉GC被置位,也將檢測是否與通用地址00H相匹配。當(dāng)?shù)刂菲ヅ涞臅r候,控制單元將產(chǎn)生·1合適的動作以及相應(yīng)的狀態(tài)碼。
控制單元
? ??控制單元監(jiān)視TWI總線,并依據(jù)控制寄存器TWICON的設(shè)置進(jìn)行相應(yīng)的回應(yīng)。當(dāng)TWI總線有需要應(yīng)用層注意的事件時,TWI 中斷標(biāo)志被置起,標(biāo)明當(dāng)前事件的狀態(tài)碼會被寫入狀態(tài)寄存器TWISTA。狀態(tài)寄存器TWISTA只表示TWI通訊中斷產(chǎn)生時的通訊 狀態(tài)信息;其它情況下狀態(tài)寄存器內(nèi)是一個用于表示沒有有效狀態(tài)碼的狀態(tài)碼。在中斷清除之前,時鐘線將維持低電平。應(yīng)用 軟件可在處理完任務(wù)后才允許TWI通訊繼續(xù)。
傳輸模式
? ? ?TWI通訊是以字節(jié)為基礎(chǔ)和中斷驅(qū)動的通訊總線。諸如接收到一個字節(jié)或發(fā)送一個開始條件的所有總線事件均會產(chǎn)生一個 中斷。所以在字節(jié)傳輸期間,應(yīng)用軟件可以進(jìn)行其它的操作。需注意的是,控制寄存器TWICON中的TWI使能位ENTWI和中斷 控制寄存器IEN0中的所有中斷控制位EA和TWI中斷控制位ETWI將共同決定TWI中斷標(biāo)志TWINT被置位時是否會產(chǎn)生中斷。如 果ETWI或EA未置位,應(yīng)用軟件必須對TWINT標(biāo)志進(jìn)行枚舉檢測才能知道是否有TWI事件發(fā)生。 當(dāng)TWINT位置起時,表示一次TWI傳輸已完成,等待應(yīng)用軟件的回應(yīng),此時狀態(tài)寄存器TWISTA包含了當(dāng)前的狀態(tài)。應(yīng)用 軟件可通過寄存器TWICON和TWISTA決定TWI進(jìn)行哪種通訊。 下面將分別介紹TWI通訊的四種主要模式,并對所有可能的狀態(tài)碼進(jìn)行了描述。下圖中有如下縮寫:
? ?
?圓形用于表示中斷標(biāo)志已被置起。其中的數(shù)字表示當(dāng)前狀態(tài)寄存器TWISTA中被掩去低三位的狀態(tài)碼。在TWINT被清除之 前,TWI通訊會暫停,應(yīng)用軟件必須決定是繼續(xù)通訊還是終止當(dāng)前傳輸。對每一個狀態(tài)碼,所需要的軟件動作和隨后的傳輸細(xì) 節(jié)均有描述。
主機發(fā)送模式
? ?主機發(fā)送模式中,主機發(fā)送一系列數(shù)據(jù)到從機。為進(jìn)入主機發(fā)送模式,一個開始條件,隨后一個從機地址+寫控制字(SLA+W) 地址包表示進(jìn)入主機發(fā)送模式(MT)。 通過設(shè)置控制寄存器TWICON中的ENTWI和STA,清除STO和TWINT,TWI邏輯將檢測TWI總線并在允許時發(fā)出一個開始 條件(STA)。當(dāng)開始條件(STA)傳輸完畢,通訊中斷(TWINT)被置起,狀態(tài)寄存器(TWISTA)為08H,中斷服務(wù)程序 應(yīng)將從機地址和寫控制字(SLA+W)寫入數(shù)據(jù)寄存器TWIDAT。在開啟下一個傳輸前清除TWINT標(biāo)志。 當(dāng)從機地址和寫控制字傳輸完畢并收到一個“應(yīng)答”信息時,中斷(TWINT)被置起,狀態(tài)寄存器TWISTA中有幾個可能 的狀態(tài):對主機模式有18H,20H和38H,對從機模式有68H,78H和B0H。
?
?主機接收模式
? ?主機接收模式中,主機從從機接收一系列數(shù)據(jù)。為進(jìn)入主機接收模式,一個開始條件,隨后一個從機地址+讀控制字(SLA+R) 地址包表示進(jìn)入主機接受模式(MR)。 通過設(shè)置控制寄存器TWICON中的ENTWI和STA,清除STO和TWINT,TWI邏輯將檢測TWI總線并在允許時發(fā)出一個開始 條件(STA)。當(dāng)開始條件(STA)傳輸完畢,通訊中斷(TWINT)被置起,狀態(tài)寄存器(TWISTA)為08H,中斷服務(wù)程序 應(yīng)將從機地址和讀控制字(SLA+R)寫入數(shù)據(jù)寄存器TWIDAT。在開啟下一個傳輸前清除TWINT標(biāo)志。 當(dāng)從機地址和寫控制字傳輸完畢并收到一個“應(yīng)答”信息時,中斷(TWINT)被置起,狀態(tài)寄存器TWISTA中有幾個可能 的狀態(tài):對主機模式有40H,48H和38H,對從機模式有68H,78H和B0H。
?
?從機發(fā)送模式
? ?從機發(fā)送模式中,從機發(fā)送一系列數(shù)據(jù)到主機。為初始化從機發(fā)送模式,必須對控制寄存器TWICON和地址寄存器TWIADR 進(jìn)行初始化:置位控制寄存器TWICON中的ENTWI和AA,清除STA、STO和TWINT;地址寄存器TWIADR中高7位為SH79F6441 準(zhǔn)備相應(yīng)的地址。如果GC置位,SH79F6441也將響應(yīng)通用地址(00H);否則將不響應(yīng)通用地址。 在TWIADR和TWICON初始化后,SH79F6441將等待總線對自己地址或通用地址(如果GC被置位)的響應(yīng)。如果方向標(biāo) 志位是“讀”,則TWI進(jìn)入從機發(fā)送模式,否則將進(jìn)入從機接收模式。在地址和讀標(biāo)志位接收完畢后,中斷標(biāo)志(TWINT)置 位,狀態(tài)寄存器TWISTA有效。 在傳輸中,如果將應(yīng)答使能位“AA”清零,TWI將傳送最后一個字節(jié),并依據(jù)主機接收方發(fā)送的應(yīng)答或不應(yīng)答信息位進(jìn)入 C0H或C8H狀態(tài)??偩€將切換到非地址從機模式,不在響應(yīng)主機傳輸。從而主機接收方將接收到一串“1”。最后一個字節(jié)發(fā)送 完畢后,如果主機仍需額外的數(shù)據(jù)(傳輸“應(yīng)答”信號),則進(jìn)入C8H狀態(tài)。
?
?從機接收模式
? ?從機接收模式中,從機從主機接收一系列數(shù)據(jù)。為初始化從機接收模式,必須對控制寄存器TWICON和地址寄存器TWIADR 進(jìn)行初始化:置位控制寄存器TWICON中的ENTWI和AA,清除STA、STO和TWINT;地址寄存器TWIADR中高7位為SH79F6441 準(zhǔn)備相應(yīng)的地址。如果GC置位,SH79F6441也將響應(yīng)通用地址(00H);否則將不響應(yīng)通用地址。 在TWIADR和TWICON初始化后,SH79F6441將等待總線對自己地址或通用地址(如果GC被置位)的響應(yīng)。如果方向標(biāo) 志位是“寫”,則TWI進(jìn)入從機接收模式,否則將進(jìn)入從機發(fā)送模式。在地址和寫標(biāo)志位接收完畢后,中斷標(biāo)志(TWINT)置 位,狀態(tài)寄存器TWISTA有效。 在傳輸中,如果將應(yīng)答使能位“AA”清零,TWI將接收最后一個字節(jié)并回應(yīng)“不應(yīng)答”信息?;貞?yīng)“不應(yīng)答”可以表示當(dāng) 前從機無法接收更多字節(jié)。當(dāng)AA = 0時,SH79F6441無法回應(yīng)對自己地址的訪問;但仍然監(jiān)視總線狀態(tài),并可以通過AA = 1恢 復(fù)對自己地址的相應(yīng)??梢酝ㄟ^AA = 0暫時將SH79F6441從總線隔離。
?文章來源:http://www.zghlxwxcb.cn/news/detail-637899.html
?
到了這里,關(guān)于終于有人將TWI(串行通訊接口)給講通了!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!