版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、模擬i2c總線多主通信研究與軟件設(shè)計(jì)本文介紹模擬i2c的多主節(jié)點(diǎn)通信原理,并提出一種新的實(shí)現(xiàn)辦法。這種采納延時接收比較來實(shí)現(xiàn)仲裁的辦法,可使不具有i2c接口的一般微控制器()能夠?qū)崿F(xiàn)模擬i2c總線的多主通信,同時對i2c總線的推廣起到了樂觀作用。i2c總線(inter ic bus)是philips公司推出的雙向兩線串行通信標(biāo)準(zhǔn)。因?yàn)樗哂薪涌谏?、通信效率高等?yōu)點(diǎn),現(xiàn)已得到廣泛的應(yīng)用。它除了可以舉行容易的單主節(jié)點(diǎn)通信外,還可以應(yīng)用在多主節(jié)點(diǎn)的通信系統(tǒng)中。在多主節(jié)點(diǎn)通信系統(tǒng)中,假如兩個或者更多的主節(jié)點(diǎn)同時啟動數(shù)據(jù)傳輸,總線具有矛盾檢測和仲裁功能,保證通信正常舉行并防止數(shù)據(jù)破壞。現(xiàn)在許多微控制器(
2、mcu)都具有i2c總線接口,能便利地舉行i2c總線設(shè)計(jì)。對于沒有i2c總線接口的mcu,可以采納兩條i/o接口線舉行模擬。目前,一些介紹模擬i2c的資料主要講的是在單主節(jié)點(diǎn)系統(tǒng)中舉行的通信,這使得模擬i2c總線的應(yīng)用具有一定的局限性。本文按照總線仲裁的思想,提出一種多主節(jié)點(diǎn)通信的思想及實(shí)現(xiàn)流程。1 i2c總線系統(tǒng)簡介i2c總線系統(tǒng)是由scl(串行時鐘)和sda(串行數(shù)據(jù))兩根總線構(gòu)成的。該總線有嚴(yán)格的時序要求,總線工作時,由串行時鐘線scl傳送時鐘脈沖,由串行數(shù)據(jù)線sda傳送數(shù)據(jù)。總線協(xié)議規(guī)定,各主節(jié)點(diǎn)舉行通信時都要有起始、結(jié)束、發(fā)送數(shù)據(jù)和應(yīng)答信號。這些信號都是通信過程中的基本單元。總線傳送
3、的每1幀數(shù)據(jù)均是1個字節(jié),每當(dāng)發(fā)送完1個字節(jié)后,接收節(jié)點(diǎn)就相應(yīng)給一應(yīng)答信號。協(xié)議規(guī)定,在啟動總線后的第1個字節(jié)的高7位是對從節(jié)點(diǎn)的尋址地址,第8位為方向位(“0”表示主節(jié)點(diǎn)對從節(jié)點(diǎn)的寫操作;“1”表示主節(jié)點(diǎn)對從節(jié)點(diǎn)的讀操作),其余的字節(jié)為操作數(shù)據(jù)。圖1列出i2c總線上幾個基本信號的時序。圖1中包括起始信號、停止信號、應(yīng)答信號、非應(yīng)答信號以及傳輸數(shù)據(jù)“0”和數(shù)據(jù)“1”的時序。起始信號就是在scl線為高時sda線從高變幻到低;停止信號就是在scl線為高時sda線從低變幻到高;應(yīng)答信號是在scl為高時sda為低;非應(yīng)答信號相反,是在scl為高時sda為高。傳輸數(shù)據(jù)“0”和數(shù)據(jù)“1”與發(fā)送應(yīng)答位和非應(yīng)
4、答位時序圖是相同的。圖1 i2c總線上基本信號的時序圖2表示了一個完整的數(shù)據(jù)傳送過程。在i2c總線發(fā)送起始信號后,發(fā)送從機(jī)的7位尋址地址和1位表示這次操作性質(zhì)的讀寫位,在有應(yīng)答信號后開頭傳送數(shù)據(jù),直到發(fā)送停止信號。數(shù)據(jù)是以字節(jié)為單位的。發(fā)送節(jié)點(diǎn)每發(fā)送1個字節(jié)就要檢測sda線上有沒有收到應(yīng)答信號,有則繼續(xù)發(fā)送,否則將停止發(fā)送數(shù)據(jù)。圖2 一次完整的數(shù)據(jù)傳送過程2 i2c總線的仲裁在多主的通信系統(tǒng)中??偩€上有多個節(jié)點(diǎn),它們都有自己的尋址地址,可以作為從節(jié)點(diǎn)被別的節(jié)點(diǎn)拜訪,同時它們都可以作為主節(jié)點(diǎn)向其他的節(jié)點(diǎn)發(fā)送控制字節(jié)和傳送數(shù)據(jù)。但是假如有兩個或兩個以上的節(jié)點(diǎn)都向總線上發(fā)送啟動信號并開頭傳送數(shù)據(jù),這
5、樣就形成了矛盾。要解決這種矛盾,就要舉行仲裁的判決,這就是i2c總線上的仲裁。i2c總線上的仲裁分兩部分:scl線的同步和sda線的仲裁。scl同步是因?yàn)榭偩€具有線“與”的規(guī)律功能,即只要有一個節(jié)點(diǎn)發(fā)送低電平常,總線上就表現(xiàn)為低電平。當(dāng)全部的節(jié)點(diǎn)都發(fā)送高電平常,總線才干表現(xiàn)為高電平。正是因?yàn)榫€“與”規(guī)律功能的原理,當(dāng)多個節(jié)點(diǎn)同時發(fā)送時鐘信號時,在總線上表現(xiàn)的是統(tǒng)一的時鐘信號。這就是scl的同步原理。sda線的仲裁也是建立在總線具有線“與”規(guī)律功能的原理上的。節(jié)點(diǎn)在發(fā)送1位數(shù)據(jù)后,比較總線上所展現(xiàn)的數(shù)據(jù)與自己發(fā)送的是否全都。是,繼續(xù)發(fā)送;否則,退出競爭。圖3中給出了兩個節(jié)點(diǎn)在總線上的仲裁過程。s
6、da線的仲裁可以保證i2c總線系統(tǒng)在多個主節(jié)點(diǎn)同時企圖控制總線時通信正常舉行并且數(shù)據(jù)不走失。總線系統(tǒng)通過仲裁只允許一個主節(jié)點(diǎn)可以繼續(xù)占領(lǐng)總線。圖3是以兩個節(jié)點(diǎn)為例的仲裁過程。data1和data2分離是主節(jié)點(diǎn)向總線所發(fā)送的數(shù)據(jù)信號,sda為總線上所展現(xiàn)的數(shù)據(jù)信號,scl是總線上所展現(xiàn)的時鐘信號。當(dāng)主節(jié)點(diǎn)1、2同時發(fā)送起始信號時,兩個主節(jié)點(diǎn)都發(fā)送了高電平信號。這時總線上展現(xiàn)的信號為高電平,兩個主節(jié)點(diǎn)都檢測到總線上的信號與自己發(fā)送的信號相同,繼續(xù)發(fā)送數(shù)據(jù)。第2個時鐘周期,2個主節(jié)點(diǎn)都發(fā)送低電平信號,在總線上展現(xiàn)的信號為低電平,仍繼續(xù)發(fā)送數(shù)據(jù)。在第3個時鐘周期,主節(jié)點(diǎn)1發(fā)送高電平信號,而主節(jié)點(diǎn)2發(fā)送
7、低電平信號。按照總線的線“與”的規(guī)律功能,總線上的信號為低電平,這時主節(jié)點(diǎn)1檢測到總線上的數(shù)據(jù)和自己所發(fā)送的數(shù)據(jù)不一樣,就斷開數(shù)據(jù)的輸出級,轉(zhuǎn)為從機(jī)接收狀態(tài)。這樣主節(jié)點(diǎn)2就贏得了總線,而且數(shù)據(jù)沒有走失,即總線的數(shù)據(jù)與主節(jié)點(diǎn)2所發(fā)送的數(shù)據(jù)一樣,而主節(jié)點(diǎn)1在轉(zhuǎn)為從節(jié)點(diǎn)后繼續(xù)接收數(shù)據(jù),同樣也沒有丟掉sda線上的數(shù)據(jù)。因此在仲裁過程中數(shù)據(jù)沒有走失。圖3 兩個主節(jié)點(diǎn)的仲裁過程3 多主通信的原理及其實(shí)現(xiàn)流程多主通信就是在總線上有多個節(jié)點(diǎn)。這些節(jié)點(diǎn)既可以作為主節(jié)點(diǎn)拜訪其他的節(jié)點(diǎn),也可以作為從節(jié)點(diǎn)被其他節(jié)點(diǎn)拜訪。當(dāng)有多個節(jié)點(diǎn)同時企圖占用總線時,就需要總線的仲裁。對于模擬i2c總線系統(tǒng),怎樣實(shí)現(xiàn)總線的仲裁是現(xiàn)在
8、討論模擬i2c總線系統(tǒng)的難點(diǎn)。文獻(xiàn)4提出在系統(tǒng)中增強(qiáng)1根busy線,在占用總線之前先檢測busy線,看總線是否被占用。若總線空閑,則設(shè)置busy線并向總線上傳送數(shù)據(jù);否則,接收數(shù)據(jù),直到總線空閑時才占有總線。這種實(shí)現(xiàn)多主通信的辦法有兩個缺點(diǎn): 由于i2c最大的優(yōu)點(diǎn)就是接口少、效率高,這樣做不僅增強(qiáng)了用法資源而且削減了i2c總線的優(yōu)勢; 當(dāng)主節(jié)點(diǎn)數(shù)比較多時,等待時光比較長,效率不高。本設(shè)計(jì)按照總線的仲裁原理,提出一種基于延時比較的仲裁辦法。當(dāng)主節(jié)點(diǎn)想要占用總線時,先檢測總線上是否空閑,假如總線是空閑的就發(fā)送數(shù)據(jù)。在發(fā)送數(shù)據(jù)的同時,將總線上的數(shù)據(jù)接收并與發(fā)送的數(shù)據(jù)舉行比較。假如不同,解釋總線上同時
9、還存在其他節(jié)點(diǎn),于是就退出;否則,向來到發(fā)送完數(shù)據(jù)。這種辦法既體現(xiàn)了i2c總線的高效性,同時還具有良好的擴(kuò)展性。圖4 多主通信流程圖4給出了基于延時比較的多主通信流程,其中mcu作為從節(jié)點(diǎn)部分的流程在圖5中給出。在節(jié)點(diǎn)發(fā)送起始信號之前先要檢測一下總線上是否為空閑狀態(tài)(busy是否為0)。這里用法的檢測辦法是,持續(xù)檢測一段時光看總線上的電平是否向來為高,若是解釋總線上為閑狀態(tài),否則解釋有其他的節(jié)點(diǎn)正在用法總線,要等一段時光再發(fā)送。當(dāng)總線空閑時,發(fā)送起始信號,接著發(fā)送要拜訪的從節(jié)點(diǎn)的地址字節(jié)。每發(fā)送1位數(shù)據(jù)就接收比較1次,看發(fā)送和接收的是否全都,若是則繼續(xù),否則跳出到從節(jié)點(diǎn)的接收狀態(tài)。假如沒有產(chǎn)生
10、矛盾,mcu作為主節(jié)點(diǎn)繼續(xù)發(fā)送數(shù)據(jù),直到任務(wù)結(jié)束,然后發(fā)送停止信號并返回。假如數(shù)據(jù)不一樣,mcu將跳轉(zhuǎn)到從節(jié)點(diǎn)狀態(tài)。因?yàn)樵谔D(zhuǎn)到從節(jié)點(diǎn)接收狀態(tài)的過程中累加器(acc)和工作寄存器(ri)的數(shù)據(jù)沒有發(fā)生變幻,所以數(shù)據(jù)沒有走失,作為從節(jié)點(diǎn)可以繼續(xù)接收總線上的數(shù)據(jù)。這樣囫圇通信的過程沒有中斷,數(shù)據(jù)也沒有走失。圖5 從節(jié)點(diǎn)部分的流程圖5給出了從節(jié)點(diǎn)的流程。進(jìn)入從節(jié)點(diǎn)時,要將busy置為高,解釋mcu現(xiàn)在正在工作,不能完成其他的任務(wù)。在mcu作為從節(jié)點(diǎn)完成接收任務(wù)后,要將busy置為低。mcu在接收到尋址字節(jié)后與自己的地址字節(jié)舉行比較。假如是拜訪自己的就進(jìn)入到下面的接收程序,否則跳出。在拜訪自己的時候,
11、還要推斷主節(jié)點(diǎn)是讀取數(shù)據(jù)還是寫數(shù)據(jù),以便進(jìn)入相應(yīng)的程序。在寫字節(jié)的子程序中,從節(jié)點(diǎn)每發(fā)送1個字節(jié)的數(shù)據(jù)后都要察看是否有應(yīng)答信號(ack),有則解釋數(shù)據(jù)接收到了;否則要跳出等待,重新發(fā)送。在讀字節(jié)的子程序中,每接收1個字節(jié)的數(shù)據(jù)就要發(fā)送1個應(yīng)答信號(ack),以示接收正常,否則主節(jié)點(diǎn)將停止繼續(xù)發(fā)送。在現(xiàn)有的資料中,關(guān)于從節(jié)點(diǎn)的原理和源代碼比較少,這里給出作為從節(jié)點(diǎn)時寫字節(jié)子程序的源代碼。因?yàn)槠邢奁渌淖映绦驔]有列出。4 部分源代碼本節(jié)是在mcu多主通信中的部分源代碼。多主通信的實(shí)現(xiàn)中有幾個難點(diǎn)和重點(diǎn)。一是在作為主節(jié)點(diǎn)時的寫字節(jié)子程序,里面要包括發(fā)送的每位數(shù)據(jù)和總線的數(shù)據(jù)舉行比較并做出推斷。假
12、如數(shù)據(jù)不同,要跳出并進(jìn)入從節(jié)點(diǎn)的狀態(tài)。因?yàn)樽映绦蚍祷刂鞒绦驎r轉(zhuǎn)變的只是pc的值而累加器(acc)和工作寄存器(ri)里面的值是不變的,因此mcu進(jìn)入從機(jī)狀態(tài)后繼續(xù)接收總線剩下的數(shù)據(jù),這樣總線的數(shù)據(jù)并沒有走失。二是作為從節(jié)點(diǎn)時的寫字節(jié)的子程序。因?yàn)闀r鐘線是由主節(jié)點(diǎn)的mcu控制的,所以怎樣按照scl線來讀取sda線的數(shù)據(jù)是其中的一個難點(diǎn)。三是在具有子地址的從節(jié)點(diǎn)關(guān)于是寫字節(jié)還是讀字節(jié)時的推斷。假如是寫字節(jié)時主節(jié)點(diǎn)會給出新的起始信號,并再次發(fā)送從節(jié)點(diǎn)的地址數(shù)據(jù)。這時從節(jié)點(diǎn)需要做出推斷是讀取數(shù)據(jù)還是寫數(shù)據(jù),并進(jìn)入相應(yīng)的子程序。這里給出以上三個重點(diǎn)和難點(diǎn)的子程序的源代碼,以供讀者參考。這些源代碼經(jīng)實(shí)踐證
13、實(shí)都是正確的。主節(jié)點(diǎn)的寫字節(jié)子程序:;其中的nop可按照時鐘的快慢自己加減wrbyte:mov r0,08hclr busy;將busy值清零wlp: rlc a;取數(shù)據(jù)位jc wr1sjmp wr0;推斷數(shù)據(jù)位wlp1: djnz r0,wlpnopout1: retwr1: setb sda;發(fā)送1nopsetb sclmovc,sda;推斷是否與發(fā)送的數(shù)據(jù)相同jc goonsetb busyajmp out1goon: nopnopnopclr sclsjmp wlp1wr0: clr sda;發(fā)送0nopsclnopnopnopnopnopclrsclsjmp wlp1從節(jié)點(diǎn)的寫字節(jié)子
14、程序(返回為ack):swrbyte:mov r0,08hwagain: rrc amov b,37hwwait1: jb scl,wwait1;等待scl為低jc wr1;推斷是發(fā)送“1”還是發(fā)送“0”setb sda;發(fā)送“1”ajmp comwr1:clr sda;發(fā)送“0”comjnz r0,wwait2;推斷是否發(fā)送完畢wwait3: jnb scl,wwait3;發(fā)送完畢等待應(yīng)答信號wwait4: jb scl,wwait4wwait5: jnb scl,wwait5clr ackjb sda,st0setb ackst0:ret;返回wwait2: jnb scl,wwait2;
15、等待scl為高sjmp wagain從節(jié)點(diǎn)的讀字節(jié)同時推斷是否有起始信號的子程序。假如有起始信號,則轉(zhuǎn)為寫字節(jié)子程序:srdbyte:mov r0,08hsetb 20h;設(shè)置標(biāo)記位推斷是讀還是寫setb sda;釋放總線rwaitj: jnb scl,rwaitj;等待scl為高mov c,sda;從總線上讀取數(shù)據(jù)rrc a;存入累計(jì)器dec r0mov c,acc.7;推斷是否為起始信號jnc rwaitj1;為低繼續(xù)讀取數(shù)據(jù)rewait: jnb scl,rwaitj1;開頭推斷是否為起始信號jb sda,rewaitclr 20h;是,則清標(biāo)記位并返回ajmp sjrdoutrwaitj1:jb scl,rwaitj1;等待scl為低rwaitj3:jnb scl,rwaitj3;等待scl為高mov c,sd
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版文化遺產(chǎn)保護(hù)工程承包合同示范文本2篇
- 2025年度大型商場租賃合同及租賃期限調(diào)整規(guī)范
- 二零二五年度新型房產(chǎn)抵押貸款咨詢與評估合同3篇
- 2025版無產(chǎn)權(quán)儲藏室買賣及藝術(shù)品展示合作協(xié)議3篇
- 2025版商場物業(yè)管理與商業(yè)糾紛調(diào)解服務(wù)合同3篇
- 上海市奉賢區(qū)2022-2023學(xué)年高三上學(xué)期一模語文試卷 附答案
- 二零二五年度車輛運(yùn)輸與汽車后市場服務(wù)合同2篇
- 湖州浙江湖州長興縣人民檢察院編外人員招錄3人筆試歷年參考題庫附帶答案詳解
- 溫州浙江溫州平陽縣人民法院招聘編外人員筆試歷年參考題庫附帶答案詳解
- 2025年度教育機(jī)構(gòu)課程開發(fā)與培訓(xùn)服務(wù)合同
- 中國農(nóng)業(yè)銀行小微企業(yè)信貸業(yè)務(wù)貸后管理辦法規(guī)定
- 領(lǐng)導(dǎo)干部的情緒管理教學(xué)課件
- 初中英語-Unit2 My dream job(writing)教學(xué)課件設(shè)計(jì)
- 市政道路建設(shè)工程竣工驗(yàn)收質(zhì)量自評報告
- 優(yōu)秀支行行長推薦材料
- 中國版梅尼埃病診斷指南解讀
- 創(chuàng)業(yè)投資管理知到章節(jié)答案智慧樹2023年武漢科技大學(xué)
- 暨南大學(xué)《經(jīng)濟(jì)學(xué)》考博歷年真題詳解(宏觀經(jīng)濟(jì)學(xué)部分)
- 藥店員工教育培訓(xùn)資料
- eNSP簡介及操作課件
- 運(yùn)動技能學(xué)習(xí)與控制課件第七章運(yùn)動技能的協(xié)調(diào)控制
評論
0/150
提交評論