新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 利用1-Wire?鏈路功能獲取位置信息—一種確定器

利用1-Wire?鏈路功能獲取位置信息—一種確定器

作者: 時(shí)間:2011-12-28 來(lái)源:網(wǎng)絡(luò) 收藏
摘要:本文介紹了一種基于尋址協(xié)議的低成本串行總線系統(tǒng),用來(lái)識(shí)別丟失元件的物理位置。在測(cè)量或控制串行總線中可能存在這樣的問題,例如:多點(diǎn)溫度測(cè)量系統(tǒng)。本文詳細(xì)介紹了在低成本串行總線中,如1-Wire,如何利用具有功能的DS28EA00獲得位置信息。

本文還發(fā)表在Maxim工程期刊,第60期(PDF, 848kB)。

數(shù)字總線系統(tǒng)的共同特性即為共享。隨著微處理器的推廣,并行總線系統(tǒng)應(yīng)用日益廣泛,總線上掛接的所有元件共享數(shù)據(jù)線和地址線。片選信號(hào)可由地址線和控制信號(hào)解碼得到。根據(jù)硬件設(shè)計(jì)和布線,連接在總線上的各個(gè)器件的物理地址總是已知的。隨著技術(shù)向低成本串行總線系統(tǒng)的發(fā)展1,首先省去了地址線。但SPI?和MICROWIRE?串行總線仍具有片選功能。許多先進(jìn)的串行總線系統(tǒng)引入了基于協(xié)議的尋址方式,將地址信息作為一個(gè)前導(dǎo)碼傳輸給數(shù)據(jù)。該類總線的典型代表為I2C/SMBus?,此類通信接口縮減到只有數(shù)據(jù)線和時(shí)鐘線。為了進(jìn)一步降低成本,可以將時(shí)鐘信息嵌入到數(shù)據(jù)流中。該類總線的典型代表為1-Wire、LIN和SensorPath?總線。

由于采用了基于協(xié)議的尋址方式,因此元件物理位置方面的信息將缺失。對(duì)于采用串行總線的儀表和控制應(yīng)用(例如測(cè)量多點(diǎn)溫度),這將是一個(gè)問題。對(duì)于I2C總線而言,地址引腳與邏輯1、邏輯0、SCL或SDA相連,在某種程度上解決了這個(gè)問題。采用這一辦法,單個(gè)引腳可被設(shè)定到4種不同的數(shù)字狀態(tài),相當(dāng)于兩個(gè)位。盡管這種方法簡(jiǎn)單、有效,但由于最初的I2C協(xié)議僅提供7個(gè)地址位,因此具有一定的局限性。1-Wire總線具有64位地址,在這一方面可提供更高的靈活性。無(wú)論如何,每個(gè)增加一個(gè)地址引腳將增加成本,因此增加地址引腳不是一個(gè)好的選擇。

圖1給出了一種簡(jiǎn)單的低成本方案,可重新獲取串行總線上掛接的多個(gè)器件的物理位置,將網(wǎng)絡(luò)的起始位置的器件標(biāo)識(shí)為位置#1,并依次為網(wǎng)絡(luò)上掛接的器件編號(hào)。該方案的電路連接如圖中藍(lán)色粗線所示。在位置1處,線路接地即可。

利用1-Wire?鏈路功能獲取位置信息—一種確定器
圖1. 可進(jìn)行位置檢測(cè)的串行網(wǎng)絡(luò)

除了圖1中標(biāo)有IN和OUT的兩個(gè)引腳外,還需要通過片上邏輯讀取IN引腳和寫OUT引腳。如果協(xié)議支持多點(diǎn)網(wǎng)絡(luò)功能,那么借助于上述這些方法,主機(jī)可首先識(shí)別出第一個(gè)器件,然后再識(shí)別下一個(gè)器件,以此類推,直到完成對(duì)所有器件的定位。1-Wire總線即可滿足這一要求的串行總線系統(tǒng)。

