摘? 要:DS28DG02是帶有PIO、實時時鐘(RTC)、復位、電池監控器和看門狗的2kb SPI? EEPROM,它組合了便攜式設備和嵌入式應用中需要的多種功能。本應用筆記對產品數據資料進行補充說明,給出SPI接口及其寫保護方案的詳細信息,闡述怎樣使用器件的12個PIO和RTC鬧鐘功能。文檔還包括電池選擇指南、RTC晶振" title="晶振">晶振焊盤屏蔽,以及報警事件的軟件響應等。
通信接口
DS28DG02是從機EEPROM器件,通常由微控制器" title="微控制器">微控制器構成的主機利用它通過串行外設接口(SPI)來訪問其資源。SPI最初由Motorola針對MC68HCxx系列微控制器而建立。表1列出了標準SPI信號名稱以及它們的功能。
表1. SPI信號名稱
Motorola名稱 | 功能 | 其他名稱 |
|
串行時鐘,推挽驅動,由主機產生。如果滿足上升時間和下降時間規范,可以使用開漏驅動。 | SCK, SK, C |
|
從機至主機數據線,“主機輸入,從機輸出”。由從機驅動的高阻抗推挽輸出連接至主機的串行輸入。 | SO, DO, Q |
|
主機至從機數據線,“主機輸出,從機輸入”。由主機驅動的高阻抗推挽輸出連接至從機的串行輸入。 | SI, DI, D |
|
從機選擇,推挽輸出,由主機產生。 | CSZ, 低電平有效CS |
基本的SPI通信在主機和從機同時采用了移位寄存器。移位寄存器的輸入和輸出相連,形成一個環回,如圖1所示。時鐘信號在主機驅動下,將8比特串行數據塊由主機傳送至從機,同時由從機傳送至主機,從而實現了SPI全雙工協議。但是,大部分SPI從機,包括DS28DG02,在接收或者發送數據前,首先需要一條命令。同樣,在半雙工模式下,數據由主機傳送到從機或者由從機傳送到主機。

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