사용자 도구

사이트 도구

English

cublocapp:an32004:index

AN32004 - RTC(리얼타임 클록) DS3231 연결

DS3231 는 달라스사의 RTC (리얼타임 클록) 칩입니다. 32KHZ 크리스털을 내장하고 있어 외부에 별도로 크리스털을 연결할 필요가 없으며, 또한 서미스터를 내장하고 있어, 온도변화에 따른 발진오차를 자체보상해줍니다. 따라서 기존 다른 RTC 칩보다 오차율이 적습니다.

DS3231 는 I2C 통신방식으로 연결됩니다. 따라서 CUBLOC / CUTOUCH 의 I2C 관련명령어로 억세스할 수 있습니다.

결선도

DS3231B 의 VBAT 단자에 3V 정도의 밧데리를 연결하면 정전시 시간증가도 가능합니다. 내부에 밧데리 관련회로가 들어있으므로 별도의 추가회로 (다이오드등)없이 밧데리만 연결하면 됩니다.

소스 프로그램

an32004.zip

Const Device = CB280
Set I2c 16,17
Dim i As Integer
Wait 100
Rtcwrite 0,&h20 ' Sec
Rtcwrite 1,&h59 ' Min
Rtcwrite 2,&h23 ' Hour 24h
Rtcwrite 3,&h7 ' day 1-7, 1=Sun, 2=Mon, 3=Tue, 4=Wed, 5=Thu, 6=FRI, 7=SAT
Rtcwrite 4,&h31 ' Date
Rtcwrite 5,&h12 ' Month
Rtcwrite 6,&h08 ' Year
Do
 I = Rtcread(0)
 Debug Goxy,1,1,Hex2 I, " Sec"
 I = Rtcread(1)
 Debug Goxy,1,2,Hex2 I, " Min"
 I = Rtcread(2) And &h3f
 Debug Goxy,1,3,Hex2 I, " Hour"
 I = Rtcread(3)
 Debug Goxy,1,4,Hex2 I, " Day"
 I = Rtcread(4)
 Debug Goxy,1,5,Hex2 I, " Date"
 I = Rtcread(5)
 Debug Goxy,1,6,Hex2 I, " Month"
 I = Rtcread(6)
 Debug Goxy,1,7,Hex2 I, " Year"
 Wait 500
Loop
End
 
Function Rtcread(__RTCadr As Byte) As Byte
 I2cstart
 If I2cwrite(&hd0) = 1 Then Exit Function
 If I2cwrite(__RTCadr) = 1 Then Exit Function
 I2cstop
 I2cstart
 If I2cwrite(&hd1) = 1 Then Exit Function
 Rtcread = I2creadna(0)
 I2cstop
End Function
 
Sub Rtcwrite(__RTCadr As Byte, __RTCdata As Byte)
 I2cstart
 If I2cwrite(&hd0) = 1 Then Exit Sub
 If I2cwrite(__RTCadr) = 1 Then Exit Sub
 If I2cwrite(__RTCdata) = 1 Then Exit Sub
 I2cstop
End Sub

실행결과

실행하면 다음과 같은 화면이 표시되고, 맨위에 있는 숫자가 1 초마다 1 씩 증가됩니다. 위에서부터 차례대로 초,분,시,요일,일, 월,연도를 나타냅니다

아래 레지스터맵에서 알 수 있듯이, 0 부터 6 번지를 읽어온것입니다.

한단계 뒤로가기

cublocapp/an32004/index.txt · 마지막으로 수정됨: 2017/10/16 00:06 저자 Comfile Technology