Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
222.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
412 Кб
Скачать
☆

1.5.2 Модуль rtcc на основі мікросхеми ds1307

Модуль реального часу з послідовним інтерфейсом DS1307 – це двійково-десятковий годинник-календар з низьким споживанням струму. Даний модуль відраховує секунди, хвилини, години, день, дату, місяць і рік. Остання дата місяця автоматично коректується для місяців з кількістю днів меньше 31, включаючи корекцію для високосного року. Модуль працює як в 24-годинному, так і в 12-годинному режимах з індикацією AM/PM. DS1307 має інтегровану схему контролю живлення, яка відслідковує проблеми живленя і в разі їх детектування автоматично переключає модуль на живлення від іншого джерела живлення. На рисунку 1.19 представлена типова схема підключення модуля DS1307 до мікроконтролера. Розміщення виводів наведено на рисунку 1.20.

Рисунок 1.15 - Типова схема підключення модуля DS1307 до мікроконтролера

Рисунок 1.16 - Розміщення виводів модуля DS1307

Якщо VCC опускається нижче 1.25 * VBAT, DS1307 припиняє процес доступу і скидає лічильник адреси. При цьому в цей час зовнішні сигнали не опрацьовуються. Якщо VCC опускається нижче VBAT, DS1307 переключаеться в режим живлення відбувається від батареї Vbat.

При включенні живленя DS1307 переключається від батарейки на Vcc, у момент коли значеня Vcc перевищує VBAT + 0.2 В. У додатку Г показано основні елементи та опис виводів RTC з послідовним інтерфейсом.

1.5.3 Робота з протоколом I2C

DS1307 підтримує обмін даними по протоколу I2C по двопровідній двонаправленій шині. Пристрій, який передає дані на шину, є передавачем, а пристрій, приймаючий дані, - відповідно приймачем. Ведучий пристрій генерує синхроімпульси (serial clock - SCL), керує доступом до шини і генерує умови START і STOP. DS1307 працює на шині як ведений пристрій. Типова конфігурація шини з використанням протоколу I2C наведена н рисунку 1.21.

Рисунок 1.17 - Типова конфігурація двохпровідної шини (I2C)

DS1307 на послідовній шині працює як ведений пристрій. Доступ до нього здійснюється встановленням умови START і передачею пристрою ідентифікаційного коду, після якого передається адреса регістру. До наступного за обраним регістром доступ здійснюється послідовно, поки не буде виконана умова STOP.

Нижче описано процес передачі даних по двопровідній шині. Основні принципи передачі даних по шині I2C:

    • передача даних може бути ініційована тільки тоді, коли шина вільна;

    • під час передачі дані на лінії SDA можуть змінюватись тільки тоді, коли на лінії SCL низький рівень, інакше - зміна даних інтерпретуватиметься, як сигнал керування.

Таким чином, можливі наступні стани шини:

  • «Шина не зайнята» – на лініях SDA і SCL зберігається високий рівень;

  • «Початок передачі даних» (умова START) – зміна стану лінії SDA з високого рівня на низький, у той час як на лінії SCL високий рівень;

  • «Завершення передачі даних» (умова STOP) – зміна стану лінії SDA з низького рівня на високий, в той час як на лінії SCL високий рівень;

  • «Коректні дані» – стан лінії SDA являє собою коректні дані, якщо після умови START стан лінії SDA не міняється на протязі високого рівня тактового сигналу. Дані на лінії повинні мінятися впродовж періоду низького рівня тактового сигналу. На один біт даних приходиться один тактовий імпульс;

  • «Підтвердження» – кожен адресований приймаючий пристрій зобов‘язаний генерувати підтвердження після прийому кожного байту. Ведучий пристрій зобов‘язаний генерувати додатковий тактовий імпульс, який призначений для біта підтвердження.

Кожна передача даних ініціюється умовою START і завершується умовою STOP. Кількість байтів даних, що передаються між умовами START і STOP, не обмежена і визначаєтсяь ведучим пристроєм. Інформація передається побайтово, і кожний байт приймач підтверджує дев‘ятим бітом (біт підтвердження - ACK). В специфікації двох провідного інтерфейсу визначені звичайний режим (с тактовою частотою 100 кГц) і швидкий режим (с тактовою частотою 400 кГц). DS1307 працює тільки в звичайному режимі (100 кГц).

  • R/-W – біт читання/запис або біт напряму передачі

Рисунок 1.18 - Передача даних по двохнаправленій шині (І2С)

Для підтвердження прийому пристрій має підтягнути до низького рівня лінію SDA під час тактового імпульсу таким чином, щоб на лінії SDA залишався стабільний низький рівень.

