RTC (DS1307)와 마이크로 컨트롤러 및 프로그래밍 인터페이스

문제를 제거하기 위해 도구를 사용해보십시오





RTC는 중요한 역할을하는 전자 장치입니다. 실시간 임베디드 시스템 설계 . 시스템 시계, 학생 출석 시스템, 알람 등 다양한 어플리케이션에서 정확한 시간과 날짜를 제공하여 현재 시간을 추적하고 각 작업에 일관된 결과를 제공합니다. 이 기사에서는 8051 microcotroller와의 RTC 인터페이스 및 내부 레지스터의 기본 액세스를 설명합니다.

8051 마이크로 컨트롤러와 RTC 인터페이싱

8051 마이크로 컨트롤러와 RTC 인터페이싱



RTC 프로그래밍 및 인터페이스

8051 마이크로 컨트롤러와 인터페이싱하는 RTC는 인터페이싱 된 다른 모든 종류의 '실시간 클럭'과 유사합니다. 따라서 간단한 RTC 인터페이스를 살펴 보겠습니다. 8051 마이크로 컨트롤러 그리고 그것에 관련된 프로그래밍 절차.


1 단계 : RTC 장치 선택

실시간 임베디드 세계에서 다양한 종류의 RTC 칩을 사용할 수 있으며 패키지 유형, 공급 전압 및 핀 구성 등과 같은 다양한 기준에 따라 분류됩니다. 몇 가지 유형의 RTC 장치가 있습니다.



  • 2 선 직렬 인터페이스 (I2C 버스)
  • 3 선 직렬 인터페이스 (USB BUS)
  • 4 선 직렬 인터페이스 (SPI BUS)

먼저 I2C 버스 RTC 또는 SPI 버스 RTC 등과 같은 요구 사항에 따라 카테고리별로 RTC 장치 유형을 선택해야하며, 이는 각 마이크로 컨트롤러와의 인터페이스에 적합합니다. 그런 다음 배터리 수명, 적합한 패키지 및 클록 주파수와 같은 애플리케이션 요구 사항에 따라 RTC 장치의 기능을 선택할 수 있습니다. 2 선 인터페이스를 고려해 보겠습니다. DS1307과 같은 8051 마이크로 컨트롤러가있는 RTC .

2 단계 : RTC 장치의 내부 레지스터 및 주소

RTC는 크리스탈 주파수를 기반으로 년, 월, 주, 일, 시간, 분 및 초를 제공하는 실시간 시계를 의미합니다. RTC는 내장 된 데이터 저장을위한 RAM 메모리 . RTC 장치에 배터리를 연결하여 주전원 공급이 중단 된 경우 배터리 백업이 제공됩니다.

RTC DB1307 구성 :

RTC 내부 블록 및 핀 다이어그램

RTC 내부 블록 및 핀 다이어그램

A0, A1, A2 : 마스터 장치와 통신하는 데 사용할 수있는 RTC DB1307 칩의 주소 핀입니다. RTC 인터페이스로 8 개의 장치를 제어 할 수 있습니다. 8051 마이크로 컨트롤러 I2C 프로토콜을 사용하여 A0, A1, A2 비트로.


VCC 및 GND : VCC 및 GND는 각각 전원 공급 장치 및 접지 핀입니다. 이 장치는 1.8V ~ 5.5V 범위에서 작동했습니다.

VBT : VBT는 배터리 전원 공급 장치 핀입니다. 배터리 전원은 2V ~ 3.5V 사이에서 유지되어야합니다.

SCL : SCL은 직렬 클럭 핀이며 직렬 인터페이스에서 데이터를 동기화하는 데 사용됩니다.

SDL : 직렬 입력 및 출력 핀입니다. 직렬 인터페이스에서 데이터를 송수신하는 데 사용됩니다.

밖으로 시계 : 선택 사양 인 구형파 출력 핀입니다.

OSC0 및 OSC1 : 이들은 RTC 장치에 클록 신호를 제공하는 데 사용되는 수정 발진기 핀입니다. 표준 수정 크리스탈 주파수는 22.768KHz입니다.

장치 주소 지정 :

I2C 버스 프로토콜은 한 번에 많은 슬레이브 장치를 허용합니다. 모든 슬레이브 장치는이를 나타내는 자체 주소로 구성되어야합니다. 마스터 장치는 주소로 특정 슬레이브 장치와 통신합니다. RTC 장치 주소는 '0xA2'입니다. 여기서 '1010'은 제조업체에서 제공하고 A0, A1, A2는 사용자 정의 주소로, 네트워크에서 8 개의 RTC 장치를 통신하는 데 사용됩니다. I2C 버스 프로토콜 .

장치 추가

장치 추가

R / W 비트는 RTC에서 읽기 및 쓰기 작업을 수행하는 데 사용됩니다. R / W = 0이면 쓰기 동작을 수행하고 읽기 동작의 경우 R / W = 1입니다.

