+單總線數(shù)據(jù)傳輸_第1頁(yè)
+單總線數(shù)據(jù)傳輸_第2頁(yè)
+單總線數(shù)據(jù)傳輸_第3頁(yè)
+單總線數(shù)據(jù)傳輸_第4頁(yè)
+單總線數(shù)據(jù)傳輸_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余16頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第6章單總線數(shù)據(jù)傳輸本章主要內(nèi)容包括:?jiǎn)慰偩€技術(shù)概述單總線數(shù)據(jù)傳輸協(xié)議單總線驅(qū)動(dòng)程序本章首先對(duì)單總線的基本知識(shí)和芯片進(jìn)行了簡(jiǎn)單介紹,接著詳細(xì)論述了單總線數(shù)據(jù)傳輸協(xié)議,包括通信信號(hào)的類型、單總線通信的初始化、ROM命令、功能命令、單總線器件的ROM搜索。最后給出了單總線的驅(qū)動(dòng)程序,以便讀者參閱。單總線技術(shù)概述1-wire單總線是Maxim全資子公司Dallas的一項(xiàng)專有技術(shù)。與目前多數(shù)標(biāo)準(zhǔn)串行數(shù)據(jù)通信方式,如SPI/IIC/MICROWIRE不同,它采用單根信號(hào)線,既傳輸時(shí)鐘,又傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的。它具有節(jié)省I/O口線資源、結(jié)構(gòu)簡(jiǎn)單、成本低廉、便于總線擴(kuò)展和維護(hù)等諸多優(yōu)點(diǎn)。采用單總線接口芯片可以方便地組成數(shù)據(jù)交換網(wǎng)絡(luò),由單總線芯片組成的網(wǎng)絡(luò)被稱為微型局域網(wǎng)(MicroLAN)。微型局域網(wǎng)是一種主從式網(wǎng)絡(luò),它以個(gè)人計(jì)算機(jī)或單片機(jī)作為網(wǎng)絡(luò)中的主設(shè)備,而網(wǎng)絡(luò)中其他所有設(shè)備都被稱為從設(shè)備,從設(shè)備由主設(shè)備集中管理來(lái)實(shí)現(xiàn)主設(shè)備和各從設(shè)備之間的數(shù)據(jù)通信。微型局域網(wǎng)的規(guī)模靈活可變,一個(gè)網(wǎng)絡(luò)中的從設(shè)備數(shù)可以從幾個(gè)到數(shù)千個(gè)不等,理論上幾乎不存在限制。微型局域網(wǎng)的組網(wǎng)十分簡(jiǎn)單,只需要一對(duì)普通的雙絞線就能組網(wǎng),而且所有的從設(shè)備無(wú)需自帶電源,因而具有組網(wǎng)快、成本低的特點(diǎn),非常適于現(xiàn)場(chǎng)應(yīng)用,是現(xiàn)場(chǎng)總線技術(shù)的一種新選擇。楊金巖鄭應(yīng)強(qiáng)張振仁楊金巖鄭應(yīng)強(qiáng)張振仁.8051單片機(jī)數(shù)據(jù)傳輸接口擴(kuò)展技術(shù)與應(yīng)用實(shí)例[M]北京:人民郵電出版社出版.2005.211?212為了更深刻的了解單總線技術(shù),我們先從單總線芯片的硬件結(jié)構(gòu)入手,引出單總線技術(shù)的特點(diǎn),從而全面了解單總線技術(shù)。下面我們就從硬件方面來(lái)了解一下單總線芯片。單總線芯片簡(jiǎn)介為了較為全面地掌握單總線系統(tǒng),先簡(jiǎn)單的了解一下單總線的芯片。本節(jié)將分三個(gè)部分對(duì)單總線的芯片進(jìn)行介紹:硬件結(jié)構(gòu)、芯片序列號(hào)和芯片的供電。

