RTC - это электронное устройство, которое играет важную роль в проектирование встроенных систем в реальном времени . Он обеспечивает точное время и дату в различных приложениях, таких как системные часы, система посещаемости студентов, будильник и т. Д., Которые отслеживают текущее время и обеспечивают согласованный результат для соответствующей задачи. В этой статье представлен интерфейс RTC с микроконтроллером 8051 и базовый доступ к внутренним регистрам.
Интерфейс RTC с микроконтроллером 8051
Программирование и интерфейс RTC
Интерфейс RTC с микроконтроллером 8051 аналогичен всем другим видам «часов реального времени», подключенных к нему. Итак, давайте посмотрим на простой интерфейс RTC с 8051 микроконтроллер и процедура программирования вовлечения в него.
Шаг 1: Выберите устройство RTC
Во встроенном мире реального времени доступны различные типы микросхем RTC, которые классифицируются на основе различных критериев, таких как тип корпуса, напряжение питания, конфигурация контактов и т. Д. Несколько типов устройств RTC:
- Двухпроводной последовательный интерфейс (шина I2C)
- Трехпроводной последовательный интерфейс (USB-шина)
- Четырехпроводной последовательный интерфейс (SPI BUS)
Во-первых, нам нужно выбрать тип устройства RTC по категории на основе требований, таких как I2C Bus RTC или SPI Bus RTC или другое, которое подходит для взаимодействия с соответствующим микроконтроллером. Затем мы можем выбрать характеристики устройства RTC в зависимости от требований приложения, таких как время автономной работы, подходящий корпус и тактовая частота. Рассмотрим двухпроводную связь RTC с микроконтроллером 8051, например DS1307 .
Шаг 2: Внутренний регистр и адрес устройства RTC
RTC обозначает часы реального времени, которые показывают годы, месяцы, недели, дни, часы, минуты и секунды в зависимости от частоты кристалла. RTC состоит из встроенных RAM-память для хранения данных . Резервная батарея будет обеспечена в случае отказа основного питания путем подключения батареи к устройству RTC.
RTC DB1307 Конфигурация:
Внутренние блоки RTC и схема контактов
A0, A1, A2: являются адресными контактами микросхемы RTC DB1307, которые могут использоваться для связи с ведущим устройством. Мы можем контролировать восемь устройств с интерфейсом RTC с 8051 микроконтроллер битами A0, A1, A2 с использованием протокола I2C.
VCC и GND: VCC и GND - это контакты питания и заземления соответственно. Это устройство работало в диапазоне от 1,8 В до 5,5 В.
VBT: VBT - вывод питания от батареи. Источник питания от батареи должен находиться в диапазоне от 2 В до 3,5 В.
SCL: SCL - это вывод тактовых импульсов последовательного интерфейса, который используется для синхронизации данных по последовательному интерфейсу.
SDL: Это последовательный вход и выход. Он используется для передачи и приема данных по последовательному интерфейсу.
Часы из: Это дополнительный выходной вывод прямоугольной формы.
OSC0 и OSC1: Это выводы кварцевого генератора, которые используются для подачи тактовых сигналов на устройство RTC. Стандартная частота кварцевого кристалла составляет 22,768 кГц.
Адресация устройства:
Протокол шины I2C позволяет одновременно использовать несколько ведомых устройств. Каждое ведомое устройство должно иметь собственный адрес, который будет отображаться на нем. Главное устройство связывается с конкретным подчиненным устройством по адресу. Адрес устройства RTC - «0xA2», где «1010» задается производителем, а A0, A1, A2 - адрес, определяемый пользователем, который используется для связи с восемью устройствами 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
- TEST1 = 0 нормальный режим
= 1 Тестовый режим EXT-clock
- STOP = 0 запускается RTC
= 1 остановка RTC
- TESTC = 0 сброс при включении отключен
= сброс при включении включен
Регистр управления / состояния 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 которые обеспечивают связь между ними. На рисунке показано взаимодействие часов реального времени с микроконтроллером 8051 с использованием протокола шины I2C. I2C - это двунаправленный последовательный протокол, который состоит из двух проводов, таких как SCL и SDA, для передачи данных между устройствами, подключенными к шине. Микроконтроллер 8051 не имеет встроенного устройства RTC, поэтому мы подключили его извне через последовательная связь для обеспечения составных данных.
Интерфейс RTC с микроконтроллером 8051
Устройства I2C имеют выходы с открытым стоком, поэтому подтягивающие резисторы должны быть подключены к линии шины I2C с источником напряжения. Если резисторы не подключены к линиям SCL и SDL, шина работать не будет.
Шаг 4: формат кадрирования данных RTC
Поскольку интерфейс RTC с микроконтроллером 8051 использует шину I2C, передача данных осуществляется в виде байтов или пакетов, и за каждым байтом следует подтверждение.
Передача кадра данных:
В режиме передачи ведущее устройство сбрасывает условие запуска после выбора ведомого устройства по биту адреса. Бит адреса содержит 7 битов, которые указывают подчиненные устройства как адрес ds1307. Последовательные данные и последовательные часы передаются по линиям SCL и SDL. Условия START и STOP распознаются как начало и конец последовательной передачи. За операциями приема и передачи следует бит чтения / записи.
Передача кадра данных
Начинать: В первую очередь, последовательность передачи данных, инициированная мастером, генерирующим условие запуска.
7-битный адрес: После этого мастер отправляет подчиненный адрес в двух 8-битных форматах вместо одного 16-битного адреса.
Адрес регистра управления / состояния: Адрес регистра управления / состояния предназначен для разрешения регистров состояния управления.
Регистр управления / состояния 1: Регистр состояния управления1, используемый для включения устройства RTC
Регистр управления / состояния 2: Он используется для включения и отключения прерываний.
R / W: Если бит чтения и записи низкий, выполняется операция записи.
УВЫ: Если операция записи выполняется в ведомом устройстве, то приемник отправляет 1-битный ACK на микроконтроллер.
Останавливаться: После завершения операции записи в подчиненном устройстве микроконтроллер отправляет состояние остановки подчиненному устройству.
Получение кадра данных:
Получение кадра данных
Начинать: В первую очередь, последовательность передачи данных, инициированная мастером, генерирующим условие запуска.
7-битный адрес: После этого мастер отправляет подчиненный адрес в двух 8-битных форматах вместо одного 16-битного адреса.
Адрес регистра управления / состояния: Адрес регистра управления / состояния предназначен для разрешения регистров состояния управления.
Регистр управления / состояния 1: Регистр состояния управления 1, используемый для включения устройства RTC.
Регистр управления / состояния 2: Он используется для включения и отключения прерываний.
R / W: Если бит чтения и записи высокий, выполняется операция чтения.
УВЫ: Если операция записи выполняется в ведомом устройстве, то приемник отправляет 1-битный ACK на микроконтроллер.
Останавливаться: После завершения операции записи в подчиненном устройстве микроконтроллер отправляет состояние остановки подчиненному устройству.
Шаг 5: Программирование RTC
Запись операции от ведущего к ведомому:
- Задайте условие запуска от ведущего к ведомому
- Перенести адрес подчиненного устройства в режим записи в строке SDL
- Отправить адрес регистра управления
- Отправить значение регистра управления / статуса
- Отправить значение регистра управления / состояния 2
- Отправить дату как минуты, секунды и часы
- Отправить стоповый бит
#включают
сбит SCL = P2 ^ 5
sbit SDA=P2^6
недействительный старт ()
недействительные хосты (беззнаковый символ)
задержка (символ без знака)
пустая функция()
{
Начните()
write (0xA2) // адрес ведомого //
write (0x00) // адрес управляющего регистра //
write (0x00) // управлять значением регистра 1 //
write (0x00) // управление regiter2 vlaue //
write (0x28) // значение секунды //
write (0x50) // значение минут //
write (0x02) // значение часов //
}
недействительный старт ()
{
SDA = 1 // обработка данных //
SCL = 1 // часы высокие //
задержка (100)
SDA = 0 // отправил данные //
задержка (100)
SCL = 0 // тактовый сигнал низкий //
}
пустая запись (беззнаковый символ d)
{
символ без знака k, j = 0 × 80
для (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
Для (a = 0a<255a++) //delay function//
Для (b = 0b
Прочтите операцию от ведомого к главному:
#включают
сбит SCL = P2 ^ 5
sbit SDA=P2^6
недействительный старт ()
пустая запись (знаковый символ)
недействительное чтение ()
void ack ()
недействительная задержка (символ без знака)
пустая функция()
{
Начните()
write (0xA3) // адрес ведомого устройства в режиме чтения //
читать()
Увы()
сек = значение
}
недействительный старт ()
{
SDA = 1 // обработка данных //
SCL = 1 // часы высокие //
задержка (100)
SDA = 0 // отправил данные //
задержка (100)
SCL = 0 // тактовый сигнал низкий //
}
пустая запись (беззнаковый символ d)
{
символ без знака k, j = 0 × 80
для (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
Для (a = 0a<255a++) //delay function//
Для (b = 0b
Пустое чтение ()
{
Символ без знака j, z = 0 × 00, q = 0 × 80
SDA = 1
для (j = 0j<8j++)
{
SCL = 1
задержка (100)
flag = SDA
если (флаг == 1)
z = (z
void ack ()
{
SDA = 0 // линия SDA идет на низкий //
SCL = 1 // часы идут от высокого к низкому //
задержка (100)
SCL = 0
}
Это необходимые шаги для взаимодействия RTC с микроконтроллером 8051. Помимо этих шагов, фреймы данных, используемые для передачи и приема данных, также обсуждаются в этой статье для понимания пользователем при соответствующем программировании. Для получения дополнительной информации по этой концепции вы можете оставить комментарий ниже.