RTC의 읽기 동작 주소 =“0xA3”

RTC의 쓰기 동작 주소 =“0xA2”

메모리 레지스터 및 주소 :

RTC 레지스터는 00h에서 0Fh까지의 주소 위치에 있으며 RAM 메모리 레지스터는 그림과 같이 08h에서 3Fh까지의 주소 위치에 있습니다. RTC 레지스터는 달력 기능과 운전 시간을 제공하고 주말을 표시하는 데 사용됩니다.

메모리 레지스터 및 주소

메모리 레지스터 및 주소

제어 / 상태 레지스터 :

DB1307은 실시간 클럭을 제어하는 ​​데 사용되는 control / status1 및 control / status2와 같은 두 개의 추가 레지스터로 구성됩니다. 인터럽트 .

제어 / 상태 레지스터 1 :

제어 상태 레지스터 1

제어 상태 레지스터 1

  • TEST1 = 0 일반 모드

= 1 EXT-clock 테스트 모드

  • STOP = 0 RTC 시작

= 1 RTC 정류장

  • TESTC = 0 전원 켜기 재설정 비활성화

= 전원 켜기 재설정 활성화

제어 / 상태 레지스터 2 :

제어 상태 레지스터 2

제어 상태 레지스터 2

  • TI / TP = 0 INT 항상 활성

= 1 INT 활성 필수 시간

  • AF = 0 알람이 일치하지 않음

= 1 알람 일치

  • TF = 0 타이머 오버플로가 발생하지 않습니다.

= 1 타이머 오버플로 발생

  • ALE = 0 알람 인터럽트 비활성화

= 1 알람 인터럽트 활성화

  • TIE = 0 타이머 인터럽트 비활성화

= 1 타이머 인터럽트 활성화

3 단계 : RTC ds1307과 8051 인터페이스

RTC는 마이크로 컨트롤러에 인터페이스 I2C와 같은 다른 직렬 버스 프로토콜을 사용하여 SPI 프로토콜 그들 사이의 통신 링크를 제공합니다. 그림은 I2C 버스 프로토콜을 사용하여 8051 마이크로 컨트롤러와 인터페이싱하는 실시간 클록을 보여줍니다. I2C는 양방향 직렬 프로토콜로, 버스에 연결된 장치간에 데이터를 전송하기 위해 SCL 및 SDA와 같은 두 개의 와이어로 구성됩니다. 8051 마이크로 컨트롤러에는 내장 RTC 장치가 없으므로 직렬 통신 구성된 데이터를 보장합니다.

8051 마이크로 컨트롤러와 RTC 인터페이싱

8051 마이크로 컨트롤러와 RTC 인터페이싱

I2C 장치에는 오픈 드레인 출력이 있으므로 풀업 저항은 전압 소스가있는 I2C 버스 라인에 연결되어야합니다. 저항이 SCL 및 SDL 라인에 연결되어 있지 않으면 버스가 작동하지 않습니다.

4 단계 : RTC 데이터 프레이밍 형식

RTC가 8051 마이크로 컨트롤러와 인터페이싱하기 때문에 I2C 버스를 사용하므로 데이터 전송은 바이트 또는 패킷의 형태이며 각 바이트 뒤에는 승인이 따릅니다.

데이터 프레임 전송 :

송신 모드에서 마스터는 주소 비트로 슬레이브 디바이스를 선택한 후 시작 조건을 해제합니다. 주소 비트에는 슬레이브 장치를 ds1307 주소로 나타내는 7 비트가 포함됩니다. 직렬 데이터 및 직렬 클럭은 SCL 및 SDL 라인에서 전송됩니다. START 및 STOP 조건은 직렬 전송의 시작 및 끝으로 인식됩니다. 수신 및 전송 작업 다음에는 R / W 비트가 따릅니다.

데이터 프레임 전송

데이터 프레임 전송

스타트: 주로 시작 조건을 생성하는 마스터에 의해 시작된 데이터 전송 시퀀스입니다.

7 비트 주소 : 그 후 마스터는 단일 16 비트 주소 대신 두 개의 8 비트 형식으로 슬레이브 주소를 보냅니다.

제어 / 상태 레지스터 주소 : 제어 / 상태 레지스터 주소는 제어 상태 레지스터를 허용하는 것입니다.

제어 / 상태 레지스터 1 : RTC 장치를 활성화하는 데 사용되는 제어 상태 레지스터 1

제어 / 상태 레지스터 2 : 인터럽트를 활성화 및 비활성화하는 데 사용됩니다.

R / W : 읽기 및 쓰기 비트가 낮 으면 쓰기 작업이 수행됩니다.

아아: 슬레이브 장치에서 쓰기 작업이 수행되면 수신기는 1 비트 ACK를 마이크로 컨트롤러로 보냅니다.