1.單總線硬件結(jié)構(gòu)顧名思義,單總線只有一根數(shù)據(jù)線。單總線標(biāo)準(zhǔn)為外設(shè)器件沿著一條數(shù)據(jù)線進(jìn)行雙向數(shù)據(jù)傳輸提供了一種簡(jiǎn)單的方案,任何單總線系統(tǒng)都包含一臺(tái)主機(jī)和一個(gè)或多個(gè)從機(jī),它們共用一條數(shù)據(jù)線。這條數(shù)據(jù)線被地址、控制和數(shù)據(jù)信息復(fù)用,大多數(shù)器件完全依靠從數(shù)據(jù)線上獲得的電源供電,個(gè)別器件在許可的情況下由本地電源供電。當(dāng)數(shù)據(jù)線為高電平時(shí),電荷存儲(chǔ)在器件內(nèi)部;當(dāng)數(shù)據(jù)線為低電平時(shí),器件利用這些電荷提供能量。單總線采用線或配置,主機(jī)為漏極輸出,只能將總線下拉至低電平。圖6.1為單總線器件I/O端口的內(nèi)部結(jié)構(gòu)。圖6.1圖6.1單總線器件I/O端口內(nèi)部結(jié)構(gòu)它們與總線匹配的端口也I/O端口也有類似的結(jié)它們與總線匹配的端口也I/O端口也有類似的結(jié)圖6.2單總線芯片DS18B2的卜觀圖對(duì)于單總線器件,為了使每個(gè)器件在合適的時(shí)候都能被驅(qū)動(dòng).必須具有開漏輸出或3態(tài)輸出的功能。正如上文所述,系統(tǒng)主設(shè)備的構(gòu)。出于主機(jī)和從機(jī)都是開漏輸出,在主設(shè)備的總線側(cè)必須有上拉電阻,系統(tǒng)才能正常操作。單總線器件根據(jù)其應(yīng)用場(chǎng)合,常用的封裝形式有10種(參見6.1.2節(jié)中的表6.1),通常采用3引腳PR-35封裝,外形類似于小功率三極管(圖6.2所示為DS18B20外觀圖),在三個(gè)引腳中有一個(gè)公共地端、一個(gè)數(shù)據(jù)輸入/輸出端和一個(gè)電源端。這個(gè)電源端可以為單總線器提供外部電源,從而免除總線集中饋電。對(duì)于大多數(shù)采用總線集中供電的單總線器件,等效于在各器件內(nèi)部有一個(gè)約50的恒流充電源(參見圖6.1),從而使得單總線器件功耗較低。單總線要求外接一個(gè)約5kQ的上拉電阻,這樣,單總線的閑置狀態(tài)為高電平。不管什么原因,如果傳輸過(guò)程需要暫時(shí)掛起,且要求傳輸過(guò)程還能夠繼續(xù)的話,則總線必須處于空閑狀態(tài)。位傳輸之間的恢復(fù)時(shí)間沒(méi)有限制,只要總線在恢復(fù)期間處于空閑狀態(tài)(高電平)。如果總線保持低電平超過(guò)480g總線上的所有器件將復(fù)位。另外,在寄生方式供電時(shí),為了保證單總線器件在某些工作狀態(tài)下(如溫度轉(zhuǎn)換期間、EEPROM寫入等)具有足夠的電源電流,必須在總線上提供強(qiáng)上拉(如圖6.1所示的MOSFET)。2.單總線芯片序列號(hào)單總線器件的最基本特點(diǎn)是每個(gè)器件都有一個(gè)采用激光刻制的序列號(hào),任何單總線器件的序列號(hào)都不會(huì)重復(fù)。當(dāng)有許多單總線器件連接在同一總線上時(shí)。系統(tǒng)主機(jī)可以通過(guò)器件的序列號(hào)來(lái)將需要進(jìn)行訪問(wèn)的器件挑選出來(lái)。在這個(gè)挑選的過(guò)程中,必須有一種二進(jìn)制查詢算法來(lái)對(duì)總線上眾多的器件進(jìn)行挑選,一旦知道每個(gè)器件的地址,就可以利用地址選擇任何一個(gè)器件進(jìn)行通信。單總線芯片序列號(hào)的第一個(gè)8位字節(jié)表示單總線芯片的分類碼,例如可尋址開關(guān)DS2045的分類碼為05H,數(shù)字溫度計(jì)DS1822的分類碼為10H,4通道A/D轉(zhuǎn)換器DS2450的分類碼為20H等,一共可以有256種不同類型的單總線芯片;序列號(hào)中接下來(lái)的48位是標(biāo)識(shí)器件本身的序列號(hào),可見每種類型的器件要生產(chǎn)248=281474976710656片后才會(huì)出現(xiàn)重復(fù)的序列碼,經(jīng)過(guò)計(jì)算不難發(fā)現(xiàn)這個(gè)數(shù)字相當(dāng)于全球人均近5萬(wàn)片,所以在實(shí)際的使用中是不可能出現(xiàn)重復(fù)的;序列號(hào)的最后8位則是前面56位的CRC校驗(yàn)碼。系統(tǒng)主機(jī)與單總線產(chǎn)品進(jìn)行通信時(shí),為了定位和尋址該器件,必須首先準(zhǔn)確地讀取產(chǎn)品序列號(hào)。通過(guò)這64位的芯片序列號(hào),系統(tǒng)主機(jī)就可以在任意多個(gè)節(jié)點(diǎn)的單總線網(wǎng)絡(luò)中方便地識(shí)別出每個(gè)設(shè)備,實(shí)現(xiàn)數(shù)據(jù)通信。在數(shù)據(jù)通信過(guò)程中,當(dāng)系統(tǒng)主機(jī)接收到64位的序列號(hào)后,可以計(jì)算出其中前56位序列碼的循環(huán)冗余校驗(yàn)值,并與接收到的8位CRC字節(jié)進(jìn)行比較,如果相等則說(shuō)明本次數(shù)據(jù)傳輸正確無(wú)誤,如果不等則表示傳輸出錯(cuò)。每個(gè)單總線芯片(從設(shè)備)都具有生成CRC校驗(yàn)碼的硬件電路,而作為系統(tǒng)主機(jī)的微處理器,既可以采用硬件電路來(lái)實(shí)現(xiàn)CRC校驗(yàn)碼的生成,也可以來(lái)用軟件的方法生成。采用軟件的方法可以減少硬件開支,節(jié)約板上面積,是一種值得優(yōu)先考慮的方法。在采用軟件生成CRC校驗(yàn)碼時(shí),通常有兩種途徑:一種(目的是為了跟后面的另一種相對(duì)應(yīng))是通過(guò)計(jì)算,另一種是通過(guò)查表。計(jì)算方法是依據(jù)CRC校驗(yàn)碼生成原理來(lái)設(shè)計(jì)程序,其優(yōu)點(diǎn)是模塊代碼少,修改靈活,可移植性好,們計(jì)算的工作量大;而查表法則只需要極小的工作量即可實(shí)現(xiàn)。在實(shí)際的應(yīng)用中,具體選擇哪一種方法應(yīng)該根據(jù)處理器的處理能力來(lái)決定。下面以單總線溫度傳感芯片DS18B20為例講述其CRC校驗(yàn)的計(jì)算方法。在集總控制系統(tǒng)中,某一片DS18B20的序列碼為:(28H,0BDH,44H,3FH,00H,00H,00H,77H)。其中28H產(chǎn)品系列代碼,77H為CRC校驗(yàn)和。DS18B20采用的CRC生成多項(xiàng)式為g(x)=x8+x5+x4+1。具體的CRC計(jì)算過(guò)程如下:設(shè)置CRC寄存器,并給其賦值00(hex);將要處理的數(shù)據(jù)位存入輸入數(shù)據(jù)寄存器;將數(shù)據(jù)的8-bit字符與8位CRC進(jìn)行異或,并把結(jié)果存入數(shù)據(jù)位;輸入數(shù)據(jù)寄存器右移一位;如果移出位為1,將數(shù)據(jù)位與8位18(hex)進(jìn)行異或,結(jié)果存入數(shù)據(jù)位;數(shù)據(jù)位與輸入數(shù)據(jù)寄存器循環(huán)右移一位;將數(shù)據(jù)位存入CRC寄存器;數(shù)據(jù)位循環(huán)右移一位。重復(fù)第2步至第8步直到8次移位全部完成。此時(shí)一個(gè)8-bit數(shù)據(jù)處理完畢。從第2步開始裝入下一個(gè)數(shù)據(jù)直到所有數(shù)據(jù)全部處理完畢。最終CRC寄存器的內(nèi)容即為CRC值。3.單總線芯片的供電單總線接口技術(shù)的另外一個(gè)顯著的特點(diǎn)就是不需要使用獨(dú)立的電源,所有的單總線芯片都可以通過(guò)單線寄生電源供電。圖6.3所示對(duì)單線寄生供電的原理進(jìn)行了描述。圖6.3寄生供電原理在圖6.3所示中,DQ引腳連接在單線總線上,整個(gè)器件的電源來(lái)自這條總線上并接的主機(jī),這種“偷電”式的供電又稱為寄生電源(ParasitePower)。當(dāng)總線處于高電平時(shí)不僅經(jīng)過(guò)二極管給芯片提供了電源,同時(shí)又給內(nèi)部電容器充電而存儲(chǔ)了能量;當(dāng)總線變?yōu)榈碗娖綍r(shí)二極管截止,芯片改由電容器供電,仍可正常操作,當(dāng)然維持時(shí)間不可能太長(zhǎng)??梢姙榱舜_保器件正常工作,總線上應(yīng)該間隔地輸出高電平,且保障能提供足夠的電源電流,一般應(yīng)有1mA。因此當(dāng)主設(shè)備位用5V電源時(shí),總線的上拉電阻不可能大于5kQ。需要說(shuō)明的是,當(dāng)同一單總線上有多個(gè)器件同時(shí)操作時(shí)會(huì)出現(xiàn)供電不足的問(wèn)題。為了解決單總線供電不足的問(wèn)題,可以采用圖6.4所示的方法。在圖6.4中,使用MOSFET將I/O線的高電平強(qiáng)拉到5.0V,從而可以增加驅(qū)動(dòng)電流。圖6.4使用MOSFE將單總線拉至5.0V除了圖6.4介紹的解決供電問(wèn)題的方法外,還可以通過(guò)單總線芯片的VDD引腳使用外接電源的方法來(lái)解決這一問(wèn)題。在這種解決方法下。應(yīng)將I/O引腳通過(guò)4.7k◎的電阻連接到正電源端。采用這種外接電源供電的方法有如下的優(yōu)點(diǎn):免除了電源驅(qū)動(dòng)能力的后顧之憂,一條總線上掛接的節(jié)點(diǎn)數(shù)量可以真正不受限制;無(wú)需很強(qiáng)的上拉;在器件高負(fù)荷工作期間,I/O總線不必持久保持高電平給器件充電,這樣可以提高數(shù)據(jù)傳輸速率;使多個(gè)器件可以同時(shí)工作。6.1.2單總線技術(shù)的特點(diǎn)及其應(yīng)用單總線技術(shù)以其簡(jiǎn)單的接線方式、低廉的成本、簡(jiǎn)單的程序設(shè)計(jì)有著無(wú)可比擬的優(yōu)勢(shì),下面就來(lái)詳細(xì)的介紹單總線的特點(diǎn)及其應(yīng)用。.單總線技術(shù)的特點(diǎn)單總線技術(shù)有以下三個(gè)顯著的特點(diǎn):,單總線芯片通過(guò)一根信號(hào)線進(jìn)行地址信息、控制信息及數(shù)據(jù)信息的傳送,并通過(guò)該信號(hào)線為單總線芯片提供電源;?每個(gè)單總線芯片都具有全球唯一的訪問(wèn)序列號(hào).當(dāng)多個(gè)單總線器件掛在同一單總線上時(shí),對(duì)所有單總線芯片的訪問(wèn)都通過(guò)該唯一序列號(hào)進(jìn)行區(qū)分;,單總線芯片在工作過(guò)程中,不需要提供外接電源,而通過(guò)它本身具有的“總線竊電”技術(shù)從總線上獲取電源。除了以上的三個(gè)特點(diǎn),單總線技術(shù)采用了特殊的總線通信協(xié)議來(lái)實(shí)現(xiàn)數(shù)據(jù)通信。在通信過(guò)程中,單總線數(shù)據(jù)波形類似于脈沖寬度調(diào)制信號(hào),總線發(fā)出復(fù)位信號(hào)(保持低電平的周期最長(zhǎng))同步整個(gè)總線,然后由系統(tǒng)主機(jī)初始化每一位數(shù)據(jù)時(shí)隙,利用寬脈沖或窄脈沖來(lái)實(shí)現(xiàn)寫“0”或?qū)憽?”。在讀數(shù)據(jù)時(shí),主機(jī)利用窄脈沖初始化時(shí)隙,從機(jī)將數(shù)據(jù)線保持在低電平,通過(guò)展寬低電平脈沖返回邏輯“0”,或保持脈沖寬度不變來(lái)返回邏輯“1”。大多數(shù)的單總線器件支持兩種數(shù)據(jù)速率,較低的數(shù)據(jù)速率(標(biāo)準(zhǔn))約為14kbit/s,較高的數(shù)據(jù)速率約為140kbit/s。關(guān)于單總線的數(shù)據(jù)傳輸協(xié)議將在6.2節(jié)中進(jìn)行詳細(xì)的介紹。.應(yīng)用單總線技術(shù)的典型芯片單總線芯片不僅可以方便地組建基于單總線的微型局域網(wǎng),而且由于其引腳極少,容易與微處理器等其他器件接口,在PCB板的布線過(guò)程中也較為簡(jiǎn)單,干擾小、而且省電,因此也廣泛應(yīng)用于各類電子設(shè)備中,如設(shè)備的安全密碼、設(shè)備屬性登記與標(biāo)識(shí)、設(shè)備的溫度監(jiān)控、電源電壓監(jiān)視、外部事件記錄、實(shí)時(shí)時(shí)鐘等。DallasSemiconductor公司生產(chǎn)的單總線芯片系列已有30多個(gè)產(chǎn)品,而且每年都有不少的新產(chǎn)品推出。為了方便讀者開發(fā)應(yīng)用單總線器件,現(xiàn)將目前已有的單總線品種列在表6.1中,表中的封裝結(jié)構(gòu)代號(hào)含義為:1為PR-35、2為SSOP、3為TO-92、4為SOT-223、5為TSOC-6、6為DIPl6、7為SOIC16、8為SOIC8(150mil)、9為SOIC8(208mil)、10為CSP。表6.1中的各類存儲(chǔ)器容量均以二進(jìn)制的位為單位。表6.1單總線芯片總覽名稱功能和用途ROMID存儲(chǔ)器封裝DS18209位數(shù)字溫度計(jì)64位16位EEPROM1,2DS18B209?12位數(shù)字溫度計(jì)64位16位EEPROM3,8DS18S209位數(shù)字溫度計(jì)64位16位EEPROM3,8DS1822經(jīng)濟(jì)型9?12位數(shù)字溫度計(jì)64位無(wú)3,8DS2223經(jīng)濟(jì)性RAM無(wú)256位RAM3,4DS2224經(jīng)濟(jì)性RAM+ROM32位ROM224位RAM3,4DS2401硅序列號(hào)64位無(wú)3,4,5,10DS2404實(shí)時(shí)時(shí)鐘+經(jīng)濟(jì)型RAM64位4096位NVRAM2,6,7DS2404-C01實(shí)時(shí)時(shí)鐘+雙端口存儲(chǔ)器64位4096位雙端口NVRAM7DS2405單通道可尋址開關(guān)64位無(wú)3,4,5DS2406雙通道可尋址開關(guān)+存儲(chǔ)器64位1024位EPROM3,5DS2407雙通道可尋址開關(guān)+存儲(chǔ)器64位1024位EPROM3,5DS20488通道可尋址開關(guān)+存儲(chǔ)器64位1024位EPROM7