В залежності від стану біта R/-W можливі два типи передачі даних:

  • передача даних від ведучого передавача до веденого приймача. (Перший байт, який передається ведучим, - це адреса веденого пристрою, з яким здійснюватиметься обмін інформацією. Далі передаються безпосередньо байти даних. Ведений повертає біт підтвердження після кожного прийнятого байту. Дані передаються, починаючи з старшого біта (most significant bit - MSB);

  • дані передаються від веденого передавача до ведучого приймача. (Перший байт (адрес веденого) передається ведучим. Ведений повертає біт підтвердження, а за ним певну кількість байтів даних. Ведучий повертає біт підтвердження після всіх прийнятих байтів, крім останнього. В кінці останнього прийнятого байту повертається "не підтверджено" (NACK). Ведучий пристрій генерує всі послідовні синхроімпульси, а також умови START і STOP. Передача завершується умовою STOP або повтором умови START. Так як повтор умови START також є початком наступної послідовної передачі, то в такому випадку шина не вивільняється. Дані передаються, починаючи з старшого біту).

DS1307 може працювати в наступних двох режимах:

  • режим веденого приймача (режим запису DS1307);

  • режим ведучого передавача (режим читання DS1307).

У режимі веденого приймача послідовні дані приймаються по SDA і синхронізуються по SCL. Після кожного прийнятого байту передається біт підтвердженя. Умови START і STOP розпізнаються як початок і кінець послідовної передачі. Розпізнавання адреси виконується апаратно після прийому адреси веденого і біта напряму передачі (див. рисунок 1.23).

Рисунок 1.19 - Режим веденого приймача (режим запису DS1307).

Байт адреси – це перший байт, прийнятий після генерації ведучим умови START. Він містить 7 бітів адреси DS1307, які мають значення 1101000, і біт напряму (R/-W), який для режиму запису рівний 0. Після прийому і декодуваня адресного байту DS1307 видає на лінію SDA підтвердженя, після чого ведучий передає в ведений пристрій адрес регістра. При цьому відбувається встановлення регістрового вказівника адреси у DS1307. Після цього ведучий починає передачу байтів даних, кожен з яких буде підтверджуватися бітом ACK від DS1307. Щоб завершити запис даних, ведучий генерує умову STOP.

У режимі ведучого передавача (режим читання DS1307) перший байт приймається і опрацьовується так само, як і в режимі веденого приймача. Але в даному режимі біт напряму буде вказувати, що напрям передачі протилежний. DS1307 передає послідовні дані по лінії SDA поки на лінію SCL надходять послідовні імпульси. Умови START і STOP розпізнаються в початку і в кінці послідовної передачі (див. рисунок 1.24).

Рисунок 1.20 - Режим ведучого передавача (режим читання DS1307)

Байт адреси – перший байт, який приймається після умови START, генерується ведучим пристроєм. Байт адреси складається з 7-бітної адреси DS1307, яка рівна 1101000, і слідуючого за неє біта напряму передачі (R/-W), який для читання рівний 1. Після прийому і декодування байта адреси, пристрій видає підтвердження на лінію SDA.

Потім DS1307 починає передавати дані, починаючи з вказаної адреси, що знаходиться у регістровому вказівнику. Якщо перед початком читання регістровий вказівник не записаний, то адреса першого зчитуваємого регістру – це адреса, яка була збережена у регістровому вказівнику останьою. DS1307 повинен прийняти "не підтверджено" (NACK) для завершення читання.

Використання апаратного модуля І2С для організації зв‘язку із зовнішніми пристроями в складі МКС (МКП) забезпечує здійсненя обміну даними у автоматичному режимі, без втручання користувача. За користувачем залишається лише виконання налаштування даного модуля на необхідний тип роботи.

Ініціалізація модуля І2С відбувається за наступним алгоритмом:

  • налаштувати виводи портів SCL, SDA як цифрові входи;

  • вибрати тактову частоту роботи модуля рівну 100кГц (у регістр SSPADD записується число, значення якого залежить від тактової частоти роботи мікроконтролера;

  • задати SSPSTAT,SMP - фазу вибірки біта при стандартному режимі (100кГц);

  • встановити вибір фронта тактового сигнала SSPSTAT,СКЕ, що відповідає специфікації І2С;

  • обрати ведучий режим роботи модуля І2С та включити його;

  • очистити регістр SSPCON2;

  • виключити усі переривання мікроконтролера.

Фрагменти ініціалізації модуля MSSP в режимі I2C, формування СТАРТ-умови, СТОП-умови, підтвердження бітів при прийомі АСК та NACK наведено в додатку Ґ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]