張杰1,楊筆鋒1,2,嚴(yán)學(xué)陽(yáng)1,劉語(yǔ)嫣1
(1.成都信息工程大學(xué) 電子工程學(xué)院,四川 成都 610225;2.中國(guó)氣象局大氣探測(cè)重點(diǎn)開(kāi)放實(shí)驗(yàn)室,四川 成都 610225)
摘要:基于STC15W204S單片機(jī)研究模擬了單總線(xiàn)EEPROM芯片DS2431。SOP8封裝的STC15W204S單片機(jī)具有引腳少、價(jià)格便宜、不需要外部晶振、內(nèi)部時(shí)鐘從5 MHz~35 MHz可設(shè)置的優(yōu)點(diǎn)。DS2431是一款具有1 024 bit的1 Wire EEPROM芯片,它具有4頁(yè)×256 bit的存儲(chǔ)空間,64位唯一不可更改的光刻。64位光刻的唯一性使DS2431廣泛應(yīng)用于硬件電路的加密、硬件電路唯一的ID序列號(hào)以及密鑰信息的存儲(chǔ)等。主要介紹了1Wire通信協(xié)議、單片機(jī)模擬芯片硬件電路、單片機(jī)模擬DS2431的程序設(shè)計(jì)流程、單片機(jī)模擬DS2431的64位光刻以及EEPROM。
關(guān)鍵詞:單片機(jī)模擬單總線(xiàn)器件;1-Wire;DS2431;STC15W204S
中圖分類(lèi)號(hào):TP368.1文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2017.08.011
引用格式:張杰,楊筆鋒,嚴(yán)學(xué)陽(yáng),等.基于STC15W204S單片機(jī)模擬單總線(xiàn)EEPROM芯片DS2431[J].微型機(jī)與應(yīng)用,2017,36(8):31-33,38.
0引言
*基金項(xiàng)目:國(guó)家重大科學(xué)儀器設(shè)備開(kāi)發(fā)專(zhuān)項(xiàng)(2012YQ110205)DS2431是一款具有64位唯一光刻的1 024 bit EEPROM芯片。模擬DS2431就是要模擬DS2431的64位光刻和數(shù)據(jù)的存儲(chǔ),從而實(shí)現(xiàn)用單片機(jī)模擬的DS2431和原來(lái)的DS2431具有相同的64位光刻和數(shù)據(jù)存儲(chǔ)功能。利用64位光刻的不可更改的特性,DS2431廣泛應(yīng)用于硬件電路加密、設(shè)備唯一ID序列號(hào)、關(guān)鍵信息存儲(chǔ)、知識(shí)產(chǎn)權(quán)保護(hù)、安全功能控制等。單總線(xiàn)設(shè)備具有簡(jiǎn)單的線(xiàn)路、較少的硬件開(kāi)銷(xiāo)和低廉的成本等優(yōu)點(diǎn),便于總線(xiàn)擴(kuò)展和維護(hù)[12]。作為一種簡(jiǎn)單的信號(hào)傳輸電路,1Wire總線(xiàn)用一根數(shù)據(jù)線(xiàn)來(lái)實(shí)現(xiàn)一個(gè)或者一個(gè)以上的從器件和主控制器之間的半雙工通信。單總線(xiàn)通信可以通過(guò)初始化1Wire器件、識(shí)別1Wire器件和主機(jī)與從機(jī)之間數(shù)據(jù)交換三個(gè)步驟來(lái)實(shí)現(xiàn)[34]。它是主從結(jié)構(gòu),主機(jī)呼叫從器件的時(shí)候,從器件才進(jìn)行應(yīng)答[5]。所以,主機(jī)只有通過(guò)嚴(yán)格的單總線(xiàn)命令序列來(lái)訪(fǎng)問(wèn)1Wire器件,即初始化從器件、ROM、功能命令[67]。如果出現(xiàn)序列混亂,1Wire器件將不會(huì)相應(yīng)主機(jī)的命令[89]。模擬1Wire器件要求單片機(jī)嚴(yán)格應(yīng)對(duì)單總線(xiàn)命令序列和命令時(shí)隙,要求單片機(jī)對(duì)主機(jī)發(fā)出的命令進(jìn)行應(yīng)答[10]。通過(guò)對(duì)DS2431應(yīng)答模擬從而達(dá)到用單片機(jī)模擬DS2431的目的,用這種方法也可以對(duì)其他的1Wire器件進(jìn)行模擬。
1單總線(xiàn)協(xié)議
1.11-Wire單總線(xiàn)時(shí)序
1Wire器件在數(shù)據(jù)傳輸過(guò)程中都會(huì)遵循嚴(yán)格的通信協(xié)議,單總線(xiàn)通信協(xié)議有復(fù)位脈沖、應(yīng)答脈沖、寫(xiě)1、寫(xiě)0、讀1、讀0幾種類(lèi)型[11]。
單總線(xiàn)的初始化步驟如圖1所示。
(1)主機(jī)拉低總線(xiàn)480 μs~960 μs,然后主機(jī)釋放總線(xiàn)進(jìn)入接收狀態(tài)[12]。
?。?)從機(jī)監(jiān)測(cè)到主機(jī)不少于480 μs的復(fù)位信號(hào)后等待15 μs~60 μs,然后產(chǎn)生一個(gè)應(yīng)答信號(hào)(拉低總線(xiàn)60 μs~240 μs)[13]。
(3)從機(jī)釋放總線(xiàn)至少一個(gè)2 μs的恢復(fù)時(shí)間。
寫(xiě)1和寫(xiě)0時(shí)序步驟如圖2所示。
?。?)主機(jī)拉低總線(xiàn)5 μs~15 μs,然后主機(jī)將總線(xiàn)拉高或者拉低45 μs。
?。?)從機(jī)在15 μs后開(kāi)始采樣。
?。?)主機(jī)釋放總線(xiàn)并且有至少一個(gè)2 μs的恢復(fù)時(shí)間(標(biāo)準(zhǔn)是5 μs)。
?。?)整個(gè)寫(xiě)1時(shí)隙至少60 μs。
讀數(shù)據(jù)時(shí)序步驟如圖3所示。
?。?)主機(jī)將總線(xiàn)拉低至少1 μs。
?。?)從機(jī)從下降沿到來(lái)之后將總線(xiàn)拉低或者拉高并保持15 μs。
?。?)在主機(jī)拉低總線(xiàn)后15 μs內(nèi)主機(jī)釋放總線(xiàn)并采樣。
?。?)15 μs后由電阻將總線(xiàn)拉高。
?。?)整個(gè)時(shí)間不少于60 s,每個(gè)時(shí)間片之后有一個(gè)至少2 μs的恢復(fù)時(shí)間。
1.2單總線(xiàn)接口
圖4單總線(xiàn)接口單總線(xiàn)接口電路是非常簡(jiǎn)單的,DS2431的讀和寫(xiě)的電壓范圍是2.8 V~5.25 V。在I/O口接一個(gè)上拉電阻,根據(jù)DS2431數(shù)據(jù)手冊(cè),上拉電阻電阻的范圍是0.3 kΩ~2.2 kΩ。單總線(xiàn)接口如圖4所示。
2模擬單總線(xiàn)器件時(shí)序及接口
2.1模擬單總線(xiàn)器件時(shí)序
模擬單總線(xiàn)器件的時(shí)序最重要的是在符合單總線(xiàn)通信協(xié)議的規(guī)定時(shí)間內(nèi)對(duì)主機(jī)發(fā)起的信號(hào)進(jìn)行應(yīng)答,其中需要對(duì)延時(shí)把握精確,錯(cuò)過(guò)了時(shí)序主機(jī)有可能視從機(jī)沒(méi)有應(yīng)答從而通信失敗。在模擬時(shí)序的時(shí)候可以借助邏輯分析儀來(lái)對(duì)時(shí)序進(jìn)行分析并通過(guò)分析結(jié)果對(duì)模擬時(shí)序進(jìn)行微調(diào)。
模擬單總線(xiàn)初始化步驟如圖5所示。
?。?)單片機(jī)等待主機(jī)復(fù)位信號(hào),監(jiān)測(cè)主機(jī)拉低總線(xiàn)并在480 μs內(nèi)再次確認(rèn)主機(jī)拉低了總線(xiàn)。
(2)單片機(jī)在確認(rèn)了復(fù)位信號(hào)后延時(shí)等待總線(xiàn)拉高。
(3)單片機(jī)監(jiān)測(cè)到主機(jī)將總線(xiàn)釋放拉高后拉低總線(xiàn)(從機(jī)應(yīng)答)60~240 μs。
?。?)單片機(jī)釋放總線(xiàn)(拉高總線(xiàn)表示應(yīng)答完成)。
模擬主機(jī)寫(xiě)1和寫(xiě)0時(shí)序步驟:
?。?)單片機(jī)等待主機(jī)拉低總線(xiàn)發(fā)起通信。
?。?)在監(jiān)測(cè)到主機(jī)拉低總線(xiàn)后,單片機(jī)延時(shí)幾微秒后開(kāi)始采樣。
(3)單片機(jī)采樣后開(kāi)始延時(shí),主機(jī)寫(xiě)完數(shù)據(jù)后恢復(fù)總線(xiàn)。
?。?)整個(gè)時(shí)間持續(xù)60 μs。
時(shí)序圖如圖5所示,其中采樣時(shí)間可以微調(diào),可以借助邏輯分析儀分析時(shí)序。主機(jī)寫(xiě)命令55h并匹配。
ROM的模擬時(shí)序如圖6所示。
模擬主機(jī)讀數(shù)據(jù)時(shí)序步驟:
?。?)主機(jī)將總線(xiàn)拉低至少1 μs。
(2)單片機(jī)監(jiān)測(cè)到主機(jī)拉低總線(xiàn)1 μs后立即對(duì)總線(xiàn)拉高或者拉低,要確保主機(jī)能夠進(jìn)行采樣。
?。?)主機(jī)采樣后,單片機(jī)恢復(fù)總線(xiàn)。
?。?)整個(gè)時(shí)間不少于60 μs,每個(gè)時(shí)間片之后有一個(gè)至少2 μs的恢復(fù)時(shí)間。
時(shí)序圖如圖3所示,其中單片機(jī)對(duì)總線(xiàn)操作的時(shí)間可以微調(diào),可以借助邏輯分析儀分析時(shí)序。主機(jī)寫(xiě)命令FOh并搜索ROM的模擬時(shí)序如圖7所示。
2.2模擬單總線(xiàn)器件硬件電路接口設(shè)計(jì)
STC15W204S單片機(jī)工作電壓范圍為2.5 V~5.5 V,在ISP編程時(shí)內(nèi)部時(shí)鐘在5 MHz~35 MHz范圍內(nèi)可調(diào),±1%溫飄(-40℃~+85℃)常溫下溫飄±0.6%(-20℃~+65℃),可以滿(mǎn)足硬件指標(biāo)要求。STC15W204S有8個(gè)引腳6個(gè)I/O口。調(diào)試時(shí)P3.0和P3.1做串行接口用于燒寫(xiě)程序,P3.3、P5.4、P5.5可以接一個(gè)LED燈用于調(diào)試觀測(cè)單片機(jī)狀態(tài)。燒寫(xiě)好程序的單片機(jī)只需要3個(gè)引腳便可以工作。電路接口設(shè)計(jì)如圖8所示。
3模擬DS2431的程序設(shè)計(jì)
3.1程序設(shè)計(jì)的流程
圖9程序設(shè)計(jì)流程主機(jī)會(huì)在一開(kāi)始發(fā)出復(fù)位信號(hào),一旦檢測(cè)到有從器件存在就可以發(fā)出ROM操作命令[14]。ROM命令有“讀”ROM【33h】、“匹配”ROM【55h】、“跳過(guò)”ROM【CCh】、“搜索”ROM【F0h】等。如果主機(jī)發(fā)出了ROM命令,那么單片機(jī)接收到了ROM命令就要做出相應(yīng)的回應(yīng)。同樣接下來(lái)主機(jī)會(huì)發(fā)出讀寫(xiě)操作,單片機(jī)也進(jìn)行相應(yīng)的回應(yīng)。程序設(shè)計(jì)流程如圖9所示。
3.2模擬64位光刻和EEPROM
因?yàn)槊恳黄瑔慰偩€(xiàn)芯片的64位光刻都是唯一且不可更改的,所以DS2431的光刻可以用來(lái)做硬件ID序列號(hào),也可以用來(lái)加密硬件,EEPROM可以用來(lái)存儲(chǔ)關(guān)鍵信息。
為模擬光刻,首先讀出一塊DS2431的光刻,然后用單片機(jī)開(kāi)一個(gè)8 B的數(shù)組存儲(chǔ)這些光刻。當(dāng)主機(jī)發(fā)出33h命令時(shí)單片機(jī)就按字節(jié)給它吐光刻,當(dāng)主機(jī)發(fā)出F0h命令時(shí)單片機(jī)就按位吐出光刻。當(dāng)主機(jī)發(fā)出55h命令時(shí)單片機(jī)默認(rèn)接收相應(yīng)的數(shù)據(jù)即可[15]。需要注意的是主機(jī)發(fā)出的命令是先寫(xiě)高位再寫(xiě)低位,在接收命令的時(shí)候也是先接收高位再接收低位。
模擬EEPROM可以用單片機(jī)開(kāi)一塊數(shù)組用來(lái)存儲(chǔ)數(shù)據(jù),可以一開(kāi)始就給這些數(shù)組寫(xiě)一些固定的值,主機(jī)來(lái)讀的時(shí)候就吐數(shù)給它。也可以開(kāi)一片內(nèi)存來(lái)存儲(chǔ)主機(jī)寫(xiě)的數(shù),單片機(jī)可以將這些數(shù)據(jù)存到片內(nèi)EEPROM。在設(shè)計(jì)這個(gè)數(shù)組的時(shí)候要參照模擬目標(biāo)的EEPROM結(jié)構(gòu),單片機(jī)在接到地址命令和頁(yè)碼命令時(shí)用相應(yīng)的數(shù)組結(jié)構(gòu)來(lái)對(duì)應(yīng)。
4結(jié)論
利用STC15W204S單片機(jī)模擬DS2431有很好的發(fā)展前景和利用價(jià)值,STC15W204S單片機(jī)具有引腳少、功耗低、不需外部晶振、價(jià)格低廉等優(yōu)點(diǎn)。本研究實(shí)現(xiàn)了用單片機(jī)模擬DS2431,破解了DS2431光刻不可以復(fù)制的難題。本研究實(shí)現(xiàn)了用單片機(jī)模擬單總線(xiàn)從機(jī)的應(yīng)答時(shí)序,利用這種方法還可以模擬其他的單總線(xiàn)設(shè)備。DS2431廣泛應(yīng)用于打印設(shè)備、醫(yī)療設(shè)備、硬件電路的加密。利用STC15W204S單片機(jī)模擬DS2431的部分功能就可以破解某些加密設(shè)備、復(fù)制硬件電路等。STC15W204S單片機(jī)具有溫度漂移,在復(fù)制的時(shí)候應(yīng)考慮溫度漂移范圍。單片機(jī)的工作范圍應(yīng)設(shè)置不同的頻率多次下載程序測(cè)試,并結(jié)合延時(shí)函數(shù)的修改來(lái)確定,下載程序時(shí)應(yīng)取其正常工作范圍的中間值來(lái)克服溫度漂移問(wèn)題??梢岳酶叩蜏貙?shí)驗(yàn)來(lái)驗(yàn)證程序及模擬單片機(jī)的可靠性。
參考文獻(xiàn)
?。?] 陳浩. 基于智能傳感器和單片機(jī)的溫度監(jiān)測(cè)系統(tǒng)[D]. 北京:華北電力大學(xué),2005.
?。?] 陳志英,李光輝. 單總線(xiàn)技術(shù)及其應(yīng)用[J]. 電氣時(shí)代,2015(8):74-75.
?。?] 楊張利. IC卡燃?xì)獗碇悄芸刂萍皺z測(cè)系統(tǒng)研究[D]. 重慶:重慶大學(xué),2007
?。?] 胡皓,雷金莉,周妮娜. 1-Wire總線(xiàn)技術(shù)及其在火災(zāi)監(jiān)測(cè)中的應(yīng)用[J]. 機(jī)電工程技術(shù),2006,35(6):68-71.
?。?] 張揚(yáng)清. 基于雙機(jī)通信的電壓和溫度監(jiān)控系統(tǒng)[J]. 科技風(fēng),2013(23):104-105.
?。?] 張東. 基于雙CPU的溫室溫度遠(yuǎn)距離測(cè)控系統(tǒng)研究[D]. 重慶:重慶大學(xué),2007
[7] 張華峰. One-Wire Bus檢測(cè)網(wǎng)從站管理及可靠傳輸研究[D]. 南昌:南昌大學(xué),2007
?。?] 高羅卿. 1-wire系統(tǒng)中TM卡的單片機(jī)等效替換[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2008(8):62-65.
[9] 李穎. 車(chē)用動(dòng)力電池SOC估算方法的研究及其管理系統(tǒng)設(shè)計(jì)[D]. 沈陽(yáng):東北大學(xué), 2012.