DS2049微型局域網(wǎng)耦合器64位無(wú)5DS2415實(shí)時(shí)時(shí)鐘64位無(wú)5DS2417實(shí)時(shí)時(shí)鐘+中斷輸出64位無(wú)5,10DS2422雙通道事彳4^計(jì)數(shù)器+RAM64位1024位NVRAM5DS2423雙通道事彳4^計(jì)數(shù)器+RAM64位4096位NVRAM5DS2430AEEPROM64位256位EEPROM3,5,10DS2432EEPROM64位1024位EEPROM5DS2433EEPROM64位4096位EEPROM1,9,10DS24504路16位A/D轉(zhuǎn)換器64位無(wú)9DS2480RS232到單總線轉(zhuǎn)換/驅(qū)動(dòng)器無(wú)無(wú)8DS2480BRS232到單總線轉(zhuǎn)換/驅(qū)動(dòng)器無(wú)無(wú)8DS2502只加存儲(chǔ)器64位1024位EPROM3,5,8,10DS2502-E64只加存儲(chǔ)器64位1024位EPROM3,5DS2502-UNW只加存儲(chǔ)器64位1024位EPROM3,5,8,10DS2505只加存儲(chǔ)器64位16384位EPROM3,5,10DS2505-UNW只加存儲(chǔ)器64位16384位EPROM3,5,10DS2506只加存儲(chǔ)器64位65536位EPROM1,9,10DS2506-UNW只加存儲(chǔ)器64位65536位EPROM1,9,10DS2890100K數(shù)字電位器64位無(wú)3,5DS950225KV以上£$跺護(hù)二極管無(wú)無(wú)5DS950325KV以上£$跺護(hù)二極管無(wú)無(wú)5DS9097U-09通用單總線COMC適配器64位無(wú)套件除了表6.1中所列出的器件外,DallasSemiconductor公司還提供一種獨(dú)具特色的iButton系列產(chǎn)品。iButton產(chǎn)品從原理與功能上而言,仍然是單總線芯片產(chǎn)品,僅它們的封裝形式餃為特別。iButton產(chǎn)品有F3和F5兩種封裝形式,均為不銹剛外殼密封,其形狀如紐扣電池,F(xiàn)5封裝的外表大小相當(dāng)于4枚1分的人民幣硬幣疊在一起,F(xiàn)3則較薄一些。它們的引腳與紐扣電池相似,只有2個(gè)引線端面,背面是地線,中心面是數(shù)據(jù)線。有些iButton內(nèi)部帶微型鋰電池,為內(nèi)部實(shí)時(shí)時(shí)鐘或有關(guān)記錄數(shù)據(jù)供電,可保存10年。有些則無(wú)需內(nèi)部電池,例如EEPROM的產(chǎn)品,有些產(chǎn)品還將序列號(hào)刻在外殼上供用戶辨識(shí)。由于iButton封裝的特殊性,使用時(shí)不是采用傳統(tǒng)的焊接方法,而是采用嵌入式的接觸連接。除了在單總線系統(tǒng)中用作節(jié)點(diǎn)從設(shè)備外,通常也將這類芯片嵌入其他電子產(chǎn)品中作為安全認(rèn)證或某種輔助功能。在表6.2列出了iButton系列的今部產(chǎn)品,其中大部分都在表6.1中找到功能相同的芯片,但iButton只有2個(gè)引腳,所以在表6.1中有些引腳較多的芯片在表6.2中無(wú)法找到替代品。表6.2iButton系列單總線芯片總覽功能和用途ROMID存儲(chǔ)器封裝DS1920溫度計(jì)Hutton64位16位EEPRROMF5

