34.5 Функциональное описание
Модуль ШИМ состоит из тактового генератора и 4 каналов.
- Тактовый генератор синхронизируется системным сигналом MCK и формирует 13 сигналов синхронизации.
- Каждый канал может использовать один из выходов тактового генератора (выбирается пользователем).
- Каждый канал генерирует выходной сигнал, параметры которого задаются раздельно для каждого канала через регистры интерфейса пользователя.
34.5.1 Тактовый генератор модуля ШИМ
Рисунок 34.2. Структурная схема тактового генератора
Замечание: перед использованием модуля ШИМ программист должен вначале разрешить работу его синхронизации в контроллере управления потребляемой мощностью (PMC).
Внутренние сигналы синхронизации, используемые всеми каналами, формируются путем деления частоты сигнала главной синхронизации модуля ШИМ - MCK. Предусмотрена возможность раздельного выбора одного из выходов тактового генератора для каждого канала.
Тактовый генератор состоит из трех блоков:
- счетчик по модулю n, который формирует 11 сигналов синхронизации: FMCK, FMCK/2, FMCK/4, FMCK/8, FMCK/16, FMCK/32, FMCK/64, FMCK/128, FMCK/256, FMCK/512, FMCK/1024
- два линейных делителя (1, 1/2, 1/3, ... 1/255), которые формируют два отдельных сигнала синхронизации: clkA и clkB
Каждый линейный делитель может раздельно подключаться к одному из выходов счетчика по модулю n. Выбор сигнала, который будет подвергаться делению, осуществляется с помощью параметра PREA (PREB) в регистре режима ШИМ (PWM_MR). Коэффициент деления и результирующая частота сигналов синхронизации clkA (clkB) зависит от параметра DIVA (DIVB) в регистре режима ШИМ (PWM_MR).
После сброса контроллера ШИМ значения DIVA (DIVB) и PREA (PREB) в регистре режима ШИМ обнуляются. Это означает, что сразу после сброса синхронизация clkA (clkB) находится в отключенном состоянии.
Во время сброса все сигналы синхронизации, формируемые счетчиком по модулю n, отключаются, кроме "clk". Данная ситуация также повторяется при отключении главной синхронизации модуля ШИМ через контроллер управления потребляемой мощностью.
34.5.2 Канал ШИМ
34.5.2.1 Структурная схема
Рисунок 34.3. Структурная схема канала ШИМ
Каждый из четырех каналов состоит из трех блоков:
- Селектор синхронизации, который выбирает один из сигналов синхронизации, формируемых тактовым генератором (см. 34.5.1 "Тактовый генератор модуля ШИМ ").
- Внутренний счетчик, который тактируется с выхода селектора синхронизации. Данный внутренний счетчик инкрементируется или декрементируется в соответствии с конфигурацией канала и командами компараторов. Внутренний счетчик является 16-разрядным.
- Компаратор, используемый для генерации команд в зависимости от значения внутреннего счетчика. От настройки компаратора также зависит форма сигнала на выходе PWMx.
34.5.2.2 Настройка формы выходного сигнала
К свойствам выходного сигнала относятся:
- выбор внутренней синхронизации. Внутренний канал счетчика синхронизируется одним из сигналов тактового генератора, описанного в предыдущем разделе. Данный параметр канала задается в поле CPRE регистра PWM_CMRx. После сброса данное поле равно 0.
- период следования импульсов. Данный параметр канала задается в поле CPRD регистра PWM_CPRDx.
- - если выбрана генерация импульсов с левым выравниванием, то период следования импульсов зависит от источника синхронизации счетчика и вычисляется по формуле:
- (X * CPRD)/MCK, если используется сигнал главной синхронизации MCK, поделенный предделителем на величину X (1, 2, 4, 8, 16, 32, 64, 128, 256, 512 или 1024).
- (CPRD * DIVA)/MCK или (CPRD * DIVB)/MCK, если главная синхронизация поделена одним из делителей DIVA или DIVB.
- - если выбрана генерация импульсов с выравниванием по центру, то период следования импульсов зависит источника синхронизации счетчика и вычисляется следующим образом:
- (2* X * CPRD)/MCK, если используется сигнал главной синхронизации MCK, поделенный предделителем на величину X (1, 2, 4, 8, 16, 32, 64, 128, 256, 512 или 1024).
- (2 * CPRD * DIVA)/MCK или (2 * CPRD * DIVB)/MCK , если главная синхронизация поделена одним из делителей DIVA или DIVB.
- коэффициент заполнения импульсов. Данный параметр канала задается в поле CDTY регистра PWM_CDTYx.
Если выбрана генерация импульсов с левым выравниванием, то:
- Кзап.имп.=(ПЕРИОД-1/Fсинхр.канала_х * CDTY) / ПЕРИОД
- Кзап.имп.=( ½ ПЕРИОД-1/Fсинхр.канала_х * CDTY) / ½ПЕРИОД
- полярность импульсов. В начале периода генерируемый сигнал может иметь высокий или низкий уровень. Данное свойство задается в поле CPOL регистра PWM_CMRx. По умолчанию импульсы генерируются с низкого уровня.
- выравнивание импульсов. Прямоугольные импульсы могут генерироваться с левым выравниванием или выравниванием по центру. Выравнивание по центру позволяет генерировать неперекрывающиеся импульсы. Данное свойство задается в поле CALG регистра PWM_CMRx. По умолчанию принимается левое выравнивание.
Рисунок 34.4. Генерация неперекрывающихся импульсов с выравниванием по центру1
Прим.: см. рисунок 34.5, где представлено более детальное описание импульсов с выравниванием по центру.
При выборе выравнивания по центру внутренний канал счетчика инкрементируется до CPRD, а затем декрементируется до 0. На этом период заканчивается. При выборе левого выравнивания внутренний канал счетчика увеличивается до CPRD и сбрасывается. Этим заканчивается период. Таким образом, одно и тоже значение CPRD, которое задает период для канала с выравниванием по центру, будет соответствовать двум периодам в канале с левым выравниванием.
Выходной сигнал имеет непрерывный низкий уровень, если:
- CDTY = CPRD и CPOL = 0
- CDTY = 0 и CPOL = 1
Выходной сигнал имеет непрерывно высокий уровень (после разрешения работы канала), если:
- CDTY = 0 и CPOL = 0
- CDTY = CPRD и CPOL = 1
Полярность импульсов необходимо установить до разрешения работы канала. Это приводит к незамедлительному изменению выходного уровня канала. Изменения полярности канала игнорируется после разрешения его работы.
Рисунок 34.5. Свойства генерируемых импульсов
34.5.3 Работа ШИМ-контроллера
34.5.3.1 Инициализация
Перед разрешением работы выходного канала необходимо выполнить его программную настройку:
- конфигурация тактового генератора, если необходимо использование DIVA и DIVB
- выбор синхронизации для каждого канала (поле CPRE в регистре PWM_CMRx)
- конфигурация выравнивания импульсов в каждом канале (поле CALG в регистре PWM_CMRx)
- конфигурация периода для каждого канала (CPRD в регистре PWM_CPRDx). Запись в регистр PWM_CPRDx возможна, только если канал отключен. После настройки канала пользователь может использовать регистр PWM_CUPDx для обновления PWM_CPRDx в соответствии с описанием приведенным ниже.
- конфигурация заполнения импульсов для каждого канала (CDTY в регистре PWM_CDTYx). Запись в регистр PWM_CDTYx возможна только при отключенном канале. После настройки канала пользователь может использовать регистр PWM_CUPDx для обновления PWM_CDTYx в соответствии с описанием, приведенным ниже.
- конфигурация полярности импульсов для каждого канала (CPOL в регистре PWM_CMRx)
- разрешение прерываний (запись CHIDx в регистре PWM_IER)
- разрешение работы канала ШИМ (запись CHIDx в регистре PWM_ENA). Синхронизировать работу каналов можно путем одновременной записи нескольких бит CHIDx в регистре PWM_ENA.
- в такой ситуации все каналы могут иметь одинаковые настройки селектора синхронизации и период следования импульсов.
34.5.3.2 Критерий выбор источника синхронизации
Широкий выбор источников синхронизации может усложнить их выбор. Соотношение между значением в регистре периода (PWM_CPRDx) и регистром заполнения импульсов (PWM_CDTYx) может облегчить выбор. Число, записанное в регистр периода, определяет точность ШИМ. Разрешающая способность заполнения импульсов не может быть меньше 1/PWM_CPRDx. Более высокие значения PWM_CPRDx увеличивают точность ШИМ. Например, если пользователь запишет число 15 (десятичное) в PWM_CPRDx, то в дальнейшем в регистр PWM_CDTYx возможна только запись значений между 1 и 14. В результате, разрешающая способность заполнения импульсов не может быть меньше 1/15 от периода ШИМ.
34.5.3.3 Изменение заполнения импульсов или периода
Регулировать форму выходного сигнала можно путем изменения заполнения импульсов или периода. У регистров PWM_CPRDx и PWM_CDTYx предусмотрен механизм двойной буферизации, который позволяет избежать сбоев в генерации импульсов, когда разрешена работа каналов и выполнено изменение параметров генерируемых импульсов. Пользователь может записать новое значение периода или заполнения импульсов в регистр обновления (PWM_CUPDx). Данный регистр запоминает новое значение до завершения текущего цикла и обновляет значение для следующего цикла. В зависимости от значения в поле CPD регистра PWM_CMRx значение, хранящееся в PWM_CUPDx, обновляет PWM_CPRDx или PWM_CDTYx.
Рисунок 34.6. Синхронизированное обновление периода/заполнения импульсов
В целях предотвращения перезаписи PWM_CUPDx программой пользователь может использовать флаги статуса. Возможно два метода. При использовании каждого из них необходимо разрешить соответствующее прерывание в PWM_IER на уровне ШИМ-контроллера.
Первый метод (метод опроса) заключается в считывании бит статуса в регистре PWM_ISR, соответствующих активным каналам (см. рисунок 34.7).
Второй метод основан на использовании процедуры обработки прерывания, связанного с ШИМ-каналом.
Прим.: при считывании регистра PWM_ISR флаги CHIDx автоматически сбрасываются.
Рисунок 34.7. Метод опроса
Прим.: полярность и выравнивание может изменяться только при отключенном канале.
34.5.3.4 Прерывания
В зависимости от маски прерывания в регистре PWM_IMR прерывание генерируется в конце периода соответствующего канала. Прерывание остается активным до считывания регистра PWM_ISR.
Прерывание канала активизируется путем установки соответствующего бита в регистре PWM_IER. Для отключения прерывания канала необходимо установить соответствующий бит в регистре PWM_IDR.
|