摘? 要:DS28DG02是帶有PIO、實時時鐘(RTC)、復(fù)位、電池監(jiān)控器和看門狗的2kb SPI? EEPROM,它組合了便攜式設(shè)備和嵌入式應(yīng)用中需要的多種功能。本應(yīng)用筆記對產(chǎn)品數(shù)據(jù)資料進行補充說明,給出SPI接口及其寫保護方案的詳細信息,闡述怎樣使用器件的12個PIO和RTC鬧鐘功能。文檔還包括電池選擇指南、RTC晶振" title="晶振">晶振焊盤屏蔽,以及報警事件的軟件響應(yīng)等。
通信接口
DS28DG02是從機EEPROM器件,通常由微控制器" title="微控制器">微控制器構(gòu)成的主機利用它通過串行外設(shè)接口(SPI)來訪問其資源。SPI最初由Motorola針對MC68HCxx系列微控制器而建立。表1列出了標準SPI信號名稱以及它們的功能。
表1. SPI信號名稱
Motorola名稱 | 功能 | 其他名稱 |
|
串行時鐘,推挽驅(qū)動,由主機產(chǎn)生。如果滿足上升時間和下降時間規(guī)范,可以使用開漏驅(qū)動。 | SCK, SK, C |
|
從機至主機數(shù)據(jù)線,“主機輸入,從機輸出”。由從機驅(qū)動的高阻抗推挽輸出連接至主機的串行輸入。 | SO, DO, Q |
|
主機至從機數(shù)據(jù)線,“主機輸出,從機輸入”。由主機驅(qū)動的高阻抗推挽輸出連接至從機的串行輸入。 | SI, DI, D |
|
從機選擇,推挽輸出,由主機產(chǎn)生。 | CSZ, 低電平有效CS |
基本的SPI通信在主機和從機同時采用了移位寄存器。移位寄存器的輸入和輸出相連,形成一個環(huán)回,如圖1所示。時鐘信號在主機驅(qū)動下,將8比特串行數(shù)據(jù)塊由主機傳送至從機,同時由從機傳送至主機,從而實現(xiàn)了SPI全雙工協(xié)議。但是,大部分SPI從機,包括DS28DG02,在接收或者發(fā)送數(shù)據(jù)前,首先需要一條命令。同樣,在半雙工模式下,數(shù)據(jù)由主機傳送到從機或者由從機傳送到主機。
圖1. SPI通信概念
SPI規(guī)范定義了四種模式,由SPI主機中的控制位CPOL和CPHA進行選擇。在怎樣參考這些模式上還沒有標準。表2列出了SPI文檔中常用的模式定義。
表2. SPI模式定義
SPI模式 | CPOL | CPHA | 說明 |
0或者(0,0) |
|
|
時鐘空閑狀態(tài)為低電平。在時鐘上升沿采集數(shù)據(jù),在時鐘下降沿移位輸出。 |
1或者(0,1) |
|
|
時鐘空閑狀態(tài)為低電平。在時鐘下降沿采集數(shù)據(jù),在時鐘上升沿移位輸出。 |
2或者(1,0) |
|
|
時鐘空閑狀態(tài)為高電平。在時鐘下降沿采集數(shù)據(jù),在時鐘上升沿移位輸出。 |
3或者(1,1) |
|
|
時鐘空閑狀態(tài)為高電平。在時鐘上升沿采集數(shù)據(jù),在時鐘下降沿移位輸出。 |
DS28DG02支持SPI模式(0,0)和(1,1)。這些模式中,在時鐘上升沿采集(同步輸入)數(shù)據(jù),在時鐘下降沿移位輸出(可能會改變)。CSZ下降沿的時鐘狀態(tài)告訴DS28DG02主機使用了哪一SPI模式。如果試圖在模式(1,0)或者(0,1)中進行通信,則無法確定器件的行為。
關(guān)于SPI協(xié)議以及時序的其他信息,請參考DS28DG02數(shù)據(jù)資料中的SPI接口一節(jié),也可以在互聯(lián)網(wǎng)上搜索關(guān)鍵詞“SPI slave timing”。通過網(wǎng)絡(luò)搜索到的文檔大部分是關(guān)于微控制器的,根據(jù)內(nèi)部寄存器設(shè)置,這些微控制器能夠?qū)崿F(xiàn)SPI主機或者從機。第三方文檔很好地介紹了SPI概念,解釋了SPI主機的設(shè)置,這些文檔有:
http://www.mct.net/faq/spi.html (一般信息)
http://www.atmel.com/dyn/resources/prod_documents/doc2585.pdf (主機設(shè)置)
寫保護方案
SPI存儲器采用3級方案來保護存儲器不會受到無意的或者未授權(quán)的改動:SPI狀態(tài)寄存器" title="狀態(tài)寄存器">狀態(tài)寄存器中的WEN位;使用SPI狀態(tài)寄存器中控制位的塊寫保護;使用引腳狀態(tài)和SPI狀態(tài)寄存器中使能位的硬件寫保護。DS28DG02獨有的寄存器寫保護和塊寫保護在同一級上,但是采用了不同的存儲器區(qū)。表3列出了控制位及其對存儲器的影響。
表3. 寫保護控制
級 | 控制位 | 受保護的存儲器 |
|
WEN | 所有的可寫存儲器地址以及SPI狀態(tài)寄存器 |
|
BP1:BP0 | 地址000h至0FFh |
|
RPROT | 地址120h至135h |
|
WPEN (結(jié)合WPZ引腳狀態(tài)) | SPI狀態(tài)寄存器,僅非易失位。 |
1級:SPI狀態(tài)寄存器中的WEN位
在上電" title="上電">上電,成功完成寫功能命令后,或者通過SPI命令WRDI (寫禁止),該位被清位。設(shè)置WEN位的唯一方法是通過SPI命令WREN(寫使能)。注意:在SPI主機出現(xiàn)故障時,WEN位能夠防止可寫存儲器失效。
2級:SPI狀態(tài)寄存器中的BP1:BP0位
這一常用的寫保護方法使用SPI狀態(tài)寄存器(BP1:BP0)的兩個非易失位對EEPROM的所有位、上半部分、上四分之一部分進行寫保護,也可以不進行寫保護??刂莆辉赟PI狀態(tài)寄存器中,可受到硬件寫保護。沒有硬件寫保護時,可以通過軟件控制來修改塊寫保護。注意:塊寫保護將某些EEPROM配置為只讀,而將其他的EEPROM留給主機存儲數(shù)據(jù),在最終產(chǎn)品正常工作時可修改這些數(shù)據(jù)。
2級:SPI狀態(tài)寄存器中的RPROT位
這是DS28DG02的一個特殊功能,該方法使用SPI狀態(tài)寄存器的非易失RPROT位對地址120h以及更高地址范圍的用戶可寫字節(jié)進行寫保護。如果RPROT是1,對這些地址進行寫保護。這保護了RTC、RTC鬧鐘寄存器、多功能控制/設(shè)置寄存器,以及報警/狀態(tài)寄存器,防止對PIO進行寫操作。這一級寫保護并不保護PIO相關(guān)寄存器的上電默認值,這些數(shù)值存儲在10Ah至10Fh中。RPROT位在SPI狀態(tài)寄存器中,可受到硬件寫保護。沒有硬件寫保護時,可以通過軟件控制來修改RPROT。注意:寄存器寫保護可防止對RTC及其警報的意外改動,還可以防止對最終產(chǎn)品中定義DS28DG02功能的寄存器的改動(例如,看門狗、電池監(jiān)控器、RTC)。
3級:SPI狀態(tài)寄存器中的WPEN位
該方法使用WPZ引腳以及SPI狀態(tài)寄存器中的WPEN位。該功能只保護SPI狀態(tài)寄存器的非易失位,特別是塊保護位BP1:BP0、RPROT和WPEN。WPEN位被置為1時,使能WPZ引腳來控制SPI狀態(tài)寄存器中的所有非易失位,包括WPEN。對于出廠SPI存儲器,WPEN位讀0。這樣,即使WPZ引腳連接至地,也可以對電路板測試儀上的存儲器進行編程。在最后一步中,對存儲器編程后,測試儀設(shè)置2級保護,將WPEN位寫入1,從而激活硬件寫保護。只要WPZ引腳的邏輯狀態(tài)保持為0,SPI狀態(tài)寄存器的非易失位將保持寫保護不變。要修改任一非易失位,必須將WPZ引腳的邏輯狀態(tài)改為1,例如,通過跳接器,將引腳臨時連接至VCC。注意:硬件寫保護對2級保護進行永久設(shè)置,但還是留有一個后門(WPZ引腳),以便今后的改正。
注意:寄存器寫保護被永久使能后,清除看門狗、RTC和電池警報的唯一方法是VCC再次上電。不論VCC電源如何,換掉電池后,清除多功能控制/設(shè)置寄存器和RTC及其警報寄存器。如果硬件寫保護和寄存器寫保護都被激活(RPROT = 1,WPEN = 1,WPZ引腳連接至地GND),用戶可能需要致電設(shè)備生產(chǎn)商,以重新配置設(shè)備,重新運行。
電池選擇
DS28DG02需要電池來維持存儲在地址134h多功能控制/設(shè)置寄存器中的配置信息,并保持RTC運行。如果VCC可永久使用,則不需要電池,VBAT引腳連接至VCC。如果VCC中斷,沒有電池備份,多功能控制/設(shè)置寄存器上電時所有位都是0。這會停止RTC,禁止時鐘鬧鐘、看門狗和電池監(jiān)控器。這是正常設(shè)置,與不使用RTC和看門狗的應(yīng)用無關(guān)。典型DS28DG02應(yīng)用至少會使用RTC或者看門狗,因此需要電池,并對電池進行監(jiān)控。
只有切斷VCC,才能節(jié)省電池功耗。有兩種情況需要注意:a) RTC振蕩器停止時(關(guān)斷,OSCE = 0);b) RTC振蕩器接通時(運行,OSCE = 1)。理論上,還有第三種情況和電池監(jiān)控器有關(guān)。但是,電池監(jiān)控器(IMAX = 20μA)電池最大負載每小時只持續(xù)2秒時間,因此,平均負載電流為11nA (20μA x 2/3600),比RTC關(guān)斷時的負載低兩倍。電池監(jiān)控器并沒有縮短電池的使用時間,因為只有VCC工作時才進行監(jiān)控,RTC和其他非易失存儲器單元由VCC進行供電,而不是電池供電。
DS28DG02的典型電池電壓為3V,由一塊鋰電池(Li+)或者兩塊串聯(lián)的氧化銀鈕扣電池進行供電。通常以mAh (毫安時)來表示這些電池的容量。通過負載電阻,測量電池電壓下降到規(guī)定閾值的時間來獲得性能指標,方法和某些應(yīng)用相似。電池生產(chǎn)商的數(shù)據(jù)資料上有詳細信息:
http://www.panasonic.com/industrial/battery/oem/chem/lith/coin1.htm
http://www.rayovac.com/technical/pdfs/pg_lithium.pdf
http://data.energizer.com/DataSheets.aspx
假設(shè)電池和電容類似,電池的放電時間為t = Q/I。例如,如果電池為1mAh,放電電流為1μA,那么放電時間為:
按照下面公式,這一結(jié)果與電池容量和放電電流之比相乘:
例如,如果負載電流是10μA,48mAh電池能夠使RTC運行48/10 x 41.66,即200天。+25°C左右,RTC接通時的最大負載電流為4.7μA。因此,同樣的電池可持續(xù)使用:
兩塊電池串聯(lián)可加倍電壓和容量,但并不延長電池使用時間。為確定使用時間,必須將一塊電池的容量帶到公式2中,這是因為電流流過串聯(lián)的每塊電池,以同一速率對每塊電池放電。
使用PIO
DS28DG02有12個PIO通道。在典型應(yīng)用中,有的PIO被用作輸入,其他的用作輸出,而有的根本就沒有使用。在存儲器映射上“靠近”的PIO (PIO0至PIO7,PIO8至PIO11)在電路板上并不靠近。對于TSSOP,所有偶數(shù)PIO位于封裝的左側(cè),奇數(shù)PIO位于封裝的右側(cè)。對于TQFN,3個偶數(shù)PIO位于封裝西側(cè),3個奇數(shù)PIO位于封裝東側(cè),剩余的6個PIO,包括奇數(shù)和偶數(shù),位于封裝的南側(cè)。這樣看起來雖然不太尋常,但是并不影響器件的使用。
如果輸出模式中沒有PIO需要吸收或者源出大電流" title="大電流">大電流,可以采用小電流輸出模式。在小電流輸出模式中,對于所有共享同一存儲器地址的PIO,同時進行PIO讀寫。如果第5至第8個PIO需要同時讀或者寫,選擇PIO通道0至通道7,以最適合電路板布板拓撲的方式,將它們分配給應(yīng)用中的節(jié)點。由于大電流模式寫并不是同時進行,因此,只有優(yōu)化電路板布板時采用PIO。下面的例子介紹了分配PIO通道的一種方法。
配置實例
輸出: | 6 |
輸出類型: | 4路推挽,2路開漏 |
輸出模式: | 小電流(同時寫) |
輸入: | 4 |
反向讀 | 無 |
沒有使用: | 2 PIO |
以逆時針方向來看DS28DG02的PIO引腳分配,共享同一存儲器地址的PIO順序為0、4、6、2、3、7、5、1。這種順序和封裝類型無關(guān)。明顯靠在一起的是第6、第2、第3和第7通道。對于其他的兩路輸出,由于引腳靠近,把第0通道和第4通道分配給它們。這一方法沒有使用第1和第5通道。輸出類型按4個PIO一組進行設(shè)置,0至3,4至7以及8至11;同一組中的PIO有同樣的輸出類型。實例中的4路輸出需要采用推挽。對于剛進行的分配,這可以是第0至第3通道,或者第4至第7通道。由于沒有使用第1通道,只有第0、第2和第3通道,因此,無法滿足這種輸出類型。
為滿足輸出類型的要求,必須改變通道分配。第4至第7通道現(xiàn)在被用于推挽(任意選擇),第2和第3通道為開漏。這樣,沒有使用第0和第1通道。輸入被分配給第8至第11通道,它們也共享同一存儲器地址。
下一步,必須定義這一配置的上電默認寄存器值,并寫入對應(yīng)的存儲器地址。下表使用以下顏色來解釋所進行的選擇。
Value resulting from configuration/application requirements | |
? | Arbitrary assignment, "don't care" condition |
? | (Not assigned, reserved) |
PIO輸出狀態(tài)上電默認值
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
PIO方向的上電默認值
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
PIO反向讀的上電默認值(PIO0至PIO7)
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
|
PIO反向讀的上電默認值(PIO8至PIO11),PIO輸出類型和輸出模式
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
|
利用數(shù)據(jù)資料中的通信實例定義,將定義為輸出的PIO按下面序列進行更新:
SEL | WREN | DSEL | SEL | WRITEH | <20h> | <1 byte PIO data> | DSEL |
要在PIO產(chǎn)生波形模式,并不需要以不同的PIO數(shù)據(jù)來重復(fù)整個序列。而是發(fā)送需要的PIO數(shù)據(jù)字節(jié);第1、第3和第5等字節(jié)被用于更新PIO。由于PIO 8至11被分配為輸入,因此,其他字節(jié)(第2、第4和第6字節(jié)等)不起作用。
下面的序列讀取被定義為輸入的PIO:
SEL | READH | <27h> | <1 bytes PIO data> | DSEL |
要快速從PIO重復(fù)讀取,并不需要重復(fù)整個序列。而是使用起始地址126h,讀取需要的字節(jié)。第1、第3和第5等字節(jié)返回被定義為輸出的通道狀態(tài)。其他字節(jié)(第2、第4和第6字節(jié)等)報告被分配為輸入的PIO 8至11的數(shù)據(jù)。
PIO大電流模式
對于寫操作,PIO可以工作在小電流模式或者大電流模式下。以同樣的方式對所有的PIO線進行模式選擇。在小電流模式中,共享同一字節(jié)地址的所有PIO同時開關(guān)。此外,如果以寫入地址120h來開始訪問PIO,對于DS28DG02接收到的每一數(shù)據(jù)字節(jié),寫地址在120h (PIO0至PIO7)和121h (PIO8至PIO11)之間切換。這種方法支持對PIO的快速寫入,因此,不需要在下一次寫訪問之前執(zhí)行WREN命令。
在大電流和小電流模式下,PIO有相同的電流吸收或者源出能力。然而,在大電流模式(OTM = 1)下,PIO每次一個通道連續(xù)切換;PIO電流擺率受到有源電路的限制。大電流模式并不采用地址切換。地址是從120h遞增到121h,然后是122h,以此類推。要再次寫入地址120h,則需要新的寫序列。
如果DS28DG02有穩(wěn)定的VCC供電,打開PIO后立即產(chǎn)生復(fù)位,感應(yīng)電壓尖峰進入VCC監(jiān)控器,被錯誤地認為出現(xiàn)電源失效。在這種情況下,要么必須使用大電流模式,要么一次開關(guān)的通道數(shù)量小于8個,以軟件模擬大電流模式,從而保證電流變化不會超過最大額定±50mA。
RTC晶振和PCB布板
各種封裝類型和尺寸都提供了32kHz表晶振。DS28DG02數(shù)據(jù)資料中的PCB布板假設(shè)晶振引腳間距和封裝(TSSOP—0.65mm;TQFN—0.50mm)引腳間距相匹配。這是非常緊湊的間距,可能不太容易獲得這么小的晶振。為適應(yīng)更大的晶振,需要對PCB布板進行改動,如圖2所示。保持好保護環(huán)和局部地平面非常重要。晶振引腳X1和X2至晶振焊盤的走線應(yīng)盡量對稱。
圖2. 可供選擇的另一種PCB布板
關(guān)于晶振選擇的詳細信息,請參考Maxim應(yīng)用筆記#616,Considerations for Maxim Real-Time Clock Crystal Selection。該文檔還包括SMD晶振的技術(shù)數(shù)據(jù),以及其他供應(yīng)商網(wǎng)站的鏈接。
時鐘鬧鐘
DS28DG02能夠從每秒一次到每月一次產(chǎn)生RTC鬧鐘。通過ALMZ引腳發(fā)出報警,電池報警和看門狗報警也使用該引腳。作為時鐘鬧鐘的前提條件,必須運行RTC,并使能時鐘鬧鐘(OSCE = 1, CAE = 1)。
一般而言,要消除時鐘鬧鐘,時鐘狀態(tài)必須與鬧鐘寄存器中的數(shù)值相匹配。有4個RTC鬧鐘寄存器:秒、分鐘、小時、星期日期或者月日期。鬧鐘寄存器中的最高有效位是AM1至AM4,它們控制寄存器是否參與對比。地址133h的DY/DT位規(guī)定剩下的6個比特是否和RTC的星期日期或者月日期進行對比。在其他方面,鬧鐘寄存器和RTC的位分配相匹配。
定義好鬧鐘時間和頻率后,將每個比特(BCD代碼)寫入模板,將結(jié)果轉(zhuǎn)換為十六進制格式(“Hex”列),從而產(chǎn)生時鐘鬧鐘寄存器數(shù)據(jù)。然后,通過SPI寫序列,將獲得的數(shù)據(jù)寫入鬧鐘寄存器。下面的例子解釋了這一過程。這里的顏色表示和上面PIO一節(jié)的相同。
實例1:每小時的25分鐘30秒產(chǎn)生鬧鐘
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
實例2:24小時格式,每天在22:59:59產(chǎn)生鬧鐘
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
實例3:12小時格式,在每星期的第一天6:30:00PM產(chǎn)生鬧鐘
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
看門狗
CPU監(jiān)控電路中一般采用看門狗。技術(shù)上,看門狗可以解釋為可重觸發(fā)單穩(wěn)態(tài)工作方式。在不穩(wěn)定狀態(tài)時,微控制器周期性地將正脈沖加到看門狗的觸發(fā)輸入WDI上,保持一次觸發(fā)單穩(wěn)態(tài)。如果微控制器做不到這一點,看門狗超時,復(fù)位微控制器。
通過SPI狀態(tài)寄存器的WD1:WD0位來選擇DS28DG02的看門狗超時。在寄存器的寫訪問沒有被阻塞
裝上電池(電池安裝)或者上電復(fù)位(如果沒有電池)時禁用了看門狗
報警響應(yīng)
在地址135h的DS28DG02報警和狀態(tài)寄存器留有6個比特來指示重要事件。在出現(xiàn)這類事件時,微控制器應(yīng)特別對待,分別進行響應(yīng),如下所示。如果RPROT = 0,向該寄存器寫入0,所有報警被清除。
RST:復(fù)位標志 | 在RSTZ引腳上有脈沖時,該位被置位,例如,VCC增大時的上電復(fù)位,手動復(fù)位,或者看門狗報警等??刂破鲌?zhí)行其正常上電來進行響應(yīng)。 |
WDA:看門狗報警 | 看門狗報警復(fù)位微控制器,對RST也會有相同的響應(yīng)。微控制器能夠計數(shù)看門狗報警事件的次數(shù)。 |
CLKA:時鐘鬧鐘 | 對于時鐘鬧鐘,微控制器有專門的響應(yīng)。 |
BOR:電池接通復(fù)位標志 | 連接電池后,多功能控制/設(shè)置寄存器、RTC以及RTC鬧鐘寄存器被清零。這是一種錯誤狀態(tài),需要進行初始化,例如,通過用戶輸入(時間)和存儲在EEPROM中的備份數(shù)值來恢復(fù)丟失的數(shù)值。如果使能了硬件寫保護,并且RPROT = 1,除非用戶知道怎樣禁用硬件寫保護,否則需要將設(shè)備送回,以便進行維修服務(wù)。微控制器通過WPZV位來監(jiān)視硬件寫保護。 |
POR:上電復(fù)位標志 | 上電復(fù)位在RSTZ引腳產(chǎn)生一個脈沖。微控制器執(zhí)行其正常上電來進行響應(yīng)。 |
BATA:電池報警 | 該報警指示備用電池接近最終使用壽命。這一狀態(tài)要求用戶注意換電池。根據(jù)不同的應(yīng)用,可以對電池報警事件進行計數(shù),達到一定計數(shù)值后,在換電池之前,設(shè)備停止工作。 |
結(jié)論
在需要存儲器、RTC、PIO以及電源監(jiān)控器和看門狗等CPU監(jiān)控功能的便攜式設(shè)備和其他應(yīng)用中,DS28DG02是非常靈活并且使用方便的元件。
SPI是Motorola, Inc.的商標。