DS1921實(shí)時(shí)時(shí)鐘+溫度計(jì)Hutton64位4096位NVRAMF5DS1954密碼Hutton64位F5DS1955密碼Hutton64位F5DS1957密碼Hutton64位F5DS1963金融安全認(rèn)證iButton64位4096位NVRAMF5帶寫循環(huán)計(jì)數(shù)器的金融DS1963L64位4096位NVRAMF5iButtonDS1971EEPRROMiButton64位256+64位EEPRAMF3,F5DS1973EEPRROMiButton64位4096位EEPRROMF3,F5DS1982只加存儲(chǔ)器iButton64位1024位EPROMF3,F5DS1982U只加存儲(chǔ)器iButton64位1024位EPROMF3,F5DS1985只加存儲(chǔ)器iButton64位16384位EPROMF3,F5DS1985U只加存儲(chǔ)器iButton64位16384位EPROMF3,F5DS1986只加存儲(chǔ)器iButton64位65536位EPROMF3,F5DS1986U只加存儲(chǔ)器iButton64位65536位EPROMF3,F5DS1990A序列號(hào)Hutton64位無(wú)F3,F5DS1991存儲(chǔ)器iButton64位1344位NVRAMF5DS1992存儲(chǔ)器iButton64位1024位NVRAMF5DS1993存儲(chǔ)器iButton64位4096位NVRAMF5DS1994實(shí)時(shí)時(shí)鐘+存儲(chǔ)器iButton64位4096位NVRAMF56.2單總線數(shù)據(jù)傳輸協(xié)議單總線因采用單根信號(hào)線,既傳輸時(shí)鐘,又傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的,具有獨(dú)特的接線方式,因而其通訊協(xié)議也與目前多數(shù)標(biāo)準(zhǔn)串行數(shù)據(jù)通信方式所不同。典型的單總線命令序列如下:ROM命令,跟隨需要交換的數(shù)據(jù);,跟隨需要交換的數(shù)據(jù);每次訪問(wèn)單總線器件,必須嚴(yán)格遵守這個(gè)命令序列。如果出現(xiàn)序列混亂,則單總線器件不會(huì)響應(yīng)主機(jī)。但是,這個(gè)準(zhǔn)則對(duì)于搜索ROM命令和報(bào)警搜索命令例外。在執(zhí)行兩者中任何一條命令之后,主機(jī)不能執(zhí)行其后的功能命令,必須返回至第一步。為了說(shuō)明單總線數(shù)據(jù)傳輸?shù)倪^(guò)程,以下將分4個(gè)部分對(duì)單總線數(shù)據(jù)通信傳輸過(guò)程進(jìn)行介紹,它們分別是單總線通信信號(hào)類型、單總線通信初始化、單總線通信的ROM命令及單總線通信的功能命令。單總線通信信號(hào)類型所有的單總線器件要求采用嚴(yán)格的通信協(xié)議,以保證數(shù)據(jù)的完整性。該協(xié)議定義了幾種信號(hào)類型:復(fù)位脈沖、應(yīng)答脈沖、寫0、寫1、讀0和讀1。所有這些信號(hào),除了應(yīng)答脈沖以外,都由主機(jī)發(fā)出同步信號(hào)。并且發(fā)送所有的命令和數(shù)據(jù)都是字節(jié)的低位在前。注意:這一點(diǎn)與多數(shù)串行通信格式不同(多數(shù)為字節(jié)的高位在前)單總線通信協(xié)議中不同類型的信號(hào)都采用一種類似于脈寬調(diào)制的波形表示,邏輯“0”用較長(zhǎng)的低電平持續(xù)周期表示,邏輯“1”用較長(zhǎng)的高電平持續(xù)周期表示。在單總線通信協(xié)議中,讀/寫實(shí)習(xí)的概念十分重要,當(dāng)系統(tǒng)主機(jī)向從設(shè)備輸出數(shù)據(jù)時(shí)產(chǎn)生寫時(shí)隙,當(dāng)主機(jī)從從機(jī)設(shè)備中讀取數(shù)據(jù)時(shí)產(chǎn)生瀆時(shí)隙,每一個(gè)時(shí)隙內(nèi)總線只能傳輸一位數(shù)據(jù)。無(wú)論是讀時(shí)隙還是寫時(shí)隙,它們都以主機(jī)驅(qū)動(dòng)數(shù)據(jù)線為低電平開始,數(shù)據(jù)線的下降沿使從設(shè)備觸發(fā)其內(nèi)部的延遲電路,使之與主機(jī)同步。在寫時(shí)隙內(nèi),該延遲電路決定從設(shè)備采樣數(shù)據(jù)線的時(shí)間窗口。2單總線通信協(xié)議中存在兩種寫時(shí)隙:寫1和寫0。主機(jī)采用寫1時(shí)隙向從機(jī)寫入1,而采用寫0時(shí)隙向從機(jī)寫入0。所有寫時(shí)隙至少需要60ms,且在兩次獨(dú)立的寫時(shí)隙之間至少需要1ms的恢復(fù)時(shí)間。兩種寫時(shí)隙均起始于主機(jī)拉低數(shù)據(jù)總線。產(chǎn)生寫1時(shí)隙的方式:主機(jī)在拉低總線后,接著必須在15ms之內(nèi)釋放總線,由上拉電阻將總線拉至高電平;產(chǎn)生寫0時(shí)隙的方式為在主機(jī)拉低總線后,只需在整個(gè)時(shí)隙期間保持低電平即可(至少60ms)o在寫時(shí)隙開始后15ms?60ms期間,單總線器件采樣總線電平狀態(tài)。如果在此期間采樣值為高電平,則邏輯1被寫入該器件;如果為0,則寫入邏輯0。圖6.5給出了寫時(shí)隙(包括寫1和寫0)時(shí)序的圖形解釋。主機(jī)寫0時(shí)隙GND0g<主機(jī)寫0時(shí)隙<120R*—?V從機(jī)采樣時(shí)間窗口A15gs1511s30gs>1主機(jī)寫0時(shí)隙GND0g<主機(jī)寫0時(shí)隙<120R*—?V從機(jī)采樣時(shí)間窗口A15gs1511s30gs>11J.s1511s主機(jī)寫1程序?從機(jī)采樣時(shí)間窗口A1511s3011s圖6.5單總線通信協(xié)議中寫時(shí)隙時(shí)序圖2楊金巖鄭應(yīng)強(qiáng)張振仁.8051單片機(jī)數(shù)據(jù)傳輸接口擴(kuò)展技術(shù)與應(yīng)用實(shí)例[M]北京:人民郵電出版社出版.2005.216?225在圖6.5中,黑色實(shí)線代表系統(tǒng)主機(jī)拉低總線,黑色虛線代表上拉電阻將總線拉高。對(duì)于讀時(shí)隙,單總線器件僅在主機(jī)發(fā)出讀時(shí)隙時(shí),才向主機(jī)傳輸數(shù)據(jù)。所以在主機(jī)發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)隙,以便從機(jī)能夠傳輸數(shù)據(jù)。所有瀆時(shí)隙至少需要60ms,且在兩次獨(dú)立的讀時(shí)隙之間至少需要1ms的恢復(fù)時(shí)間。每個(gè)讀時(shí)隙都由主機(jī)發(fā)起.至少拉低總線1ms。在主機(jī)發(fā)起讀時(shí)隙之后,單總線器件才開始在總線上發(fā)送0或1。若從機(jī)發(fā)送1,則保持總線為高電平;若發(fā)送0,則拉低總線。當(dāng)發(fā)送0時(shí),從機(jī)在該時(shí)隙結(jié)束后釋放總線,由上拉電阻將總線拉回至空閑高電平狀態(tài)。從機(jī)發(fā)出的數(shù)據(jù)在起始時(shí)隙之后,保持有效時(shí)間15ms,因此主機(jī)在讀時(shí)隙期間必須釋放總線并且在時(shí)隙起始后的15ms之內(nèi)采樣總線狀態(tài)。圖6.6所示給出了讀時(shí)隙(包括讀1和讀0)時(shí)序的圖形解釋。主機(jī)讀0時(shí)隙主機(jī)讀1程序圖6.6單總線通信協(xié)議中讀時(shí)隙時(shí)序圖在圖6.6所示中,黑色實(shí)線代表系統(tǒng)主機(jī)拉低總線,灰色實(shí)線代表從機(jī)拉低總線,而黑色的虛線則代表上拉電阻將總線拉高。以上對(duì)單總線通信過(guò)程中的幾種信號(hào)進(jìn)行了介紹,但出于復(fù)位脈沖及應(yīng)答脈沖與單總線通信過(guò)程初始化的密切關(guān)系.對(duì)這兩種信號(hào)的介紹將在下書中進(jìn)行詳細(xì)的闡述。單總線通信的初始化單總線上的所有通信都是以初始化序列開始,初始化序列包括主機(jī)發(fā)出的復(fù)位脈沖及從機(jī)的應(yīng)答脈沖,這一過(guò)程如圖6.7所示。在圖6.7中,黑色實(shí)線代表系統(tǒng)主機(jī)拉低總線,灰色實(shí)線代表從機(jī)拉低總線,而黑色的虛線則代表上拉電阻將總線拉高。主機(jī)發(fā)送復(fù)位脈沖

