Использование ШИМ в высокоуровневых приложениях
В этом разделе описывается, как получить доступ к модулям импульсной ширины устройства (ШИМ) для использования в высокоуровневых приложениях Azure Sphere.
Широтно-импульсная модуляция достигается путем изменения рабочих циклов (отношение времени от времени к отгулу) импульсного цифрового сигнала. Пульсово-широкие модуляторы используются в широком спектре приложений, таких как цифровое управление двигателем, связь и преобразование между цифровыми и аналоговыми.
Чтобы использовать ШИМ-машины в приложениях Azure Sphere, необходимо включить необходимые файлы заголовков и Pwm
возможности, а также указать контроллер для каналов ШИМ, к которым будет обращаться ваше приложение.
В примере PWM_HighLevelApp показано, как использовать ШИМ в простом приложении преобразования цифро-аналогового преобразования на устройстве MT3620.
Требования к PWM
Приложения, использующие ШИМ-машины, должны включать соответствующий файл заголовка и добавлять параметры ШИМ в манифест приложения.
Все приложения должны задать целевое оборудование и включить соответствующий файл заголовка определения оборудования.
Файлы заголовков
#include <applibs/pwm.h>
#include "path-to-your-target-hardware.h"
Замените path-to-your-target-hardware.h путем к файлу заголовка для оборудования.
Параметры манифеста приложения
Параметр PWM в манифесте приложения перечисляет контроллеры ШИМ, к которым обращается приложение. Чтобы настроить эти параметры, добавьте Pwm
возможность в манифест приложения, а затем добавьте в нее каждый контроллер ШИМ.
Манифест приложения Azure Sphere содержит дополнительные сведения.
В коде используйте константы, определенные для оборудования, для идентификации контроллеров ШИМ. Компилятор преобразует эти значения в необработанные значения при сборке приложения.
Например, ниже приведен фрагмент манифеста приложения для приложения, предназначенного для эталонной платформы разработки (RDB) MT3620.
"Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]
В следующем фрагменте показано, как указать тот же контроллер ШИМ в приложении, которое предназначено для начального комплекта Avnet MT3620:
"Pwm": [ "$AVNET_MT3620_SK_PWM_CONTROLLER2" ]
Доступ к PWM
Высокоуровневые приложения Azure Sphere могут получить доступ к ШИМ, вызывая API-интерфейсы ШИМ Applibs.
Открытие контроллера ШИМ
Чтобы открыть контроллер ШИМ для доступа, вызовите PWM_Open и передайте в качестве параметра идентификатор открываемого контроллера. В случае успешного вызова будет возвращен дескриптор файла. В противном случае будет возвращено значение -1.
Настройка состояния канала ШИМ
Чтобы задать или обновить состояние канала ШИМ, вызовите PWM_Apply. В PWM_Apply передаются следующие параметры:
Дескриптор файла, возвращенный PWM_Open
Канал PWM для обновления; это значение зависит от платформы
Период, жизненный цикл и полярность, применяемые к каналу
Включение или отключение канала
Примечание
Минимальные и максимальные ограничения для периода и жизненного цикла зависят от устройства. Например, на высокоуровневом ядре MT3620 ШИМ выполняются с фиксированной базовой частотой 2 МГц с 16-разрядными регистрами сравнения. При этом разрешение в течение длительного цикла составляет 500 нс, а действующий максимальный период составляет примерно 32,77 мс. Дополнительные сведения см. в таблице данных конкретного устройства.
Поддержка MT3620
Поддерживаемые функции PWM для MT3620 перечислены в разделе Состояние поддержки MT3620. Руководство пользователя на плате разработки MT3620 описывает макет и функции закрепления.
MT3620 имеет 12 ШИМ-каналов, PWM0 — PWM11. Они организованы в 3 группы по 4 каналам. Каждая группа связана с контроллером ШИМ (PWM-CONTROLLER-0, PWM-CONTROLLER-1, PWM-CONTROLLER-2). Каналы ШИМ и GPIO закрепляют от GPIO0 до GPIO11 с теми же контактами на MT3260. Если приложение использует контроллер ШИМ, все контакты, связанные с этим контроллером, выделяются для использования в качестве выходных данных ШИМ. Их нельзя использовать для любого другого периферийного типа.