引腳功能及結構
DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關閉的情況下,也能保持時鐘的連續運行。DS1302由Vcc1或
Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供
電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數據傳送。RST輸入有兩種功
能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節或多字節數據的傳送手段。當RST為高電平時,所有的數據
傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數據傳送,I/O引腳變為高阻態。上電運行時,在
Vcc>2.0V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數據輸入輸出端(雙向),后面有詳
細說明。SCLK為時鐘輸入端。
DS1302的控制字節
DS1302
的控制字如圖2所示。控制字節的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數據寫入DS1302中,位6如果為0,則表示存取日歷時鐘數據,
為1表示存取RAM數據;位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節總是從最低位開始輸
出。
數據輸入輸出(I/O)
在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數據被寫入DS1302,數據輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數據,讀出數據時從低位0位到高位7。
調試中問題說明
DS1302 與微處理器進行數據交換時,首先由微處理器向電路發送命令字節,命令字節最高位Write
Protect(D7)必須為邏輯1,如果D7=0,則禁止寫DS1302,即寫保護;D6=0,指定時鐘數據,D6=1,指定RAM數據;D5~D1指
定輸入或輸出的特定寄存器;最低位LSB(D0)為邏輯0,指定寫操作(輸入), D0=1,指定讀操作(輸出)。
在DS1302的時鐘日歷或RAM進行數據傳送時,DS1302必須首先發送命令字節。若進行單字節傳送,8位命令字節傳送結束之后,在下2個SCLK周期的上升沿輸入數據字節,或在下8個SCLK周期的下降沿輸出數據字節。
DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態為一個8位的字節,其命令控制字為C0H~FDH,其中奇數為讀操作,偶數為寫操作;再一類為突發方式下的RAM寄存器,在此方式下可一次性讀、寫所有的RAM的31個字節。
要特別說明的是備用電源B1,可以用電池或者超級電容器(0.1F以上)。雖然DS1302在主電源掉電后的耗電很小,但是,如果要長時間保證時鐘正
常,最好選用小型充電電池。可以用老式電腦主板上的3.6V充電電池。如果斷電時間較短(幾小時或幾天)時,就可以用漏電較小的普通電解電容器代替。
100 μF就可以保證1小時的正常走時。DS1302在第一次加電后,必須進行初始化操作。初始化后就可以按正常方法調整時間。
常見問題描述:
1.時間能夠寫進ds1302芯片,但時間保持不便
1)遇到時間不走的問題,首先查看 妙寄存器(81h)的最高位CH是否為1,該位用于控制晶振是否停止起振,為0晶振才能正常起振;
2)如果CH位為0,晶振不起振,就得檢查晶振是否悍反,電路是否正確,晶振是否損壞。
2.數據無法寫入
檢測WP寫保護寄存器(8fh)的最高位是否為1,為一則會處于寫保護狀態
3.無法充電
ds1302上電充電功能是禁用的,檢測充電控制寄存器(91h)寄存器,能夠充電的條件是:
1)TCS為1010h,其他的值則禁用充電功能;
2)DS為01,選擇1個二極管,DS為10,選擇2個二極管,00,11則禁用充電功能;
3)RS為01,選擇2kΩ的電阻,RS為10,選擇4kΩ的電阻,RS為11,選擇8kΩ的電阻,RS為00,則禁用充電功能。
4.通過示波器抓的波形分析沒有問題,但就是無法正常讀寫RTC
如果通過示波器抓波形分析,讀寫時序沒有問題,但寫入RAM后的數據讀出后不正確,沒法設置時間,那就得懷疑芯片問題了,市場上存在很多國產假芯片,其時序可能和ds1302官方提供的datasheet時序不一致所致,可以買個進口芯片替換試試。