至少48011sVccGNDV主機(jī)發(fā)送復(fù)位脈沖

至少48011sVccGNDV-從機(jī)等待15?60從機(jī)應(yīng)答脈沖60-240Rs主機(jī)接受至少480[1s圖6.7初始化過(guò)程中的復(fù)位與應(yīng)答脈沖系統(tǒng)主設(shè)備發(fā)送端發(fā)送的復(fù)位脈沖是一個(gè)480科s?960科s的低電平,然后釋放總線進(jìn)入接收狀態(tài)。此時(shí)系統(tǒng)總線通過(guò)47k◎的上拉電阻接至VCC高電平端,時(shí)間約為15ds?60ws,接著在接收端的設(shè)備就開始檢測(cè)I/O引腳上的下降沿以監(jiān)視在線脈沖的到來(lái)。主設(shè)備處于這種狀態(tài)下的時(shí)間至少為480科s。作為從設(shè)備的器件在接收到系統(tǒng)主設(shè)備發(fā)出的復(fù)位脈沖之后,向總線發(fā)出一個(gè)應(yīng)答脈沖,表示從沒(méi)備已準(zhǔn)備好,可根據(jù)各類命令發(fā)送或接收數(shù)據(jù)。通常情況下,器件等待15ds?60科s即可發(fā)送應(yīng)答脈沖(該脈沖是一個(gè)60科s?240科s的低電平信號(hào),它由從機(jī)強(qiáng)迫將總線拉低)。復(fù)位脈沖是主設(shè)備以廣播方式發(fā)出的,因而總線上所有的從設(shè)備都同時(shí)發(fā)出應(yīng)答脈沖。一旦檢測(cè)到應(yīng)答脈沖后,主設(shè)備就認(rèn)為總線上已連接了從設(shè)備,接著主設(shè)備將發(fā)送有關(guān)的ROM功能命令。如果主設(shè)備未能檢測(cè)到應(yīng)答脈沖,則認(rèn)為總線上沒(méi)有掛接單總線從設(shè)備。單總線通信的ROM命令在系統(tǒng)主機(jī)檢測(cè)到應(yīng)答脈沖后,就可以發(fā)出ROM命令。這些命令與各個(gè)從機(jī)唯一的64位ROM代碼相關(guān),允許主機(jī)在單總線上連接多個(gè)從機(jī)設(shè)備時(shí),指定操作某個(gè)從機(jī)設(shè)備。這些命令還允許主機(jī)能夠檢測(cè)到總線上有多少個(gè)從機(jī)設(shè)備以及設(shè)備類型,或者有沒(méi)有設(shè)備處于報(bào)警狀態(tài)。從機(jī)設(shè)備可以支持5種ROM命令(實(shí)際情況與具體型號(hào)有關(guān)),每種命令長(zhǎng)度為8位。主機(jī)在發(fā)出功能命令之前,必須送出合適的ROM命令,下面簡(jiǎn)要地介紹各個(gè)ROM命令的功能,以及使用在何種情況下。ROM命令的操作流程如圖6.8所示。從機(jī)友送ROM命令YYY從機(jī)發(fā)送產(chǎn)品代碼一個(gè)字節(jié)主機(jī)發(fā)送第0位從機(jī)發(fā)送第0位從機(jī)發(fā)送第0位反碼初始化序列產(chǎn)機(jī)委送應(yīng)答脈沖主機(jī)發(fā)送復(fù)位脈沖v讀ROM命令匹配ROM命令叟索ROM命令YY從機(jī)發(fā)送第0位從機(jī)發(fā)送第0位反碼條件搜索命令直訪ROM命令從機(jī)發(fā)送系列

碼6個(gè)字節(jié)主機(jī)發(fā)送第0位匹配?匹配?主機(jī)發(fā)送第從機(jī)友送ROM命令YYY從機(jī)發(fā)送產(chǎn)品代碼一個(gè)字節(jié)主機(jī)發(fā)送第0位從機(jī)發(fā)送第0位從機(jī)發(fā)送第0位反碼初始化序列產(chǎn)機(jī)委送應(yīng)答脈沖主機(jī)發(fā)送復(fù)位脈沖v讀ROM命令匹配ROM命令叟索ROM命令YY從機(jī)發(fā)送第0位從機(jī)發(fā)送第0位反碼條件搜索命令直訪ROM命令從機(jī)發(fā)送系列

碼6個(gè)字節(jié)主機(jī)發(fā)送第0位匹配?匹配?主機(jī)發(fā)送第0位Y機(jī)設(shè)報(bào)警標(biāo)志?從機(jī)發(fā)送CRC字節(jié)主機(jī)發(fā)送

第1位從機(jī)發(fā)送第1位

從機(jī)發(fā)送第1位反碼

一主機(jī)發(fā)送第1位匹配?匹配?YY主機(jī)發(fā)送第63位從機(jī)發(fā)送第63位從機(jī)發(fā)送第63位反碼主機(jī)發(fā)送第63位Y63位匹配?第63位匹配?主機(jī)發(fā)送功能命令圖6.8ROM命令流程圖.讀ROM(代碼為33H)該命令僅適用于總線上只有一個(gè)從機(jī)設(shè)備(單節(jié)點(diǎn))的情況。它允許主機(jī)直接讀出從機(jī)的64位ROM代碼,而無(wú)需執(zhí)行搜索ROM過(guò)程。如果該命令用于多節(jié)點(diǎn)系統(tǒng),則必然發(fā)生數(shù)據(jù)沖突,因?yàn)槊總€(gè)從機(jī)設(shè)備都會(huì)響應(yīng)該命令。.匹配ROM(代碼55H)匹配ROM命令跟隨64位ROM代碼,從而允許主機(jī)訪問(wèn)多節(jié)點(diǎn)系統(tǒng)中某個(gè)指定的從機(jī)設(shè)備。僅當(dāng)從機(jī)完全匹配64位的ROM代碼時(shí),才會(huì)響應(yīng)主機(jī)隨后發(fā)出的功能命令,而其他設(shè)備將處于等待復(fù)位脈沖的狀態(tài)。.搜索ROM(代碼為F0H)當(dāng)系統(tǒng)初始上電時(shí),主機(jī)必須找出總線上所有從機(jī)設(shè)備的ROM代碼,這樣主機(jī)就能夠判斷出從機(jī)的數(shù)目和類型。主機(jī)通過(guò)重復(fù)執(zhí)行搜索ROM循環(huán)(搜索ROM命令跟隨著位數(shù)據(jù)交換),以找出總線上所有的從機(jī)設(shè)備。如果總線上只有一個(gè)從機(jī)設(shè)備,則可以采用讀ROM命令來(lái)替代搜索ROM命令。在每次執(zhí)行完搜索ROM循環(huán)后,主機(jī)必須返回至命令序列的第一步(初始化)。.直訪ROM(代碼CCH)主機(jī)能夠采用該命令同時(shí)訪問(wèn)總線上的所有從機(jī)設(shè)備,而無(wú)須發(fā)出任何ROM代碼信息。例如,如果單總線器件采用DS18B20溫度傳感器,主機(jī)通過(guò)在發(fā)出直訪ROM命令后跟隨轉(zhuǎn)換溫度命令[44h],就可以同時(shí)命令總線上所有的DS18B20開始轉(zhuǎn)換溫度,這樣大大節(jié)省了主機(jī)的時(shí)間。值得注意的是,如果直訪ROM命令跟隨的是讀暫存器[BEh]的命令(包括其他讀操作命令),則該命令只能應(yīng)用于單節(jié)點(diǎn)系統(tǒng),否則將由于多個(gè)節(jié)點(diǎn)都響應(yīng)該命令而引起數(shù)據(jù)沖突。.條件搜索(代碼ECH)需要說(shuō)明的是,僅有少數(shù)單總線器件支持該ROM命令,而且在這些支持該命令的器件中.具有那些報(bào)警置位的從機(jī)響應(yīng)此命令。該命令允許主機(jī)設(shè)備判斷哪些從機(jī)設(shè)備發(fā)生了報(bào)警(如最近的測(cè)量溫度過(guò)高或過(guò)低等)。該命令的工作方式完全等同于搜索ROM命令,此外與搜索ROM命令一樣,在完成條件搜索循環(huán)后,主機(jī)必須返回至命令序列的第一步。6.2.4單總線器件的ROM搜索Dallas公司的每片單總線器件都具有惟一的64位注冊(cè)碼,它存儲(chǔ)在只讀存儲(chǔ)器(ROM)中,在單總線網(wǎng)絡(luò)中注冊(cè)碼用于單總線系統(tǒng)主機(jī)對(duì)從機(jī)器件進(jìn)行逐一尋址。如果單總線網(wǎng)絡(luò)中從機(jī)器件的ROMID是未知的,可以通過(guò)ROMID搜索算法來(lái)找到該注冊(cè)碼,下面將詳細(xì)解釋ROMID的搜索算法。單總線器件的ROM注冊(cè)碼的數(shù)據(jù)格式如圖6.9所示。MSB64位ROME冊(cè)碼LSB8位CR微驗(yàn)碼MSBLSB48位序列號(hào)MSBLSE8位家族碼MSBLSB圖6.9單總線器件RO雌冊(cè)碼的數(shù)據(jù)格式ROM注冊(cè)碼的搜索算法采用的是二叉樹型結(jié)構(gòu),搜索過(guò)程沿各分節(jié)點(diǎn)進(jìn)行,直到找到器件的ROM碼即葉子為止;后續(xù)的搜索操作沿著節(jié)點(diǎn)上的其他路徑進(jìn)行,按照同樣的方式直到找到總線上的所有器件代碼。搜索算法首先通過(guò)復(fù)位(Reset)和在線應(yīng)答脈沖(PresencePulse)時(shí)隙將單總線上的所有器件復(fù)位,成功地執(zhí)行該操作后,發(fā)送1個(gè)字節(jié)的搜索命令,搜索命令使單總線器件準(zhǔn)備就緒并開始進(jìn)行搜索操作。搜索命令分為兩類,標(biāo)推搜索命令(OFH)只用來(lái)搜索連接到網(wǎng)絡(luò)中所有器件,報(bào)警或條件搜索命令(ECH)只用來(lái)搜索那些處于報(bào)警狀態(tài)下的器件,這種方式縮小了搜索范圍,可以快速查找到所需要注意的器件。搜索命令發(fā)出之后開始實(shí)際的搜索過(guò)程。首先總線上的所有從機(jī)器件同時(shí)發(fā)送ROM注冊(cè)碼中的第一位(最低有效位),與所有的單總線通信一樣,無(wú)論是讀取數(shù)據(jù)還是向從機(jī)器件寫數(shù)據(jù),都由單總線系統(tǒng)主機(jī)啟動(dòng)每一位的操作。按照單總線的特性,當(dāng)所有從機(jī)器件同時(shí)應(yīng)答主機(jī)時(shí),單總線上的結(jié)果相當(dāng)于全部發(fā)送數(shù)據(jù)位的邏輯與。從機(jī)發(fā)送其ROM注冊(cè)碼的第一位后,主機(jī)啟動(dòng)下一位操作,接著從機(jī)發(fā)送第一位數(shù)據(jù)的補(bǔ)碼,從兩次讀到的數(shù)據(jù)位可以對(duì)ROM注冊(cè)碼的第一位做出幾種判斷,判斷的結(jié)果如表6.3所示。表6.3兩次讀結(jié)果判據(jù)第一次讀第二次讀結(jié)論00從機(jī)ROME冊(cè)碼中的當(dāng)前位置既有0、也有1,即存在差異01從機(jī)ROME冊(cè)碼的當(dāng)前兩位均為010從機(jī)ROME冊(cè)碼的當(dāng)前兩位均為111總線上沒(méi)有從機(jī)器件響應(yīng)按照搜索算法的要求,單總線主機(jī)必須向總線上的從機(jī)發(fā)回一個(gè)指定位,如果從機(jī)器件中ROM注冊(cè)碼的當(dāng)前位的值與該數(shù)據(jù)位匹配,則繼續(xù)參與搜索過(guò)程;若從機(jī)器件的當(dāng)前位與之不匹配,則該器件轉(zhuǎn)換到等待狀態(tài),并保持等待狀態(tài)直到下一個(gè)單總線復(fù)位信號(hào)到來(lái)。其余63位ROM注冊(cè)碼的搜索依然按照這種“讀兩位”、“寫一位”的模式進(jìn)行重復(fù)操作。單總線系統(tǒng)中主機(jī)和從機(jī)所執(zhí)行的搜索過(guò)程如表6.4所示表6.4單總線主機(jī)和從機(jī)的搜索過(guò)程主機(jī)從機(jī)單總線發(fā)出復(fù)位信號(hào)產(chǎn)生在線應(yīng)答脈沖讀取第64位的邏輯與從機(jī)發(fā)送讀取第64位的邏輯與從機(jī)發(fā)送ROMft冊(cè)碼的第64位讀取第64位補(bǔ)碼的邏輯與從機(jī)發(fā)送ROMtt冊(cè)碼的第64位的補(bǔ)碼寫搜索命令(標(biāo)準(zhǔn)或報(bào)警)從機(jī)準(zhǔn)備搜索讀第1位的邏輯與從機(jī)發(fā)送ROME冊(cè)碼的第1位讀第1位補(bǔ)碼的邏輯與從機(jī)發(fā)送ROME冊(cè)碼的第1位的補(bǔ)碼寫第1位指定位從機(jī)接受主機(jī)的指定位,若所讀的位與RO堀的第1位不匹配,進(jìn)入等待狀態(tài)寫第64位指定位從機(jī)接受主機(jī)的指定位,若所讀的位與RO涮的第寫第64位指定位按照這種搜索算法進(jìn)行下去,最終除了一個(gè)從機(jī)器件外所有從機(jī)都進(jìn)入等待狀態(tài),經(jīng)過(guò)最后一輪檢測(cè)即可得到最后未進(jìn)入等待狀態(tài)器件的ROM注冊(cè)碼,并在后續(xù)搜索過(guò)程中,選用不同的路徑或分支來(lái)查找其他器件的ROM注冊(cè)碼。在本節(jié)的介紹過(guò)程中,ROM注冊(cè)碼的數(shù)據(jù)位用第l位最低有效位到第64位最高有效位來(lái)進(jìn)行表示,而沒(méi)有采用編程語(yǔ)言中第0位到第63位的索引值模式,這樣設(shè)置允許將差異位置記數(shù)器初始值設(shè)置為0,為后續(xù)比較提供了方便。從表6.3可以看出,如果所有單總線上的器件在當(dāng)前位具有相同值,那么只有一條分支