1-Wire總線是一種簡(jiǎn)單的信令協(xié)議,可通過一條公共數(shù)據(jù)線實(shí)現(xiàn)主機(jī)/主控制器和一個(gè)或多個(gè)從機(jī)之間的半雙工、雙向通信(圖2)??梢酝ㄟ^單根1-Wire總線實(shí)現(xiàn)供電以及與從機(jī)之間的數(shù)據(jù)通信。供電通過以下方式實(shí)現(xiàn):在數(shù)據(jù)傳輸過程中,總線狀態(tài)為高時(shí)從機(jī)的內(nèi)部電容從總線上獲取電荷,總線狀態(tài)為低時(shí)利用該電荷為器件供電。典型的1-Wire主機(jī)包括一個(gè)開漏I/O引腳,并通過電阻上拉至3V至5V電源。采用這種智能通信技術(shù),可以隨時(shí)方便、高效地增加存儲(chǔ)器、認(rèn)證和混合信號(hào)功能。

利用1-Wire?鏈路功能獲取位置信息—一種確定器
圖2. 不帶功能的典型1-Wire網(wǎng)絡(luò)

所有的1-Wire系統(tǒng)都有一個(gè)重要的基本特征:每個(gè)從機(jī)都具有一個(gè)唯一的、不能更改(ROM)的64位、工廠激光刻制序列號(hào)(ID),這個(gè)序列號(hào)永遠(yuǎn)不會(huì)與其它器件重復(fù)。除了為終端產(chǎn)品提供唯一的電子ID外,64位ROM ID還允許主機(jī)從掛接在同一條總線上的許多從機(jī)設(shè)備中選擇一個(gè)器件。64位ROM ID中包含有8位家族碼,用于識(shí)別器件的類型和支持的功能。

通常,當(dāng)系統(tǒng)啟動(dòng)初始化時(shí),1-Wire主機(jī)可能并不知道總線上掛接的器件數(shù)量以及他們的ROM ID。利用總線的線與特性,主機(jī)可采用排除法確定總線上掛接的所有器件的ID。通過SearchROM*功能2,主機(jī)可確定總線上所掛接器件的ROM ID。然而,Search ROM結(jié)果無(wú)法提供單個(gè)器件的位置。例如,如圖2所示的器件ROM ID,器件的ID按照表1所示的順序獲取。

表1. 器件搜索順序
Sequence
ROM ID (Hexadecimal)
Position in Network
1
C7000000007AD242
Location #2
2
5A00000000853E42
Location #3
3
16000000008A8142
Location #1

功能的概念

采用鏈路功能確定1-Wire網(wǎng)絡(luò)環(huán)境中器件的物理位置時(shí),遵循以下幾點(diǎn):
  1. 已知系統(tǒng)級(jí)1-Wire網(wǎng)絡(luò)的物理分布,例如第一個(gè)、誰(shuí)是第二個(gè),等等,以及器件/節(jié)點(diǎn)的物理位置。
  2. 獲取器件(ROM ID)的物理連接順序,哪個(gè)是第一個(gè),哪個(gè)是最后一個(gè)。
其中a) 已知的系統(tǒng)信息,可從1-Wire網(wǎng)絡(luò)的物理布局獲得。b) 項(xiàng)通常是未知的,可以采用鏈路功能通信很容易獲取這些信息。鏈路功能(圖3)通過兩個(gè)引腳,輸入引腳(/EN)在搜索期間使能器件響應(yīng),而輸出引腳(/DONE)通知鏈路中的下一個(gè)器件它之前的器件已完成搜索。/DONE信號(hào)連接至下一個(gè)器件的/EN輸入。鏈路中第一個(gè)器件的/EN輸入被連接至GND。實(shí)現(xiàn)鏈路功能的連線如圖中藍(lán)色粗線所示。除了/EN和/DONE引腳之外,順序搜索功能還需要具備一個(gè)新的網(wǎng)絡(luò)功能命令,Conditional Read ROM。只有滿足特定條件時(shí)(下文進(jìn)行說(shuō)明),該命令才報(bào)告器件的ROM ID。相反,Read ROM可使網(wǎng)絡(luò)中所有器件在同一時(shí)間發(fā)送其ROM ID。DS28EA00是業(yè)界首款帶有新型鏈路功能的器件(如圖3所示)。

