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


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

9. Интерфейсы (Interfaces)

9.1. Двухпроводной интерфейс

9.10. Контроллер транспортного потока

9.2. Универсальный асинхронный приемо-передатчик

9.3. Синхронный последовательный интерфейс

9.4. USB 2.0 OTG

9.5. Хост-контроллер USB2.0

9.6. Контроллер порта

9.7. Низкоскоростной АЦП

9.8. Инфракрасный приемник

  9.9. Контроллер ШИМ  



Глава 9. Интерфейсы - Interfaces
Раздел 9.9. Контроллер ШИМ - PWM Controller

9.9. ШИМ


9.9.1. Обзор

Контроллер PWM имеет 4 канала PWM (PWM1, PWM2, PWM3, PWM4) и делится на 3 группы: PWM1, пара PWM23, PWM4. Пара PWM23 состоит из PWM2 и PWM3. Пара PWM23 поддерживает функцию мертвой зоны.

ШИМ имеет следующие особенности:

  • 4 канала ШИМ (ШИМ1, ШИМ2, ШИМ3, ШИМ4)
  • PWM1 / PWM4 имеет одноканальные характеристики модуля PWM и не имеет парной функции
  • Поддерживает импульсный (настраиваемое количество импульсов), цикл и выход дополнительной пары
  • Поддерживает ввод захвата
  • Программирование выхода мертвой зоны
  • Встроенный программируемый генератор мертвого времени, регулируемое мертвое время
  • Три вида выходного сигнала: непрерывный сигнал, импульсный сигнал и дополнительная пара
  • Диапазон выходной частоты: 0 ~ 24 МГц / 100 МГц
  • Различный рабочий цикл: 0% ~ 100%
  • Минимальное разрешение: 1/65536
  • Генерация прерывания для вывода ШИМ и ввода захвата


    9.9.2. Блок-схема

    Рисунок 9-48. Блок-схема ШИМ. Пара PWM23 состоит из модуля синхроимпульсов, 2-х модулей логики таймера и программируемого генератора неактивного времени.

  • PWM1 состоит из 1 модуля часов, 1 модуля логики таймера.
  • PWM4 состоит из 1 модуля часов, 1 модуля логики таймера.
  • PWM1 и PWM4 не поддерживают функцию мертвой зоны.


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


    9.9.3.1

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

    В Табл. 9-25 описаны внешние сигналы ШИМ.

    Таблица 9-25. Внешние сигналы ШИМ

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

  • Модуль ширины импульса PWM1, канал 1, ввод / вывод
  • Модуль ширины импульса PWM2, канал 2, ввод / вывод
  • Модуль ширины импульса PWM3, канал 3, ввод / вывод
  • Модуль ширины импульса PWM4, канал 4, ввод / вывод


    9.9.3.2

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

  • Подходит для устройства отображения, такого как ЖК-дисплей
  • Подходит для управления электродвигателем


    9.9.3.3

    Контроллер синхронизации

    На примере пары PWM23 схема контроллера синхронизации выглядит следующим образом. Тактовая диаграмма PWM1 такая же, как PWM3 пары PWM23. Тактовая диаграмма PWM4 такая же, как PWM2 пары PWM23.

    Рисунок 9-49. Схема парного тактового контроллера PWM23


  • Источниками синхронизации ШИМ являются OSC24M и шина APB1. OSC24M поступает от внешнего высокочастотного генератора, APB1 - это тактовая частота шины APB1, обычно 100 МГц.
  • Пара PWM23 включает в себя выбор источника тактовой частоты (PWM23_CLK_SRC_SEL), делитель экспоненты первого уровня (PWM23_CLK_DIV_M), делитель подсчета второго уровня (PRESCAL_K), обход источника тактовой частоты (CLK_SRC_BYPASS) и переключатель тактовой частоты (PWM23_CLK_GATING).
  • Функция обхода источника тактовой частоты заключается в том, что источник тактовой частоты напрямую обращается к выходу ШИМ, а выходной сигнал ШИМ - это форма выходного сигнала контроллера тактовой частоты. Линии сетки BYPASS на приведенном выше рисунке указывают на функцию обхода источника синхросигнала, подробности об агрегате см. На Рисунке 9-50.


    9.9.3.4

    ШИМ выход

    На примере пары PWM23 на рис. 9-50 показана схема выходного логического модуля пары PWM23. Схема логического модуля PWM1 такая же, как и PWM3 пары PWM23. Схема логического модуля PWM4 такая же, как и PWM2 пары PWM23.

    Рисунок 9-50. Схема логического модуля парных выходов PWM23


    Модуль логики таймера PWM (PWM_TIMER_LOGIC) состоит из одного 16-битного счетчика с повышением частоты и одного 16-битного компаратора. Счетчик вверх используется для управления циклом ШИМ, компаратор используется для управления рабочим циклом.

    Повышающий счетчик и компаратор поддерживают загрузку кеша, после того, как выход ШИМ включен, значения регистров повышающего счетчика и компаратора (PPR [PWM_ENTIRE_CYCLE] и PPR [PWM_ACTIVE_CYCLE]) могут быть изменены в любое время, измененное значение кешируется в регистр кеша. Когда значение счетчика вверх достигает значения PPR [PWM_ENTIRE_CYCLE], значение регистра кэша может быть загружено в счетчик вверх и в компаратор. Загрузка кэша хороша, чтобы избежать нестабильной формы выходного сигнала ШИМ с функцией заусенцев при обновлении значений счетчика вверх и компаратора.

    ШИМ поддерживает вывод сигналов цикла и импульсов.
  • Циклический режим: когда значение обратного счетчика достигает PPR. [PWM_ENTIRE_CYCLE], значение обратного счетчика автоматически загружается в 0 и счетчик обратного отсчета продолжает считать, тогда форма выходного сигнала представляет собой непрерывный сигнал.
  • Импульсный режим: когда значение восходящего счетчика достигает PPR. [PWM_ENTIRE_CYCLE], значение восходящего счетчика автоматически загружается до 0, и счетчик счетчика прекращает счет, тогда форма выходного сигнала представляет собой импульсную форму волны.


    9.9.3.5

    Период и рабочий цикл

  • Период, рабочий цикл и активное состояние выходного сигнала ШИМ определяются счетчиком вверх и компаратором. Правило компаратора следующее.
  • PCNTR> = (PWM_ENTIRE_CYCLE - PWM_ACT_CYCLE), выход «активное состояние» PCNTR <(PWM_ENTIRE_CYCLE - PWM_ACT_CYCLE), выход «~ (активное состояние)»

    (1) Активное состояние канала PWM2 - высокий уровень (PCR_ACT_STA) = 1.

  • Когда PCNTR2> = (PPR2. PWM_ENTIRE_CYCLE - PPR2.PWM_ACT_CYCLE), то PWM2 выводит 1 (высокий уровень).
  • Когда PCNTR2 <(PPR2. PWM_ENTIRE_CYCLE - PPR2.PWM_ACT_CYCLE), то PWM2 выводит 0 (низкий уровень).
  • Формула периода вывода ШИМ и рабочего цикла выглядит следующим образом.

    Tperiod = (PWM23_CLK / PWM2_PRESCALE_K)-1 * PPR2. PWM_ENTIRE_CYCLE Thigh-level = (PWM23_CLK / PWM2_PRESCALE_K)-1 * PPR2.PWM_ACT_CYCLE Tlow-level = (PWM23_CLK / PWM2_PRESCALE_K)-1 * (PPR2.PWM_ENTIRE_CYCLE - PPR2.PWM_ACT_CYCLE) Duty-cycle = (high level time) / (1 period time) = Thigh-level / Tperiod

    Рисунок 9-51. Период и рабочий цикл активного состояния высокого уровня PWM2.


    (2) Активное состояние канала PWM2 - низкий уровень (PCR2. PWM_ACT_STA = 0)

  • Когда PCNTR2> = (PPR2. PWM_ENTIRE_CYCLE - PPR2.PWM_ACT_CYCLE), то PWM2 выводит 0.
  • Когда PCNTR2 <(PPR2. PWM_ENTIRE_CYCLE - PPR2.PWM_ACT_CYCLE), то PWM2 выводит 1.
  • Формула периода вывода ШИМ и рабочего цикла выглядит следующим образом.

    Tperiod = (PWM23_CLK / PWM2_PRESCALE_K)-1 * PPR2. PWM_ENTIRE_CYCLE Thigh-level = (PWM23_CLK / PWM2_PRESCALE_K)-1 * (PPR2.PWM_ENTIRE_CYCLE - PPR2.PWM_ACT_CYCLE) Tlow-level = (PWM23_CLK / PWM2_PRESCALE_K)-1 * PPR2.PWM_ACT_CYCLE Duty-cycle = (low level time) / (1 period time) = Tlow-level / Tperiod

    Рисунок 9-52. Период и рабочий цикл низкого уровня активного состояния PWM2.


    9.9.3.6

    Импульсный режим и циклический режим

    Выход PWM поддерживает импульсный режим и режим цикла. ШИМ в импульсном режиме выводит один импульсный сигнал, а ШИМ в циклическом режиме выводит непрерывный сигнал. На рис. 9-53 показана форма выходного сигнала ШИМ (например, ШИМ2) в импульсном и циклическом режимах.

    Рисунок 9-53. Форма выходного сигнала ШИМ2 в импульсном и циклическом режимах.


  • Когда PCR2.PWM_MODE равно 0, PWM2 выводит тактовую форму волны.
  • Формула расчета Tperiod и Tactive-state выглядит следующим образом.

    Tperiod = (PWM23_CLK / PWM2_PRESCALE_K)-1 * PPR2. PWM_ENTIRE_CYCLE Tactive state = (PWM23_CLK / PWM2_PRESCALE_K)-1 * PPR2.PWM_ACT_CYCLE

  • Когда PCR2.PWM_MODE равно 1, PWM2 выводит форму импульса. Формула расчета длительности импульса следующая. Длина импульса = PWM23_CLK / PWM2_PRESCALE_K * PPR2. ШИМ _ACT_CYCLE
  • Когда PCR2.PWM_ACT_STA равно 0, уровень импульса низкий, канал PWM0 выдает низкий импульс.
  • Когда PCR2.PWM_ACT_STA равно 1, уровень импульса высокий, канал PWM0 выдает высокий импульс.
  • После включения канала PWM2 PCR2. PWM_PUL_START необходимо установить в 1, когда PWM2 требует формы выходного импульса, после завершения вывода PCR2. PWM_PUL_START может быть сброшен на 0 аппаратно.
  • Подсчетчик и компаратор для канала PWM2 поддерживают загрузку кеша, после того, как канал PWM2 включен, в циклическом или импульсном режиме, значение PPR2 изменяется и кэшируется в буферный регистр PPR2, когда значение счетчика вверх достигает PPR2. PWM_ENTIRE_CYCLE, значение в буферном регистре будет загружено в счетчик вверх и в компаратор, а именно значение счетчика вверх и в компаратор будет перегружено в следующем цикле.

    В качестве примера возьмем рис. 9-53 (активное состояние = низкий уровень).

  • В режиме цикла начальное значение PPR2.PWM_ENTIRE_CYCLE равно 10, начальное значение PPR2. PWM _ACT_CYCLE равен 3. В какой-то момент значение PPR2. PWM _ACT_CYCLE изменяется на 1, в течение текущего цикла измененные значения PPR2 кэшируются в буферный регистр PPR2, в начале следующего цикла значение буферного регистра PPR2 загружается в счетчик вверх и в компаратор, затем в счетчик вверх начинает работать.
  • В импульсном режиме начальное значение PPR2. PWM _ACT_CYCLE равно 3, в процессе генерации одиночного импульса значение PPR2. PWM _ACT_CYCLE изменяется на 1, в течение текущего цикла измененные значения PPR2 кэшируются в буферный регистр PPR2, когда значение счетчика вверх достигает PPR2. PWM_ENTIRE_CYCLE, затем выходной сигнал импульсной формы заканчивается, значение буферного регистра PPR2 загружается в счетчик повышения и компаратор в следующий раз, после PCR2. PWM_PUL_START установлен в 1, измененное значение PPR2 вступило в силу.

    Примечание

    Время загрузки значения буферного регистра PPR2 в счетчик вверх и в компаратор очень короткое, что можно игнорировать, и оно не влияет на вывод ШИМ.

    Рисунок 9-54. Выход дополнительной пары PWM23


    Выход дополнительной пары должен удовлетворять следующим трем условиям:
  • Та же частота, такой же рабочий цикл
  • Противоположное активное состояние
  • Включить два канала пары ШИМ одновременно


    9.9.3.8

    Генератор неактивного времени

    Каждая пара ШИМ имеет программируемый генератор мертвого времени. Когда функция мертвого времени пары ШИМ включена,

    Пара PWM23 выводит пару сигналов PWM, которые вставляют время нечувствительности, форма выходного сигнала пары PWM23 определяется логическим модулем таймера PWM2 и генератором мертвой зоны23. На рисунке 9-55 показана форма выходного сигнала.

    Рисунок 9-55. Сигнал пары PWM23 до / после задержки вставки


  • Форма сигнала ШИМ до вставки мертвого времени указывает на дополнительную пару сигналов невставленного мертвого времени в генераторе мертвой зоны 23.
  • Форма сигнала ШИМ после вставки времени нечувствительности указывает на некомплементарную пару форм сигнала ШИМ, вставленную в пару сигналов комплементарного сигнала генератора мертвой зоны 23. Пара сигналов ШИМ на последних выводах на вывод PWM2 и вывод PWM3.
  • Для дополнительной пары генератора мертвой зоны 23 принцип вставки мертвого времени состоит в том, чтобы вставить мертвое время, как только появится нарастающий фронт. Если время высокого уровня для mark? на приведенном выше рисунке меньше мертвого времени, мертвое время будет иметь приоритет над высоким уровнем. При установке мертвого времени необходимо учитывать период и рабочий цикл выходного сигнала. Формула мертвого времени определяется следующим образом:

    Мертвое время = (PWM23_CLK / PWM0_PRESCALE_K) -1 * PDZINTV23

    Рисунок 9-56. Схема модуля логики захвата PWM23

    Помимо того, что логический модуль таймера каждого канала ШИМ генерирует выходной сигнал ШИМ, его можно использовать для захвата нарастающего и спадающего фронтов внешних часов. Используя канал PWM2 в качестве примера, канал PWM2 имеет один CFLR2 и один CRLR2 для захвата значения счетчика вверх по заднему и переднему фронту, соответственно.

    Вы можете рассчитать период внешних часов по CFLR2 и CRLR2.

  • Thigh-level = (PWM23_CLK / PWM2_PRESCALE_K)-1 * CRLR2
  • Tlow-level = (PWM23_CLK / PWM2_PRESCALE_K)-1 * CFLR2
  • Tperiod = Thigh-level + Tlow-level

    Рисунок 9-57. Время захвата канала PWM2

  • Когда функция входа захвата канала PWM2 включена, PCNTR канала PWM2 начинает работать. Когда логический модуль таймера PWM2 фиксирует один нарастающий фронт, текущее значение счетчика вверх фиксируется на CRLR2, и устанавливается CCR2.CRLF на 1. Если CRIE2 равен 1, тогда CRIS2 установлен на 1, канал PWM2 отправляет запрос прерывания, а счетчик вверх загружается на 0 и продолжает считать. Если CRIE2 равен 0, модуль логики таймера PWM2 фиксирует нарастающий фронт, CRIS2 не может быть установлен в 1, счетчик вверх не загружается в 0.
  • Когда логический модуль таймера PWM2 фиксирует один задний фронт, текущее значение PCNTR фиксируется на CFLR2, а CCR2.CFLF устанавливается на 1. Если CFIE2 равен 1, тогда CFIS2 устанавливается в 1, канал PWM2 отправляет запрос прерывания, а счетчик вверх загружается в 0 и продолжает считать. Если CFIE2 равен 0, логический модуль таймера PWM2 фиксирует задний фронт, CFIS2 не может быть установлен в 1, счетчик вверх не загружается в 0.


    9.9.3.10

    Прерывание

  • ШИМ поддерживает генерацию прерывания, когда канал ШИМ настроен на выход ШИМ или вход захвата.
  • Для функции вывода ШИМ, когда один период формы сигнала ШИМ выводится в циклическом режиме, PIS соответствующего канала ШИМ устанавливается на 1; когда (PWM_PULNUM + 1) периодов сигнала ШИМ выводится в импульсном режиме, PIS соответствующего канала ШИМ устанавливается на 1.

    Примечание

  • Бит PIS устанавливается в 1 автоматически аппаратно и сбрасывается программно.
  • Для функции ввода захвата, когда логический модуль таймера канала захвата 2 фиксирует нарастающий фронт и CRIE2 равен 1, тогда CRIS2 устанавливается в 1; когда логический модуль таймера канала захвата 2 фиксирует задний фронт, а CFIE2 равен 1, тогда CFIS2 устанавливается в 1.


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

    В следующем рабочем режиме в качестве примера используется PWM23.


    9.9.4.1

    Конфигурация часов

    (1) Стробирование ШИМ: при использовании ШИМ запишите 1 в PCGR [PWMx_CLK_GATING].

    (2) Выбор источника тактовой частоты ШИМ: Установите PCCR23 [PWM23_CLK_SRC], чтобы выбрать тактовую частоту OSC24M или APB1.

    (3) Делитель тактовой частоты ШИМ: установите PCCR23 [PWM23_CLK_DIV_M], чтобы выбрать другой коэффициент деления частоты (1/2/4/8/16/32/64/128/256).

    (4) Обход тактовой частоты ШИМ: установите PCGR [PWM_CLK_SRC_BYPASS_TO_PWM] на 1, выведите тактовую частоту ШИМ после вторичного деления частоты на соответствующий выходной вывод ШИМ.

    (5) Конфигурация внутренних часов PWM: Установите PCR [PWM_PRESCAL_K], чтобы выбрать любой коэффициент частотного деления от 1 до 256.


    9.9.4.2

    Конфигурация ШИМ

    (1) Режим PWM: установите PCR [PWM_MODE], чтобы выбрать режим цикла или импульсный режим, если импульсный режим, необходимо настроить PWM_PUL_NUM.

    (2) Допустимый уровень PWM: Установите PCR [PWM_ACT_STA], чтобы выбрать низкий или высокий уровень.

    (3) Рабочий цикл PWM: настройте PPR [PWM_ENTIRE_CYCLE] и PPR [PWM _ACT_CYCLE] после открытия стробирования тактового сигнала.

    (4) Включить ШИМ: настройте PER, чтобы выбрать соответствующий бит включения ШИМ; при выборе импульсного режима необходимо включить PCR [PWM_PUL_START].


    9.9.4.3

    Контроль мертвой зоны

    (1) Начальное значение мертвой зоны: установите PDZCR23 [PDZINTV23].

    (2) Deaszone enable: Установите PDZCR23 [PWM23_DZ_CN].


    9.9.4.4

    Захват ввода

    (1) Включение захвата: настройте CER для включения соответствующего канала.

    (2) Режим захвата: настройте CCR [CRLF] и CCR [CFLF], чтобы выбрать захват по переднему или заднему фронту, настройте CCR [CAPINV], чтобы выбрать, выполняет ли входной сигнал обратную обработку.




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