路徑可選;總線上沒(méi)有器件響應(yīng)的情況是一種異常狀態(tài),可能是要查找的器件在搜尋過(guò)程中與單總線脫離;如果當(dāng)前位既有0也有1,這種情況稱為位值差異,它對(duì)后續(xù)搜索過(guò)程中查找器件起關(guān)鍵作用。搜索算法指定在第一輪查詢中若出現(xiàn)差異(數(shù)據(jù)位/補(bǔ)碼=0/0),則選用“0”路彳5(注:不同的算法可能有不同的選擇,也就是說(shuō)其他可行的算法也許會(huì)在此處選擇“1”路彳5),記錄最后一次值差異的位置以供下一次搜索使用。表6.5列出了出現(xiàn)值差異時(shí)路徑的選取情況。表6.5搜索路徑方向搜索位所在位置和最后一次差異所在位置的比較路徑選擇=采用路徑“1”<采用與上次相同的路徑(來(lái)自上次搜索到的RO網(wǎng))>采用路徑“0”搜索算法計(jì)算還對(duì)最初8位過(guò)程中出現(xiàn)的最后一次位差異保持跟蹤,64位ROM注冊(cè)碼的前8位是家族碼,在器件的搜索過(guò)程中可以按照其家族碼進(jìn)行分類。記錄家族碼的最后一次差異可以用于有選擇性地跳過(guò)單總線器件的整個(gè)分組,如需進(jìn)行選擇性地搜索,可參考各具體器件的詳細(xì)解釋。64位的ROM注冊(cè)碼中包含8位循環(huán)冗余校驗(yàn)碼(參見圖6.9),循環(huán)冗余校驗(yàn)碼用于驗(yàn)證是否搜索到正確的ROM注冊(cè)碼。下面采用如圖6.10示的流程圖對(duì)單總線上所有從機(jī)器件ROM注冊(cè)碼的搜索過(guò)程進(jìn)行說(shuō)明。在此之前,先對(duì)流程圖中將要用到的一些全局或局部變量進(jìn)行介紹,這些變量分別是:Cmp_id_bit:id_bit位的補(bǔ)碼,該位是搜索過(guò)程中所有應(yīng)答器件的id_bit_number位的補(bǔ)碼的邏輯與。id_bit:在位搜索過(guò)程中第1次讀取的值,該位是搜索過(guò)程中所有應(yīng)答器件的id_bit_number位的邏輯與。id_bit_number:記錄當(dāng)前搜索是1到64位ROM碼中的哪一個(gè)數(shù)據(jù)位。LastDeviceFlag:指明前一次搜索到的已是最后一個(gè)器件的標(biāo)志位。LastDiscrepancy:位指針,指明下次搜索從哪個(gè)值差異位開始。LastFamilyDiscrepancy:位指針,用來(lái)指明LastDiscrepancy是否在ROM注冊(cè)碼中前8位家族碼內(nèi)和它的位置。last_zero:上次被寫入0的值差異位的位置。ROM_NO:記錄當(dāng)前正在查找的ROM注冊(cè)碼的8字節(jié)緩沖器。Search_direction:位變量,其值用來(lái)指明搜索方向,具有此數(shù)據(jù)位規(guī)定值的所有器件繼續(xù)響應(yīng)搜索操作,其他器件轉(zhuǎn)入等待狀態(tài)直到下一次單總線復(fù)位。/發(fā)送單總線