利用1-Wire?鏈路功能獲取位置信息—一種確定器
圖3. 具有鏈路功能的DS28EA00在1-Wire網(wǎng)絡(luò)中的典型連接

/EN和/DONE引腳除了用于順序搜索之外,還可作為數(shù)字PIO。為了實(shí)現(xiàn)這一功能,鏈路功能定義了三種鏈路狀態(tài),OFF、ON和DONE。通過Chain命令控制鏈路狀態(tài)的轉(zhuǎn)換。表2給出了鏈路狀態(tài)及相應(yīng)工作狀態(tài)。

表2. 鏈路狀態(tài)
Chain State
Device Behavior
Active-Low EN (PIOB)
Active-Low DONE (PIOA)
Conditional Read ROM
OFF (default)
PIO (high impedance)
PIO (high impedance)
Ignored
ON
Active-low EN input
Pullup on
Recognized if active-low EN is logic 0
DONE
No function
Pulldown on (active-low DONE is logic 0)
Ignored

上電默認(rèn)鏈路狀態(tài)為OFF,此時(shí)/DONE (PIOA)和/EN (PIOB)由PIO Access Read和PIO Access Write命令單獨(dú)控制,如DS28EA00數(shù)據(jù)資料所述3。鏈路狀態(tài)為ON時(shí),/DONE通過一個(gè)40kΩ的片上電阻(RCO)上拉至器件內(nèi)部電源VDD,進(jìn)而向下一個(gè)器件的/EN引腳發(fā)送邏輯‘1’信號(hào)。如果/EN引腳為邏輯‘0’,則僅處于ON鏈路狀態(tài)的器件才能響應(yīng)Conditional Read ROM命令。在順序搜索過程中,網(wǎng)絡(luò)中器件的最大值應(yīng)滿足這一條件。

要將器件從Chain OFF轉(zhuǎn)換為Chain ON或Chain DONE狀態(tài),主機(jī)需采用Chain命令實(shí)現(xiàn)。圖4給出了各種可能的轉(zhuǎn)換。Chain命令代碼后,主機(jī)必須緊接著發(fā)送一個(gè)適當(dāng)?shù)腃hain Control字節(jié)。為了降低接收錯(cuò)誤Chain命令的幾率,首先以原碼形式發(fā)送控制字節(jié),然后再以反碼形式發(fā)送。當(dāng)主機(jī)接收到AAh確認(rèn)字節(jié)時(shí),表明鏈路狀態(tài)成功轉(zhuǎn)換。

圖4.鏈路狀態(tài)轉(zhuǎn)換圖
圖4.鏈路狀態(tài)轉(zhuǎn)換圖

開始順序搜索時(shí),主機(jī)必須將所有器件都置為Chain ON狀態(tài)。當(dāng)主機(jī)通過Conditional Read ROM讀取完一個(gè)的器件ROM ID后,應(yīng)該將該器件置為Chain DONE狀態(tài),從而允許鏈路中的下一個(gè)器件以響應(yīng)Conditional Read ROM命令。在順序搜索的過程中,器件將依次進(jìn)入Chain DONE狀態(tài),直到搜索完所有器件。最后,所有器件都被設(shè)置到Chain OFF狀態(tài),從而釋放/EN和/DONE引腳,使之變?yōu)镻IO,并恢復(fù)到上電默認(rèn)狀態(tài)。

順序搜索例程

前提 主機(jī)控制網(wǎng)絡(luò)如圖3所示。所有器件都支持鏈路功能。若要搜索鏈路中器件的順序,例如位置編號(hào)以及該處器件的ROM ID (即注冊(cè)碼),主機(jī)需執(zhí)行以下步驟:

初始化 主機(jī)發(fā)送Skip ROM命令,緊接著發(fā)送Chain ON命令,將所有器件置于Chain ON狀態(tài)。除了鏈路中的第一個(gè)器件之外,對(duì)于其它所有器件,通過/DONE引腳的RCO上拉電阻將/DONE//EN變?yōu)檫壿?。

第一個(gè)周期 主機(jī)發(fā)送Conditional Read ROM命令,鏈路中的第一個(gè)器件對(duì)命令進(jìn)行響應(yīng),可得到第一個(gè)器件的64位ROM ID。主機(jī)存儲(chǔ)該ROM ID,并將其確定為鏈路的第一個(gè)器件。隨后,主機(jī)發(fā)送Chain DONE命令。該命令通過器件#1的/DONE引腳,將鏈路中第二個(gè)器件的/EN引腳設(shè)置為邏輯0,同時(shí)防止器件#1再次響應(yīng)。

第二個(gè)周期 主機(jī)發(fā)送Conditional Read ROM命令。由于此時(shí)器件#2是鏈路中唯一一個(gè)/EN為邏輯0的器件,因此該器件發(fā)送其ROM ID作為響應(yīng)。主機(jī)將該ROM ID保存為序列碼'2'。(器件#1處于Chain DONE狀態(tài),所以不會(huì)響應(yīng)該命令。) 隨后,主機(jī)發(fā)送Chain DONE命令。

重復(fù)周期 要識(shí)別剩余器件的ROM ID及其物理位置,主機(jī)需要重復(fù)發(fā)送Conditional Read ROM和Chain DONE命令。如果沒有器件響應(yīng)Conditional Read ROM命令,說(shuō)明鏈路中的所有器件均已被識(shí)別。

終止 搜索過程結(jié)束后,鏈路中的所有器件都處于Chain DONE狀態(tài)。主機(jī)應(yīng)發(fā)送Skip ROM命令后,緊接著發(fā)送Chain OFF命令,用于終止順序搜索。這樣可將所有器件都進(jìn)入Chain OFF狀態(tài),變成由PIO Access功能命令控制PIO引腳。關(guān)于Conditional Read ROM和Chain命令的詳細(xì)說(shuō)明,以及完整的流程圖,請(qǐng)參考DS28EA00數(shù)據(jù)資料4。

假定采用標(biāo)準(zhǔn)的1-Wire速率(復(fù)位/在線檢測(cè)周期為960μs,每個(gè)時(shí)隙為65μs),初始化和結(jié)束共約用去7ms (一次總共占用的時(shí)間)。各個(gè)器件的搜索和位置檢測(cè)約占用7.7ms。相同條件下,執(zhí)行Search ROM命令時(shí),每個(gè)器件約占用14ms。例如,在100ms之內(nèi),如果具有鏈路功能的話,主機(jī)能識(shí)別和定位12個(gè)器件,但是如果僅依靠Search ROM功能的話,主機(jī)只能識(shí)別7個(gè)器件。

補(bǔ)充說(shuō)明

電纜電容 常用于構(gòu)建1-Wire網(wǎng)絡(luò)的5類電話線的每對(duì)雙絞線對(duì)之間具有大約50pF/m的電容。根據(jù)網(wǎng)絡(luò)的規(guī)模,當(dāng)所有器件都處于Chain ON狀態(tài)時(shí),會(huì)給線路增加非常大的電容負(fù)載。在寄生供電模式下,有時(shí)候需要采用有源1-Wire線路上拉,這樣可避免電壓跌落至最小允許值以下。采用主電源或本地VCC電源供電時(shí)無(wú)需采用這一措施。

Conditional Read ROM DS2401及其兼容的、1993年停產(chǎn)的DS2400硅序列號(hào),均將這一命令讀為Read ROM。因此,不要將DS2401連接到采用鏈路功能的網(wǎng)絡(luò)中。所以,使用1-Wire端口適配器時(shí),應(yīng)選擇不帶DS2401的器件。DS2405版本A也能像DS2401一樣響應(yīng)Conditional Read ROM命令代碼。1998年開始投產(chǎn)的DS2405版本B則會(huì)忽略Conditional Read ROM命令代碼。