중지: 슬레이브 장치에서 쓰기 작업이 완료된 후 마이크로 컨트롤러는 슬레이브 장치에 중지 조건을 보냅니다.

수신 데이터 프레임 :

수신 데이터 프레임

수신 데이터 프레임

스타트: 주로 시작 조건을 생성하는 마스터에 의해 시작된 데이터 전송 시퀀스입니다.

7 비트 주소 : 그 후 마스터는 단일 16 비트 주소 대신 두 개의 8 비트 형식으로 슬레이브 주소를 보냅니다.

제어 / 상태 레지스터 주소 : 제어 / 상태 레지스터 주소는 제어 상태 레지스터를 허용하는 것입니다.

제어 / 상태 레지스터 1 : RTC 장치를 활성화하는 데 사용되는 제어 상태 레지스터 1

제어 / 상태 레지스터 2 : 인터럽트를 활성화 및 비활성화하는 데 사용됩니다.

R / W : 읽기 및 쓰기 비트가 높으면 읽기 작업이 수행됩니다.

아아: 슬레이브 장치에서 쓰기 작업이 수행되면 수신기는 1 비트 ACK를 마이크로 컨트롤러로 보냅니다.

중지: 슬레이브 장치에서 쓰기 작업이 완료된 후 마이크로 컨트롤러는 슬레이브 장치에 중지 조건을 보냅니다.

Step5 : RTC 프로그래밍

마스터에서 슬레이브로 쓰기 작업 :

  1. 마스터에서 슬레이브로 시작 조건 발행
  2. SDL 라인에서 쓰기 모드로 슬레이브 주소 전송
  3. 제어 레지스터 주소 보내기
  4. 제어 / 상태 register1value 보내기
  5. 제어 / 상태 register2 값 보내기
  6. 같은 분, 초 및 시간의 날짜를 보냅니다.
  7. 정지 비트 보내기

#포함

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
무효 시작 ()
무효 호스트 (부호없는 문자)
지연 (부호없는 문자)

무효 메인 ()
{

스타트()
write (0xA2) // 슬레이브 주소 //
write (0x00) // 제어 레지스터 주소 //
write (0x00) // 제어 레지스터 1 값 //
write (0x00) // regiter2 vlaue 제어 //
쓰기 (0x28) // 초 값 //
write (0x50) // 분 값 //
쓰기 (0x02) // 시간 값 //
}

무효 시작 ()
{

SDA = 1 // 데이터 처리 //
SCL = 1 // 클럭이 높음 //
지연 (100)
SDA = 0 // 데이터 전송 //
지연 (100)
SCL = 0 // 클럭 신호가 낮음 //
}
무효 쓰기 (부호없는 문자 d)
{

부호없는 문자 k, j = 0 × 80
for (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
지연 (4)
SCL = 0
}
SDA = 1
SCL = 1
지연 (2)
c = SDA
지연 (2)
SCL = 0
}
무효 지연 (int p)
{
unsignedinta, b
For (a = 0a<255a++) //delay function//
For (b = 0b}

슬레이브에서 마스터로 읽기 작업 :

#포함
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
무효 시작 ()
무효 쓰기 (사용 된 문자)
무효 읽기 ()
무효 ack ()
무효 지연 (부호없는 문자)
무효 메인 ()
{
스타트()
쓰기 (0xA3) // 읽기 모드의 슬레이브 주소 //
읽다()
아아()
sec = 값
}
무효 시작 ()
{

SDA = 1 // 데이터 처리 //
SCL = 1 // 클럭이 높음 //
지연 (100)
SDA = 0 // 데이터 전송 //
지연 (100)
SCL = 0 // 클럭 신호가 낮음 //
}
무효 쓰기 (부호없는 문자 d)
{

부호없는 문자 k, j = 0 × 80
for (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
지연 (4)
SCL = 0
}
SDA = 1
SCL = 1
지연 (2)
c = SDA
지연 (2)
SCL = 0
}
무효 지연 (int p)
{
unsignedinta, b
For (a = 0a<255a++) //delay function//
For (b = 0b}
무효 읽기 ()
{
부호없는 문자 j, z = 0 × 00, q = 0 × 80
SDA = 1
for (j = 0j<8j++)
{
SCL = 1
지연 (100)
플래그 = SDA
if (플래그 == 1)

z = (z
무효 ack ()
{
SDA = 0 // SDA 라인이 낮음 //
SCL = 1 // 클럭이 높음에서 낮음 //
지연 (100)
SCL = 0
}

이는 RTC가 8051 마이크로 컨트롤러와 인터페이스하는 데 필요한 단계입니다. 이러한 단계 외에도 데이터를 전송하고 수신하는 데 사용되는 데이터 프레임도 적절한 프로그래밍으로 사용자가 이해할 수 있도록이 문서에서 설명합니다. 이 개념에 대한 추가 도움이 필요하면 아래에 의견을 남길 수 있습니다.