Драйвер широтно-импульсного модулятора
Подробнее...
|
| файл | hal_pwm.h |
| | Интерфейс драйвера модуля широтно-импульсного модулятора
|
| |
|
| #define | PWM_COUNT (3) |
| |
|
#define | PWM_CHANNEL_COUNT 4 |
| |
|
#define | PWM_UNITS { (PWM_Type *)0x40111000, (PWM_Type *)0x40111100, (PWM_Type *)0x40111200, (PWM_Type *)0x40111300 } |
| |
|
#define | PWM_FREQ_HZ_TO_PERIOD_US(x) (1000000 / (x)) |
| | Макрос для преобразования частоты в период
|
| |
|
#define | PWM_PERIOD_MS(x) ((x) * 1000UL) |
| | Макрос для преобразования времени из милисекунд в микросекунды
|
| |
|
#define | PWM_PERIOD_S(x) ((x) * 1000000UL) |
| | Макрос для преобразования времени из секунд в микросекунды
|
| |
|
|
typedef struct _pwm_chopper | pwm_chopper_cfg_t |
| | Конфигурация дробления сигнала ШИМ
|
| |
|
typedef struct _pwm_dz_cfg | pwm_dz_cfg_t |
| | Конфигурация мертвой зоны ШИМ
|
| |
|
typedef struct _pwm_trip_unit_cfg | pwm_trip_unit_cfg_t |
| |
|
typedef struct _pwm_handle | pwm_handle_t |
| | Контекст драйвера ШИМ
|
| |
|
| enum pwm_status | PWM_GetChannelDefaultConfig (struct pwm_channel_config *cfg) |
| | Инициализация структуры "по умолчанию" для канала блока ШИМ
|
| |
| enum pwm_status | PWM_InitChannel (PWM_Type *base, struct pwm_channel_config cfg) |
| | Инициализация канала блока широтно-импульсного модулятора
|
| |
| enum pwm_status | PWM_Deinit (PWM_Type *base) |
| | Деинициализация блока широтно-импульсного модулятора
|
| |
| enum pwm_status | PWM_Enable (PWM_Type *base, uint32_t channel, enum pwm_run_command cmd) |
| | Запуск/останов канала блока широтно-импульсного модулятора
|
| |
| enum pwm_status | PWM_CmdForAllChannels (PWM_Type *base, uint32_t channel_mask, enum pwm_run_command cmd0, enum pwm_run_command cmd1, enum pwm_run_command cmd2, enum pwm_run_command cmd3) |
| | Запуск/останов всех каналов блока широтно-импульсного модулятора
|
| |
| enum pwm_status | PWM_ApplySoftOuts (PWM_Type *base, uint32_t channel, int8_t mask_outs) |
| | Программная не длительная установка значения выходов канала
|
| |
| enum pwm_status | PWM_ApplyLongSoftOuts (PWM_Type *base, uint32_t channel, int8_t mask_outs, enum pwm_outx_cmd outa, enum pwm_outx_cmd outb) |
| | Программная длительная установка значения выходов канала
|
| |
| uint32_t | PWM_GetCntStat (PWM_Type *base, uint32_t channel) |
| | Определяет работает ли счетчик в канале
|
| |
| enum pwm_status | PWM_SetPeriod (PWM_Type *base, uint32_t channel, uint32_t period) |
| | Устанавливает значение периода
|
| |
Драйвер широтно-импульсного модулятора
Драйвер модуля широтно-импульсного модулятора управляет блоком генерации широтно-импульсного модулированного сигнала
Драйвер модуля широтно-импульсного модулятора управляет блоком генерации широтно-импульсного модулированного сигнала
◆ PWM_COUNT
Количество блоков широтно-импульсного модулятора
◆ anonymous enum
Выходы каналов ШИМ
| Элементы перечислений |
|---|
| PWM_OutA | Канал А
|
| PWM_OutB | Канал B
|
◆ pwm_chopper_duty [1/2]
Скважность дробящего сигнала
| Элементы перечислений |
|---|
| pwm_ChopperDuty_1_8 | 1/8
|
| pwm_ChopperDuty_2_8 | 2/8
|
| pwm_ChopperDuty_3_8 | 3/8
|
| pwm_ChopperDuty_4_8 | 4/8
|
| pwm_ChopperDuty_5_8 | 5/8
|
| pwm_ChopperDuty_6_8 | 6/8
|
| pwm_ChopperDuty_7_8 | 7/8
|
◆ pwm_chopper_duty [2/2]
Скважность дробящего сигнала
| Элементы перечислений |
|---|
| PWM_ChopperDuty_1_8 | 1/8
|
| PWM_ChopperDuty_2_8 | 2/8
|
| PWM_ChopperDuty_3_8 | 3/8
|
| PWM_ChopperDuty_4_8 | 4/8
|
| PWM_ChopperDuty_5_8 | 5/8
|
| PWM_ChopperDuty_6_8 | 6/8
|
| PWM_ChopperDuty_7_8 | 7/8
|
◆ pwm_chopper_first_width [1/2]
Ширина первого импульса
| Элементы перечислений |
|---|
| pwm_ChopperFirstWidth_0_8 | 0xCLK/8
|
| pwm_ChopperFirstWidth_1_8 | 1xCLK/8
|
| pwm_ChopperFirstWidth_2_8 | 2xCLK/8
|
| pwm_ChopperFirstWidth_3_8 | 3xCLK/8
|
| pwm_ChopperFirstWidth_4_8 | 4xCLK/8
|
| pwm_ChopperFirstWidth_5_8 | 5xCLK/8
|
| pwm_ChopperFirstWidth_6_8 | 6xCLK/8
|
| pwm_ChopperFirstWidth_7_8 | 7xCLK/8
|
| pwm_ChopperFirstWidth_8_8 | 8xCLK/8
|
| pwm_ChopperFirstWidth_9_8 | 9xCLK/8
|
| pwm_ChopperFirstWidth_10_8 | 10xCLK/8
|
| pwm_ChopperFirstWidth_11_8 | 11xCLK/8
|
| pwm_ChopperFirstWidth_12_8 | 12xCLK/8
|
| pwm_ChopperFirstWidth_13_8 | 13xCLK/8
|
| pwm_ChopperFirstWidth_14_8 | 14xCLK/8
|
| pwm_ChopperFirstWidth_15_8 | 15xCLK/8
|
◆ pwm_chopper_first_width [2/2]
Ширина первого импульса
| Элементы перечислений |
|---|
| PWM_ChopperFirstWidth_0_8 | 0xCLK/8
|
| PWM_ChopperFirstWidth_1_8 | 1xCLK/8
|
| PWM_ChopperFirstWidth_2_8 | 2xCLK/8
|
| PWM_ChopperFirstWidth_3_8 | 3xCLK/8
|
| PWM_ChopperFirstWidth_4_8 | 4xCLK/8
|
| PWM_ChopperFirstWidth_5_8 | 5xCLK/8
|
| PWM_ChopperFirstWidth_6_8 | 6xCLK/8
|
| PWM_ChopperFirstWidth_7_8 | 7xCLK/8
|
| PWM_ChopperFirstWidth_8_8 | 8xCLK/8
|
| PWM_ChopperFirstWidth_9_8 | 9xCLK/8
|
| PWM_ChopperFirstWidth_10_8 | 10xCLK/8
|
| PWM_ChopperFirstWidth_11_8 | 11xCLK/8
|
| PWM_ChopperFirstWidth_12_8 | 12xCLK/8
|
| PWM_ChopperFirstWidth_13_8 | 13xCLK/8
|
| PWM_ChopperFirstWidth_14_8 | 14xCLK/8
|
| PWM_ChopperFirstWidth_15_8 | 15xCLK/8
|
◆ pwm_chopper_freq [1/2]
Частота дробящего сигнала
| Элементы перечислений |
|---|
| pwm_ChopperFreqClk_8 | CLK/8
|
| pwm_ChopperFreqClk_16 | CLK/16
|
| pwm_ChopperFreqClk_24 | CLK/24
|
| pwm_ChopperFreqClk_32 | CLK/32
|
| pwm_ChopperFreqClk_40 | CLK/40
|
| pwm_ChopperFreqClk_48 | CLK/48
|
| pwm_ChopperFreqClk_56 | CLK/56
|
| pwm_ChopperFreqClk_64 | CLK/64
|
◆ pwm_chopper_freq [2/2]
Частота дробящего сигнала
| Элементы перечислений |
|---|
| PWM_ChopperFreqClk_8 | CLK/8
|
| PWM_ChopperFreqClk_16 | CLK/16
|
| PWM_ChopperFreqClk_24 | CLK/24
|
| PWM_ChopperFreqClk_32 | CLK/32
|
| PWM_ChopperFreqClk_40 | CLK/40
|
| PWM_ChopperFreqClk_48 | CLK/48
|
| PWM_ChopperFreqClk_56 | CLK/56
|
| PWM_ChopperFreqClk_64 | CLK/64
|
◆ pwm_chopper_work
Работа блока Chopper.
| Элементы перечислений |
|---|
| pwm_ChopperWorkOff | Выключена функция дробления
|
| pwm_ChopperWorkOn | Включена функция дробления
|
◆ pwm_cntmode
Режим работы счетчика CRTCNT.
| Элементы перечислений |
|---|
| pwm_CntModeUp | Up-count режим
|
| pwm_CntModeDown | Down-count режим
|
| pwm_CntModeUpDown | Up-down-count режим
|
| pwm_CntModeOff | Счет не осуществляется
|
◆ pwm_dirsync
Направление счета после синхронизации
- Заметки
- Этот бит используется, только когда счетчик работает в up-down режиме.
| Элементы перечислений |
|---|
| pwm_DirSyncDown | После синхронизации счетчик декрементируется
|
| pwm_DirSyncUp | После синхронизации счетчик инкрементируется
|
◆ pwm_dz_mode [1/2]
Выбор режима работы блока запрещенной зоны при формирования OUTx.
| Элементы перечислений |
|---|
| pwm_DzModeOff | Генератор выключен
|
| pwm_DzModeOn | Генератор включен
|
◆ pwm_dz_mode [2/2]
Выбор режима работы блока запрещенной зоны при формирования OUTx.
| Элементы перечислений |
|---|
| PWM_DzModeOff | Генератор выключен
|
| PWM_DzModeOn | Генератор включен
|
◆ pwm_dz_outx_inv [1/2]
Полярность OUTx после генерации запрещенной зоны
| Элементы перечислений |
|---|
| pwm_DzSignalOutxInvOff | Нет инверсии
|
| pwm_DzSignalOutxInvOn | Есть инверсия
|
◆ pwm_dz_outx_inv [2/2]
Полярность OUTx после генерации запрещенной зоны
| Элементы перечислений |
|---|
| PWM_DzSignalOutxInvOff | Нет инверсии
|
| PWM_DzSignalOutxInvOn | Есть инверсия
|
◆ pwm_dz_signal
Источник сигнала для генерации запрещенной зоны
| Элементы перечислений |
|---|
| pwm_DzSignalOutA | Сигнал OUTA in
|
| pwm_DzSignalOutB | Сигнал OUTB in
|
◆ pwm_eventprd [1/2]
Выбор периода прерываний PWM_INT.
| Элементы перечислений |
|---|
| pwm_EventPrdNo | Нет генерации прерывания
|
| pwm_EventPrdOne | Генерация прерывания каждый раз при возникновении события
|
| pwm_EventPrdTwo | Генерация прерывания каждый второй раз при возникновении события
|
| pwm_EventPrdThree | Генерация прерывания каждый третий раз при возникновении события
|
◆ pwm_eventprd [2/2]
Частота возникновения прерываний ШИМ
| Элементы перечислений |
|---|
| PWM_EventPrdNo | Нет генерации прерывания
|
| PWM_EventPrdOne | Генерация прерывания каждый раз при возникновении события
|
| PWM_EventPrdTwo | Генерация прерывания каждый второй раз при возникновении события
|
| PWM_EventPrdThree | Генерация прерывания каждый третий раз при возникновении события
|
◆ pwm_int_en
Разрешение прерывания блока
| Элементы перечислений |
|---|
| pwm_IntEnNo | Прерывание запрещено
|
| pwm_IntEnYes | Прерывание разрешено
|
◆ pwm_int_source [1/2]
Источник прерывания
| Элементы перечислений |
|---|
| pwm_IntSourceNo | Резерв
|
| pwm_IntSourceCtrcntEquZero | Признак равенства счетчика нулю CTRCNT=0
|
| pwm_IntSourceCtrcntEquCtrprd | Признак равенства счетчика периоду счета CTRCNT=CTRPRD
|
| pwm_IntSourceCtrcntEquCmpAInc | Признак равенства счетчика регистру сравнения CMPA во время инкремента
|
| pwm_IntSourceCtrcntEquCmpADec | Признак равенства счетчика регистру сравнения CMPA во время декремента
|
| pwm_IntSourceCtrcntEquCmpBInc | Признак равенства счетчика регистру сравнения CMPB во время инкремента
|
| pwm_IntSourceCtrcntEquCmpBDec | Признак равенства счетчика регистру сравнения CMPB во время декремента
|
◆ pwm_int_source [2/2]
Источники прерывания ШИМ
| Элементы перечислений |
|---|
| PWM_IntSourceCtrcntEquZero | Признак равенства счетчика ШИМ нулю
|
| PWM_IntSourceCtrcntEquCtrprd | Признак равенства счетчика ШИМ периоду счета
|
| PWM_IntSourceCtrcntEquCmpAInc | Признак равенства счетчика ШИМ регистру сравнения выхода A во время инкремента
|
| PWM_IntSourceCtrcntEquCmpADec | Признак равенства счетчика ШИМ регистру сравнения выхода A во время декремента
|
| PWM_IntSourceCtrcntEquCmpBInc | Признак равенства счетчика ШИМ регистру сравнения выхода B во время инкремента
|
| PWM_IntSourceCtrcntEquCmpBDec | Признак равенства счетчика ШИМ регистру сравнения выхода B во время декремента
|
◆ pwm_ldcswrf
Механизм загрузки активного регистра из теневого регистра для регистра программного управления выходами
| Элементы перечислений |
|---|
| pwm_LdcswrfCtrcntZero | Загрузка при CTRCNT=0
|
| pwm_LdcswrfCtrcntEquCtrprd | Загрузка при CTRCNT=CTRPRD
|
| pwm_LdcswrfCtrcntZeroEquCtrprd | Загрузка при CTRCNT=0 или CTRCNT=CTRPRD
|
| pwm_LdcswrfDirect | Загружать напрямую при обращении CPU без использования теневого регистра
|
◆ pwm_ldxmode
Выбор режима загрузки данных из теневого регистра в активный CMPx.
| Элементы перечислений |
|---|
| pwm_LdxModeCtrcntZero | Загрузка при CTRCNT=0
|
| pwm_LdxModeCtrcntEquCtrprd | Загрузка при CTRCNT=CTRPRD
|
| pwm_LdxModeCtrcntZeroOrEquCtrprd | Загрузка при CTRCNT=0 или CTRCNT=CTRPRD
|
| pwm_LdxModeNoLoad | Загрузка не осуществляется
|
◆ pwm_loadprd
Управление моментом переписи данных из теневого регистра периода в активный
| Элементы перечислений |
|---|
| pwm_LoadPrdRegister | Регистр периода (CTRPRD) загружается из теневого регистра, когда счетчик (CTRCNT) равен нулю (запись или чтение CTRPRD осуществляется через теневой регистр)
|
| pwm_LoadPrdDirect | CTRPRD загружается напрямую без использования теневого регистра (запись или чтение CTRPRD осуществляется напрямую)
|
◆ pwm_outx_cmd
Управление выходом OUTx.
| Элементы перечислений |
|---|
| pwm_OutxCmdNo | Не выполнять действий
|
| pwm_OutxCmdClear | Сбросить OUTx в 0
|
| pwm_OutxCmdSet | Установить OUTx в 1
|
| pwm_OutxCmdToggle | Инвертировать OUTx
|
◆ pwm_prescaler_cmd
Управление состоянием предделителя канала
| Элементы перечислений |
|---|
| pwm_PrescCmdReset | Счетчик предделителя сбрасывается в «0»
|
| pwm_PrescCmdSave | Счетчик предделителя сохраняет состояние на момент останова
|
◆ pwm_prescaler_divmux
Управление мультиплексором делителя частоты (деление частоты после делителя)
| Элементы перечислений |
|---|
| pwm_PrescalerDivMux1 | Частота от предделителя делится на 1
|
| pwm_PrescalerDivMux2 | Частота от предделителя делится на 2
|
| pwm_PrescalerDivMux4 | Частота от предделителя делится на 4
|
| pwm_PrescalerDivMux8 | Частота от предделителя делится на 8
|
| pwm_PrescalerDivMux16 | Частота от предделителя делится на 16
|
| pwm_PrescalerDivMuxPWMClk | Используется внешняя частота PWM_CLK
|
◆ pwm_prescaler_mode
Управление режимом работы предделителя канала
| Элементы перечислений |
|---|
| pwm_PrescModeTimerIsRun | Предделитель формирует частоту только при включенном таймере
|
| pwm_PrescModeAlways | Предделитель формирует частоту не зависимо от включенности таймера
|
◆ pwm_prescaler_syncrst
Разрешения сброса предделителя при возникновения событий SYNCI или SWFSYNC.
| Элементы перечислений |
|---|
| pwm_PrescalerSyncRstDis | Сброс запрещен
|
| pwm_PrescalerSyncRstEn | Сброс разрешен
|
◆ pwm_run_command
Управление пуском/остановкой канала
| Элементы перечислений |
|---|
| pwm_RunCmdStop | Остановка после следующего переключения счетчика CTRCNT
|
| pwm_RunCmdStopEvent | Остановка при совершении следующих событий: up-count режим: остановка при CTRCNT==CTRPRD down-count режим: остановка при CTRCNT==0 up-down-count режим: остановка при CTRCNT==0
|
| pwm_RunCmdRun | Запуск
|
◆ pwm_scmpxmode
Режим работы регистра CMPx.
| Элементы перечислений |
|---|
| pwm_SCmpxModeReg | Работа с теневым регистром, все запросы CPU проходят через теневой регистр
|
| pwm_SCmpxModeDirect | Прямой режим, используется только активный регистр CMPx
|
◆ pwm_status
Статусы драйвера широтно-импульсного модулятора
| Элементы перечислений |
|---|
| PWM_Status_Ok | Нет ошибок
|
| PWM_Status_InvalidArgument | Недопустимый аргумент
|
| PWM_Status_BadConfigure | Недопустимая конфигурация
|
◆ pwm_syncosel
Выбор источника выходного сигнала SYNCO.
| Элементы перечислений |
|---|
| pwm_SyncoSelSynci | SYNCI
|
| pwm_SyncoSelCtrcntZero | Счетчик равен нулю (CTRCNT==0)
|
| pwm_SyncoSelCtrcntEquCmpb | Счетчик равен значению регистра сравнения B (CTRCNT==CMPB)
|
| pwm_SyncoSelOff | SYNCO отключен
|
◆ pwm_syncphsen
Сигнал разрешения загрузки счетчика из регистра фазы
| Элементы перечислений |
|---|
| pwm_SyncPhsEnDis | Загрузка CTRCNT из регистра фазы CTRPHS запрещена
|
| pwm_SyncPhsEnEn | Загрузка CTRCNT из регистра фазы CTRPHS во время синхронизации разрешена
|
◆ pwm_trip_unit_action [1/2]
Реакции на событие блока trip unit.
| Элементы перечислений |
|---|
| pwm_TripUnitActionHigh | OUTx переводится в высокоомное состояние
|
| pwm_TripUnitActionOne | OUTx подтягивается к 1
|
| pwm_TripUnitActionZero | OUTx подтягивается к 0
|
| pwm_TripUnitActionNo | Действий не производится
|
◆ pwm_trip_unit_action [2/2]
Реакции на событие блока trip unit.
| Элементы перечислений |
|---|
| PWM_TripUnitActionHigh | OUTx переводится в высокоомное состояние
|
| PWM_TripUnitActionOne | OUTx подтягивается к 1
|
| PWM_TripUnitActionZero | OUTx подтягивается к 0
|
| PWM_TripUnitActionNo | Действий не производится
|
◆ pwm_trip_unit_signal
Работа блока trip unit.
| Элементы перечислений |
|---|
| pwm_TripUnitSignalNotUsed | Вход не используется
|
| pwm_TripUnitSignalUsed | Вход используется
|
◆ PWM_ApplyLongSoftOuts()
Программная длительная установка значения выходов канала
- Аргументы
-
| base | Блок широтно-импульсного модулятора |
| channel | Канал |
| mask_outs | Маски выводов: бит 0 - OutA; 1 - OutB |
| outa | Значение вывода OutA |
| outb | Значение вывода OutB |
- Заметки
- Значения pwm_OutxCmdToggle для outa и outb имеют эффект как pwm_OutxCmdNo.
- Возвращаемые значения
-
◆ PWM_ApplySoftOuts()
| enum pwm_status PWM_ApplySoftOuts |
( |
PWM_Type * | base, |
|
|
uint32_t | channel, |
|
|
int8_t | mask_outs ) |
Программная не длительная установка значения выходов канала
- Заметки
- В отличие от длительной приводит к переключению значения выходов которое будет изменено аппаратным событием. Значения устанавливаются ранее предопределённые в конфигурации.
- Аргументы
-
| base | Блок широтно-импульсного модулятора |
| channel | Канал |
| mask_outs | Маски выводов: бит 0 - OutA; 1 - OutB |
- Возвращаемые значения
-
◆ PWM_CmdForAllChannels()
Запуск/останов всех каналов блока широтно-импульсного модулятора
- Аргументы
-
| base | Блок широтно-импульсного модулятора |
| channel_mask | Каналы - 1 бит означает управление каналом |
| cmd0 | Команда запуска 0 канала широтно-импульсного модулятора |
| cmd1 | Команда запуска 1 канала широтно-импульсного модулятора |
| cmd2 | Команда запуска 2 канала широтно-импульсного модулятора |
| cmd3 | Команда запуска 3 канала широтно-импульсного модулятора |
- Возвращаемые значения
-
◆ PWM_Deinit()
Деинициализация блока широтно-импульсного модулятора
- Аргументы
-
| base | Блок широтно-импульсного модулятора |
- Возвращаемые значения
-
◆ PWM_Enable() [1/2]
Включение вывода канала ШИМ
- Аргументы
-
| hpwm | Контекст драйвера ШИМ |
| bool | 1 - включение, 0 - выключение |
◆ PWM_Enable() [2/2]
Запуск/останов канала блока широтно-импульсного модулятора
- Аргументы
-
| base | Блок широтно-импульсного модулятора |
| channel | Канал |
| cmd | Команда запуска для канала широтно-импульсного модулятора |
- Возвращаемые значения
-
◆ PWM_GetChannelDefaultConfig()
Инициализация структуры "по умолчанию" для канала блока ШИМ
- Аргументы
-
- Возвращаемые значения
-
◆ PWM_GetCntStat()
| uint32_t PWM_GetCntStat |
( |
PWM_Type * | base, |
|
|
uint32_t | channel ) |
Определяет работает ли счетчик в канале
- Аргументы
-
| base | Блок широтно-импульсного модулятора |
| channel | Канал |
- Возвращаемые значения
-
| 1 | - Счетчик работает |
| 0 | - Счетчик не работает |
◆ PWM_Init()
Инициализация канала ШИМ и выводов
- Аргументы
-
| hpwm | Контекст драйвера ШИМ |
◆ PWM_InitChannel()
Инициализация канала блока широтно-импульсного модулятора
- Аргументы
-
| base | Блок широтно-импульсного модулятора |
| cfg | Конфигурация |
- Возвращаемые значения
-
◆ PWM_IntCallback()
Общая функция обратного вызова при возникновении прерываний
- Аргументы
-
| hpwm | Контекст драйвера ШИМ |
◆ PWM_SetPeriod()
| enum pwm_status PWM_SetPeriod |
( |
PWM_Type * | base, |
|
|
uint32_t | channel, |
|
|
uint32_t | period ) |
Устанавливает значение периода
- Аргументы
-
| base | Блок широтно-импульсного модулятора |
| channel | Канал |
| period | Период в клоках частоты тактирования |
- Возвращаемые значения
-