1. 程式人生 > >STM32與DS1302設計時鐘晶片,超詳細

STM32與DS1302設計時鐘晶片,超詳細

上圖左邊為暫存器和RAM的地址,右邊為具體內容。各個暫存器的最高位都是1,最低位都是“RD/W”,比如要讀秒暫存器則命令為1000 0101,反之寫為1000 0100,要注意其含義。(圖片不是很清楚,看不清楚的朋友用軟體放大)我們一個一個看:
SEC:秒暫存器,注意具體右邊內容:低四位為SEC,高的次三位為10SEC。最高位CH為DS1302的執行標誌,當CH=0時,DS1302內部時鐘執行,反之CH=1時停止;
MIN:分暫存器;
HR:時暫存器,最高位為12/24小時的格式選擇位,該位為1時表示12小時格式。當設定為12小時顯示格式時,第5位的高電平表示下午(PM);而當設定為24小時格式時,第5位位具體的時間資料。
DATE:日暫存器;
MONTH:月暫存器;
DAY:周暫存器,注意一週只有7天,所以該暫存器只有低三位有效;
YEAR:年暫存器;
CONTROL:防寫暫存器,當該暫存器最高位WP為1時,DS1302只讀不寫,所以要在往DS1302寫資料之前確保WP為0;
TRICKLE CHARGE REGISTER:涓細電流充電設定暫存器,我們知道,當DS1302掉電時,可以馬上呼叫外部電源保護時間資料。該暫存器就是配置備用電源的充電選項的。其中高四位(4個TCS)只有在1010的情況下才能使用充電選項;低四位的情況,與DS1302內部電路有關,有點意思,下文詳細講述。
CLOCK BURST:批量讀寫操作設定暫存器,設定該暫存器後,可以對DS1302的各個暫存器進行連續寫入。DS1302的另外一種讀寫方式。筆者還沒用過,感興趣的朋友可以嘗試。
最後還有一點,前文說過,DS1302有31個位元組的儲存空間,但是大家要看到的是,這31個儲存空間,最後一個是RAM BURST的暫存器,設定該暫存器可以達到對RAM連續讀寫的作用。所以DS1302的可用儲存空間實際上為30個位元組。
現在我們來看看DS1302的涓細電流充電的設定:
以下來自英文原版PDF:
The trickle charge select (TCS) bits (bits4 -7) control the selection of the trickle charger. In order to prevent accidental enabling, only a pattern of 1010 will enable the trickle charger
. All other patterns will disable the trickle charger. The DS1302 powers up with the trickle charger disabled. The diode select (DS) bits (bits 2 – 3)select whether onediode or two diodes are connected between VCC2 and VCC1.If DS is 01, one diode is selected or if DS is10, two diodes are selected. If DS is 00 or 11, the trickle charger is disabled independently of TCS