iButton信息識別技術(shù)在智能點(diǎn)檢機中的應用
iButton(信息鈕扣)的物理結構是一個(gè)封裝在扁圓型不銹鋼外殼里的直徑為16 mm、厚度為3~6 mm的微型計算機晶片,是一種攜帶自動(dòng)識別號的電子數據標簽。先進(jìn)的設計理念及封裝形式賦予了iButton超強的抗沖擊、防靜電、防腐蝕、防水、防摩擦等性能,具有IC卡、磁卡等信息載體無(wú)法比擬的優(yōu)勢;極大地滿(mǎn)足系統在可靠性、穩定性方面的要求,可確保十年以上的使用壽命。在以 LPC2214設計的點(diǎn)檢機中,iButton得到了充分的應用。下面以DS1990A為例,對其與LPC2214之間一線(xiàn)串行通信方式進(jìn)行研究。
1 DS1990A的性能特點(diǎn)
堅固耐用的iButton具有優(yōu)秀的環(huán)境適應能力,可防塵、防潮和防震。這種緊湊的鈕扣外形使其自動(dòng)對準相應的探測器,易于人工操作使用。各種附件使DS1990A在巡檢、物流等現代化管理系統中具有不可替代的作用。其主要性能指標如下:
工廠(chǎng)刻入的64位ROM包括48位唯一序列碼、8位CRC校驗碼和8位家族碼(01H)。
通過(guò)單線(xiàn)與主機進(jìn)行數據通信,傳輸速率可達16.3 kbps。
標準16 mm直徑和1Wire協(xié)議保證了與其他iButton產(chǎn)品的兼容性。
讀取時(shí)間可在5 ms 以?xún)取?br />溫度范圍-40~+85℃
2 DS1990A與LPC2214硬件接口設計
1-Wire是在一條總線(xiàn)上連接1個(gè)主控器和多個(gè)從機設備的系統。在任何情況下,DS1990A都是從機設備,而總線(xiàn)控制器常由微控制器充任。1-Wire總線(xiàn)定義了1根信號線(xiàn),所以讓總線(xiàn)上每個(gè)設備都在適當的時(shí)刻運行。DS1990A為漏級開(kāi)路輸出,總線(xiàn)主控制器可以采用與其一致的等效電路。在主控制器端需加1個(gè)上拉電阻,在短距離傳輸情況下上拉電阻約為5 kΩ。1個(gè)多點(diǎn)系統由1個(gè)1-Wire總線(xiàn)和連接在上面的多個(gè)從機設備組成。
1-Wire單總線(xiàn)的閑置狀態(tài)為高電平。不管是何種原因,當傳輸操作過(guò)程需要暫停下來(lái),且要求傳送過(guò)程還能繼續時(shí),總線(xiàn)必須處于閑置狀態(tài);如果情況不是這樣或者總線(xiàn)保持低電平超過(guò)120 μs,那總線(xiàn)上的所有器件將要復位。
DS1990A與LPC2214的接口電路如圖1所示。由于LPC2214 P0口都已被點(diǎn)檢機其他部分占用,P1口均有上拉電阻,并非開(kāi)漏輸出,因此需有2個(gè)I/O口接iButton。LPC2214的P1.22口接Tx,用作輸出;P1.16口接Rx,用作輸入。
3 軟件設計
DS1990A內建ROM僅由單根數據線(xiàn)訪(fǎng)問(wèn)。依據Dallas的1-Wire協(xié)議,可以從中提取48位序列碼,8位家族碼和8位 CRC校驗碼。1-Wire通信協(xié)議規定,總線(xiàn)的收發(fā)按照特殊時(shí)隙下的總線(xiàn)狀態(tài)進(jìn)行,由主機發(fā)出的同步脈沖下降沿初始化;所有數據讀寫(xiě)都按照低位在前的原則。
DS1990A在1-Wire總線(xiàn)上的數據訪(fǎng)問(wèn)命令流程依次為:初始化、ROM功能命令、讀取數據。
3.1 初始化及應答
1-Wire總線(xiàn)上所有的傳輸操作均由初始化序列開(kāi)始。初始化序列由主機發(fā)出的復位脈沖(Reset Pulse)和從機發(fā)出的在線(xiàn)應答脈沖(Presence Pulse)組成。一個(gè)復位脈沖緊跟一個(gè)在線(xiàn)應答脈沖表明DS1990A就緒,可執行恰當的ROM命令進(jìn)行數據收發(fā)。
復位和在線(xiàn)應答脈沖時(shí)序如圖2(a)所示,主機發(fā)送(Tx)一個(gè)復位脈沖(一個(gè)至少480 μs的低電平),然后釋放信號線(xiàn)進(jìn)入接收模式(Rx)。此時(shí),1-Wire總線(xiàn)被5 kΩ上拉電阻拉至高電平,當檢測到數據線(xiàn)上信號的上升沿后,DS1990A等待(tPDL,15~60 μs),然后發(fā)送在線(xiàn)應答脈沖(tPDL,15~60 μs)。
3.2 讀寫(xiě)操作
一旦主機檢測到應答脈沖,就可以發(fā)出ROM功能命令。所有ROM操作命令的長(cháng)度為8位。Read ROM的命令為[33H]或[0FH],此命令允許總線(xiàn)主控器讀取DS1990A的8位家族碼、唯一的48位序列碼和8位CRC校驗碼。此命令僅當總線(xiàn)上只有一個(gè)DS1990A設備時(shí)可以使用。若總線(xiàn)上的從機設備超過(guò)一個(gè),當各設備同時(shí)發(fā)送時(shí)將會(huì )引發(fā)數據沖突。Search ROM的命令為[F0H],此命令允許總線(xiàn)主控器采用排除法來(lái)確認總線(xiàn)上所有設備的64位ROM碼。
讀/寫(xiě)時(shí)隙的定義如圖2(b)、(c)所示,主機將數據線(xiàn)置低初始化所有時(shí)隙。在數據線(xiàn)的下降沿,通過(guò)觸發(fā)DS1990A中的延時(shí)電路使得DS1990A與主機同步;在寫(xiě)時(shí)隙期間,延時(shí)電路決定何時(shí)DS1990A對數據線(xiàn)進(jìn)行采樣。至于讀數據的時(shí)隙,如果傳輸的是“0”,延時(shí)電路將繼續被置低近15 μs,然后被置高;如果數據位是“1”,則iButton保持讀數據的時(shí)隙不變。
3.3 關(guān)鍵代碼及實(shí)現
主機和iButton的通信是通過(guò)初始化、寫(xiě)數據時(shí)序、讀數據時(shí)序完成的,命令和數據的各個(gè)字節均由最低有效位開(kāi)始逐位傳送。在程序中,先初始化LPC2214的Time1定時(shí)器,將其定時(shí)時(shí)間設定為10 μs,Delay子程序的作用是使其延遲time倍的10 μs。Reset、WriteByte、ReadByte分別是初始化、讀、寫(xiě)1字節的子程序。在指針型函數*GetButtonID中,將iButton的64位序列碼保存在ButtonID數組中,最后返回指向這個(gè)數組的指針。
結語(yǔ)
本文提供的DS1990A與LPC2214在嵌入式實(shí)時(shí)操作系統μC/OSII中的接口的軟硬件設計,已在智能點(diǎn)檢機中推廣應用。隨著(zhù)相關(guān)技術(shù)的發(fā)展,iButton信息識別技術(shù)在工業(yè)領(lǐng)域的應用會(huì )越來(lái)越廣泛,其經(jīng)濟作用會(huì )越來(lái)越大.
評論