Руководство пользователя Allwinner H616


  Описание      Система      Графика    Память    Ethernet    Видео    Аудио    Интерфейсы    Безопасность  

3. Система (System)

3.1. Отображение памяти

3.10. Контроллер термодатчика

3.11. Подключение периферийной системы PSI

3.12. Модуль управления памятью ввода-вывода IOMMU

  3.13. Часы реального времени RTC  

3.2. Конфигурация CPUX

3.3. Контроллер синхрогенератора

3.4. Загрузочное ПЗУ (BROM)

3.5. Конфигурация системы

3.6. Таймер

3.7. Таймер высокой скорости

3.8. Универсальный контроллер прерываний

3.9. Прямой доступ к памяти



Глава 3. Система - System
Раздел 3.13. Часы реального времени RTC - Real Time Clock (RTC)

3.13. RTC


3.13.1. Обзор

RTC (часы реального времени) используются для отображения реального времени и периодического пробуждения. RTC может отображать год, месяц, день, неделю, час, минуту, секунду в реальном времени. RTC имеет независимое питание для продолжения работы при отключенной системе.

RTC имеет следующие особенности:

  • Обеспечивает 16-битный счетчик для подсчета дня, 5-битный счетчик для подсчета часов, 6-битный счетчик для подсчета минут, 6-битный счетчик для подсчета секунд
  • Поддерживает одно решение без низкочастотного кристалла, точный счетчик 32,768 кГц может быть сгенерирован с помощью HOSC для калибровки внутренних часов RC
  • Настраиваемое начальное значение программным обеспечением в любое время
  • Периодический сигнал для пробуждения внешних устройств
  • 16 регистров общего назначения для хранения информации об отключении питания


    Диаграмма дерева часов Древовидная схема часов реального времени показана на Рисунке 3-35.

    Рисунок 3-35. Часы реального времени

  • Дерево часов RTC может быть выбрано соответствующим переключателем, есть 2 варианта: 32K, полученные при частотном делении RC, Cali 32K после калибровки.
  • Источник тактовой частоты: внутренний RC-генератор на 16 МГц, при использовании калибровочного выхода необходим высокочастотный кристалл DCXO.
  • Выходные часы: CLK32K_LOSC и RTC_32K.
  • Разветвление: в качестве источника тактовой частоты для разветвления можно выбрать RTC_32K, или 32K, разделенные на PLL_PERI (2X), или 32K, разделенные на HOSC.


    3.13.3. Операции и функциональные описания


    3.13.3.1

    Внешние сигналы

    Таблица 3-10. Внешние сигналы RTC


    Сигнал | Описание

  • X32KFOUT Разветвление тактовой частоты 32,768 кГц, обеспечивает низкочастотную синхронизацию внешнего устройства


    3.13.3.2

    Часы и сброс

  • Модуль RTC имеет независимый сигнал сброса, сигнал следует за VCC_RTC. Когда VCC_RTC включается, сигнал сброса сбрасывает модуль RTC; после того, как VCC_RTC станет стабильным, сигнал сброса всегда будет иметь высокий уровень. Сброс сторожевого таймера не может сбросить RTC. Модуль RTC обращается к своему регистру через APBS1.


    3.13.3.3

    Типичное применение

    Рисунок 3-36. Схема применения RTC

    Система обращается к регистру RTC через APBS1 для генерации реального времени.

    Если внешнему устройству нужен низкочастотный генератор, который может быть предоставлен X32KFOUT.


    3.13.3.4

    Реализация функции

    1. Источники синхронизации

    RTC имеет 1 источник синхронизации: внутренний RC.

    При использовании внутреннего RC, часы RTC могут быть изменены путем изменения коэффициента деления, или точные часы 32K могут быть выведены путем включения схемы калибровки.

    2. Часы реального времени

    Рисунок 3-37. Счетчик RTC

    Счетчик 1K добавляет 1 по каждому переднему фронту тактового сигнала. Когда число часов достигает 0x3FF, счетчик 1K снова начинает отсчет с 0, а второй счетчик добавляет 1.

    Структура шагов счетчика 1KHz следующая.

    Рисунок 3-38. Структура шага счетчика RTC 1 кГц В соответствии с приведенной выше реализацией диапазон изменения каждого счетчика следующий.

    Таблица 3-11. Диапазон изменения счетчиков RTC

    Cчетчик | Диапазон

  • Секунда 0 ~ 59
  • Минута 0 ~ 59
  • Час 0 ~ 23
  • День 0 ~ 65535 (год, месяц, день должны быть преобразованы программным обеспечением в соответствии с дневным счетчиком)

    ВНИМАНИЕ

    Поскольку в оборудовании нет механизма исправления ошибок, обратите внимание, что каждая конфигурация счетчика не должна выходить за пределы разумного диапазона счета

    .

    3. Alarm0

    Принцип alarm0 - это компаратор. Когда таймер RTC достигает запланированного времени, RTC генерирует прерывание. RTC генерирует только одно прерывание, когда таймер RTC достигает запланированного счетчика дня, часа, минут и секунд, затем RTC необходимо установить новое запланированное время, может быть сгенерировано следующее прерывание.

    4. Хранение при выключенном питании

    RTC предоставляет шестнадцать 32-битных регистров общего назначения для хранения информации при отключении питания.

    Когда система находится в режиме выключения или ожидания, ЦП может судить о программном процессе по сохраненной информации.

    5. RTC_VIO

    Модуль RTC имеет LDO, входной источник LDO - VCC_RTC, выход LDO - RTC_VIO. Но VCC_RTC пакета H616 внутренне подключен к VCC_PLL, а RTC_VIO недоступен в пакете H616.

    6. Калибровка RC

    Базовая схема калибровки RC показана на рисунке 3-39. Выводить ли откалиброванные часы RC можно выбрать с помощью бита управления RC_Cali_SEL, принцип калибровки следующий.

    Рисунок 3-39. Базовая схема калибровки RC


    Как показано на рис. 3-40, используя HOSC (24M) в качестве эталонных часов, вычислите номер счетчика M тактовых импульсов RC в пределах 1 мс / 16 мс / 128 мс для получения точной частоты внутреннего RC.

    Разделив точную частоту на 32,768 кГц, получается делитель частоты (K) от тактовой частоты RC до 32,768 кГц. Наконец, RC16M делится на частоту 32,768 кГц делителем частоты (K).

    Рисунок 3-40. Форма волны RC и HOSC

    Примечание

    Принцип калибровки - выход 32,768 кГц, нет входа 16 МГц.

    7. Пробуждение по времени DCXO

    Логика схемы синхронизированного пробуждения DCXO относительно проста, включая два элемента управления: автоматическое включение аппаратного пробуждения по времени и продолжительность пробуждения по времени (конфигурация программного обеспечения).

    Активизация по времени означает, что схема DCXO должна активировать выходные часы каждую секунду (от 1 до 60 с, обычно температура окружающей среды меняется незначительно за несколько секунд) для калибровки 32K в сценарии супер-ожидания или выключения, после калибровки цепь DCXO работает закрыто, закрытое время - это синхронизированное время пробуждения (конфигурация программного обеспечения).

    Время цепи DCXO от начала пробуждения до стабильного выхода составляет 3 ~ 4 мс. Хотя функция пробуждения по времени закрыта, цепь DCXO всегда работала. Процесс включения по времени показан на рисунке 3-41.

    Рисунок 3-41. Форма сигнала синхронизированного пробуждения DCXO

    Время калибровки в выключенном состоянии или в супер-режиме ожидания: синхронизированное время пробуждения, настроенное программным обеспечением + время DCXO от пробуждения до стабильного выхода + время калибровки. Время пробуждения по времени, настроенное программным обеспечением на рисунке, составляет 1 с, и его можно настроить с помощью программного обеспечения в приложении. Это теоретическое максимальное значение для DCXO от пробуждения до стабильной выходной тактовой частоты за 4 мс, конкретное значение зависит от результатов измерений IC. В любой момент из этих трех периодов запуск или выход из супер-режима ожидания не вызовет сбоев DCXO.

    Разрешающий сигнал DCXO и разрешающий сигнал синхронизированного пробуждения DCXO представляют собой логику «ИЛИ», и они не противоречат друг другу.

    Интервал между непрерывной операцией включения DCXO и операцией отключения не менее 4 мкс.


    3.13.3.5

    Рабочий режим

    1. Календарь RTC

  • (1) Запишите начальное значение времени: запишите текущее время в RTC_DAY_REG и RTC_HH_MM_SS_REG.
  • (2) По истечении заданного времени прочтите бит [8: 7] LOSC_CTRL_REG, чтобы убедиться, что настройка завершена.
  • (3) По истечении времени обновления RTC перезапускается для повторного отсчета. Программа может считывать текущее время в любое время.

    Примечание

    RTC может обеспечивать только счетчик дней, поэтому счетчик текущего дня необходимо преобразовать в год, месяц, день и неделю с помощью программного обеспечения.

    По истечении заданного времени каждый раз перед выполнением следующей настройки необходимо убедиться, что бит [8: 7] LOSC_CTRL_REG равен 0.

    2. Alarm 0

  • (1) Включите прерывание alarm0, записав ALARM0_IRQ_EN.
  • (2) Установите счетчик-компаратор, запишите день, час, минуту, секунду обратного отсчета в ALARM0_DAY_REG и ALARM0_HH_MM_SS_REG.
  • (3) Включите функцию alarm0, записав ALARM0_ENABLE_REG, тогда программное обеспечение может запросить значение счетчика аварийных сигналов в реальном времени с помощью ALARM0_DAY_REG и ALARM0_HH_MM_SS_REG. По достижении установленного времени ALARM0_IRQ_STA_REG устанавливается в 1 для генерации прерывания.
  • (4) После входа в процесс прерывания напишите ALARM0_IRQ_STA_REG, чтобы очистить отложенное прерывание, и выполните процесс прерывания.
  • (5) Возобновить прерывание и продолжить выполнение прерванного процесса.

    3. Fanout

    Установите бит 0 для 32K_FANOUT_GATING_REG в 1 и убедитесь, что внешний подтягивающий резистор и напряжение в норме, тогда можно будет выводить прямоугольный сигнал разветвления 32,768 кГц.

    4. Шифрование данных DRAM

    Если используется шифрование данных DRAM, данные DRAM, считываемые ЦП, являются зашифрованными данными.

  • Шаги следующие.

  • Перед записью / чтением CRY_KEY_REG и CRY_EN_REG бит [15: 0] CRY_CONFIG_REG должен быть записан в 0x1689.

    Примечание

    Обратите внимание, что этот шаг необходимо выполнять перед каждой операцией чтения и записи, иначе операция регистрации не будет успешной.

    5. Сценарий использования калибровки RC

  • Power-on: выберите неточные часы 32K, разделенные внутренним RC.
  • Обычный сценарий: выберите частоту 32 кГц, разделенную на 24 МГц.
  • Сценарий режима ожидания или отключения питания: используйте внешнюю калибровочную частоту 32 кГц.


    3.13.4. Рекомендации по программированию


    3.13.4.1

    Часы реального времени

    Например: установить время - 21 минута, 07:08:09

    RTC_DAY_REG = 0x00000015; RTC_HH_MM_SS_REG = 0x00070809; // 0000 0000 000 | 0 0000 (час) 00 | 00 0000 (минута) 00 | 00 0000 (секунда) Read (RTC_DAY_REG); Read (RTC_HH_MM_SS_REG);


    3.13.4.2

    Alarm 0

  • irq_request(GIC_SRC_R_Alarm0, Alm0_handler);
  • irq_enable(GIC_SRC_R_Alarm0);
  • writel(1, ALARM0_DAY_SET_REG);
  • writel(1, RTC_HH_MM_SS_REG); //set 1 second corresponding to normal mode;
  • writel(1, ALM0_EN);
  • writel(1, ALM_CONFIG); //NMI output
  • while(!readl(ALM0_IRQ_STA));
  • writel(1, ALM0_IRQ_EN);
  • while(readl(ALM0_IRQ_STA));




  •    3.13.5. Список регистров