1-Wire主控制器電路 在嵌入式應(yīng)用環(huán)境下,可采用各種低成本、分立式、基于IC的1-Wire主控制器。分立解決方案包括上拉電阻、空閑的μC端口引腳以及高級(jí)驅(qū)動(dòng)器5。專門用于驅(qū)動(dòng)1-Wire總線的集成驅(qū)動(dòng)器包括DS2480B6 (串行端口,UART),DS24907 (USB端口)以及DS24828,9 (I2C端口,圖5)。8通道版本的DS2482具有3個(gè)地址引腳,允許單個(gè)主控制器控制多達(dá)64個(gè)獨(dú)立的1-Wire網(wǎng)絡(luò)。應(yīng)用筆記192,"DS2480B串行接口1-Wire線驅(qū)動(dòng)器的使用"10,從軟件開發(fā)的角度對(duì)DS2480B進(jìn)行了說(shuō)明。與之類似的一篇針對(duì)DS2482驅(qū)動(dòng)器的文章也可供參考11。

利用1-Wire?鏈路功能獲取位置信息—一種確定器
圖5. 單通道I2C至1- Wire橋接器件DS2482作為1-Wire主控制器。其/DONE輸出也可用于驅(qū)動(dòng)一個(gè)LED,并不會(huì)影響鏈路功能。

電源 如果提供VCC電源,所有DS28EA00可同時(shí)進(jìn)行溫度轉(zhuǎn)換。隨后發(fā)送Conditional Search命令,可以篩選出那些發(fā)出報(bào)警溫度的器件。通過順序搜索,可得出器件的ROM ID及其位置信息,能迅速知道需要在哪些地方采取糾正措施。如果沒有VCC電源,溫度轉(zhuǎn)換必須依次進(jìn)行。此外,開始進(jìn)行順序搜索時(shí)(所有器件從Chain OFF狀態(tài)轉(zhuǎn)換至Chain ON狀態(tài)),必須確保1-Wire數(shù)據(jù)線路上的電壓不會(huì)跌落的太多。

速率 高速模式下的快速時(shí)序不適用于包含多個(gè)器件,或超過3m的1-Wire網(wǎng)絡(luò);此時(shí)應(yīng)采用標(biāo)準(zhǔn)速率替代。根據(jù)網(wǎng)絡(luò)中的器件數(shù)量,即使采用標(biāo)準(zhǔn)速率,也需要延長(zhǎng)恢復(fù)時(shí)間,特別是當(dāng)采用寄生電源供電時(shí)12。

故障診斷 如果無(wú)法實(shí)現(xiàn)順序搜索,則在發(fā)送Chain ON命令后,察看1-Wire線路上的壓降。如果電壓跌落至3.0V以下,則命令有可能不能正常執(zhí)行。為了避免電壓跌落,Chain ON以后,可采用帶有源上拉的驅(qū)動(dòng)電路,或者采用主電源供電。如果鏈路中第一個(gè)器件的/EN輸入開路、或者連接至1-Wire線路,或者連接至VCC,都將導(dǎo)致順序檢測(cè)失敗。確保網(wǎng)絡(luò)中無(wú)DS2401。不允許將并聯(lián)的兩個(gè)或多個(gè)網(wǎng)絡(luò)連接至同一個(gè)1-Wire端口,因此此時(shí)所有的“首個(gè)器件”將同時(shí)響應(yīng),這樣會(huì)得到帶無(wú)效CRC字節(jié)的ROM ID。

結(jié)束語(yǔ)

鏈路功能是一種新型特性,主機(jī)可在軟件控制下確定線性網(wǎng)絡(luò)中器件的物理順序,無(wú)需人工參與。DS28EA00 1-Wire數(shù)字溫度計(jì)是首款集成鏈路功能的器件。在多點(diǎn)溫度測(cè)量應(yīng)用中,與那些通過地址引腳獲得器件位置的解決方案相比,DS28EA00是最劃算的選擇。


關(guān)鍵詞: 鏈路 確定器

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