(珠海市光聯(lián)通訊技術(shù)有限公司OMS/軟件組,珠海519030)
本文的單片機(jī)型號(hào)為K20系列的MK20DN512ZVLL 10-N;1-Wire EEPROM的型號(hào)為Dallas Semiconductor 的DS28E04。Dallas Semiconductor 的1-Wire總線是一種簡(jiǎn)單的信號(hào)交換架構(gòu),通過一條線路在主機(jī)與外圍器件之間進(jìn)行雙向通信。電源和數(shù)據(jù)通信通過單根數(shù)據(jù)線傳輸,使得1-Wire器件具有無與倫比的強(qiáng)大功能,可減少系統(tǒng)間的互聯(lián)。
由于1-Wire器件是集成度高、功能豐富且外接簡(jiǎn)單的單總線網(wǎng)絡(luò)器件,因而無論在自動(dòng)化系統(tǒng)或者是通信工程及金融安全等領(lǐng)域應(yīng)用非常廣泛,又由于具有使用方便、體積小等特點(diǎn),故既適合各類系統(tǒng)開發(fā),又適用于智能化或小型儀器儀表的制造,因此受到設(shè)計(jì)者及制造廠商的歡迎。
單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換、控制都由這根線完成。設(shè)備(主機(jī)或從機(jī))通過一個(gè)漏極開路或三態(tài)端口連接至該數(shù)據(jù)線,以允許設(shè)備在不發(fā)送數(shù)據(jù)時(shí)能夠釋放總線,而讓其他設(shè)備使用總線,其內(nèi)部等效電路如圖1所示。
圖1 內(nèi)部等效圖
單總線通常要求外接一個(gè)約為4.7 kΩ的上拉電阻,這樣,當(dāng)總線閑置時(shí),其狀態(tài)為高電平。
主機(jī)和從機(jī)之間的通信可通過3個(gè)步驟完成,分別為初始化1-Wire器件、識(shí)別1-Wire器件和交換數(shù)據(jù)。
由于它們是主從結(jié)構(gòu),只有主機(jī)呼叫從機(jī)時(shí),從機(jī)才能應(yīng)答,因此主機(jī)訪問1-Wire器件都必須嚴(yán)格遵循單總線命令序列,即初始化、ROM、命令功能命令。如果出現(xiàn)序列混亂,1-Wire器件將不響應(yīng)主機(jī)(搜索ROM命令、報(bào)警搜索命令除外)。單主機(jī)多從機(jī)示意圖如圖2所示。
圖2 單主機(jī)多從機(jī)示意圖
所有的1-Wire總線都具有一個(gè)共同的特征:每個(gè)從機(jī)器件都有一個(gè)互不重復(fù)的、工廠光刻的序列號(hào)。因此,每個(gè)器件都是唯一的,這樣就允許從眾多連到同一總線的器件中獨(dú)立選擇任何一個(gè)器件。當(dāng)1 個(gè)、2 個(gè)甚至多個(gè)1-Wire器件能共用一條線路進(jìn)行通信,可以采用二進(jìn)制位檢索法依次查找每一個(gè)器件。一旦器件的序列號(hào)已知,通過尋址該序列號(hào)就可以唯一地選出該器件進(jìn)行通信。
所有通信的第一步都需要總線控制器發(fā)出一個(gè)復(fù)位信號(hào)以使總線同步,然后選擇一個(gè)從機(jī)進(jìn)行隨后的通信,這可以通過選擇所有的從機(jī)或者選擇一個(gè)特定的從機(jī)(利用該器件的序列號(hào)進(jìn)行選擇)或者通過對(duì)半檢索法找到總線上的下一個(gè)從機(jī)來實(shí)現(xiàn)。一旦一個(gè)從機(jī)被選中,那么在下次復(fù)位信號(hào)發(fā)出之前,所有其他從機(jī)都被掛起而忽略隨后的通信。
一旦一個(gè)從機(jī)被用于總線通信,主機(jī)就能向它發(fā)出特定的器件指令,對(duì)它進(jìn)行數(shù)據(jù)讀寫。這是因?yàn)槊款惼骷哂胁煌墓δ芎筒煌挠猛?,而且一旦器件被選定,就有了唯一的協(xié)議。雖然每類器件具有不同的協(xié)議和特征,但其工作過程卻是相同的并且遵循如圖3 所示的工作流程。
圖3 通信流程
Freescale K20 MK20DN512ZVLL10-N擁有ARM Cortex-M4內(nèi)核,其主頻、SRAM、FLASH、I/O數(shù)量等參數(shù)詳見表1的第二行。
表1 Freescale K20參數(shù)
DS28E04-100是4 096 位1-Wire EEPROM 芯片,帶有7個(gè)地址輸入端。DS28E04工作模式包括:標(biāo)準(zhǔn)速率模式,速率為15.3 kbps;高速速率模式,速率為111 kbps。
系統(tǒng)要求MCU的I/O口必須是雙向的,其輸出為漏極開路,且線上具有弱上拉;MCU必須能產(chǎn)生標(biāo)準(zhǔn)速度1-Wire通信所需的精確1 μs延時(shí)和高速通信所需要的0.25 μs延時(shí);MCU與EEPROM通信過程中不能被中斷。
1-Wire總線有4種基本操作:復(fù)位、寫1位、寫0位和讀位操作。表2是各個(gè)操作的簡(jiǎn)要說明以及實(shí)現(xiàn)這些操作所必需的步驟列表。圖4為其時(shí)序波形圖。表3給出了通常線路條件下1-Wire主機(jī)與1-Wire器件通信的推薦時(shí)間。如果與1-Wire主機(jī)相連的器件比較特殊或者線路條件比較特殊,則可以采用最值。請(qǐng)參考可下載的工作表中的系統(tǒng)和器件參數(shù)確定最小值和最大值。
表2 1-Wire操作
DS28E04的復(fù)位、寫1、寫0和讀位時(shí)序圖如圖5所示。
本文單片機(jī)以標(biāo)準(zhǔn)模式讀寫DS28E04,按照?qǐng)D5要求的時(shí)序編寫驅(qū)動(dòng)DS28E04的函數(shù)。代碼經(jīng)過驗(yàn)證,無論是單個(gè)地址還是整片讀寫,均可以正確操作,請(qǐng)放心使用。
圖4 1-Wire時(shí)序圖
參 數(shù)速 率推薦/μsA標(biāo)準(zhǔn)6.0高速1.0B標(biāo)準(zhǔn)64.0高速7.5C標(biāo)準(zhǔn)60.0高速7.5D標(biāo)準(zhǔn)10.0高速2.5E標(biāo)準(zhǔn)9.0高速1.0F標(biāo)準(zhǔn)55.0高速7.0G標(biāo)準(zhǔn)0.0高速2.5H標(biāo)準(zhǔn)480.0高速70.0I標(biāo)準(zhǔn)70.0高速8.5J標(biāo)準(zhǔn)410.0高速40.0
圖5 DS28E04讀/寫時(shí)序圖