復(fù)位信號(hào)檢測(cè)到應(yīng)否'答脈沖?)1=1?《LastDeviceFlag/發(fā)送單總線

復(fù)位信號(hào)檢測(cè)到應(yīng)否'答脈沖?)1=1?《LastDeviceFlagid_bit=是-cmp_id_bit=1?/id_bit_number=LsatDiscrepancy?否否idbitnumber>A:——■,LsatDiscrepancy?:.:::,圖6.10單總線系統(tǒng)中所有單總線器件ROMB冊(cè)碼搜索流程圖(本頁(yè)流程圖接上頁(yè))圖6.10單總線系統(tǒng)中所有單總線器件ROME冊(cè)碼搜索流程圖(續(xù)1)ROMID搜索算法通過(guò)對(duì)LastDiscrepancy、LastFamilyDiscrepancy、LastDeviceFlag和ROM_NO值的處理,利用上述流程實(shí)現(xiàn)了兩個(gè)不同類型的搜索操作,這兩種操作分別是FIRST操作和NEXT操作,這兩個(gè)操作是搜索單總線器件ROMID碼的基礎(chǔ),下面分別對(duì)它們進(jìn)行介紹。FIRST操作:FIRST操作是搜索單總線上的第一個(gè)人機(jī)器件。該操作是通過(guò)將LastDiscrepancy、LastFamilyDiscrepancy和LastDeviceFlag置零,然后進(jìn)行搜索完成的。最后ROM碼從ROM_NO寄存器中讀出,若單總線上沒(méi)有器件,復(fù)位序列就檢測(cè)不到應(yīng)答脈沖,搜索過(guò)程中止。NEXT操作:NEXT操作是搜索單總線上的下一個(gè)從機(jī)器件。一般情況下,此搜索操作在FIRST操作之后或上一次NEXT操作之后進(jìn)行,保持上次搜索后這些值的狀態(tài)不變,執(zhí)行又一次搜索即可實(shí)現(xiàn)NEXT操作。之后從ROM_NO寄

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論