Usar PWMs em aplicativos de alto nível
Importante
Esta é a documentação do Azure Sphere (herdado). O Azure Sphere (herdado) será desativado em 27 de setembro de 2027 e os usuários devem migrar para o Azure Sphere (integrado) até esse momento. Use o seletor de versão localizado acima do sumário para exibir a documentação do Azure Sphere (Integrado).
Este tópico descreve como acessar PWMs (moduladores de largura de pulso) do dispositivo para uso em aplicativos de alto nível do Azure Sphere.
A modulação de largura de pulso é obtida variando o ciclo de trabalho (razão entre o tempo de funcionamento e de pausa) de um sinal digital pulsado. Os moduladores de largura de pulso são usados em uma ampla variedade de aplicativos, como controle de motor digital, comunicação e conversão analógica para digital.
Para usar PWMs em seus aplicativos do Azure Sphere, você deve incluir os arquivos de cabeçalho e Pwm
a funcionalidade necessários e especificar o controlador para os canais PWM que seu aplicativo acessará.
O exemplo PWM_HighLevelApp demonstra como usar o PWM em um aplicativo simples de conversão analógica para digital em um dispositivo do MT3620.
Requisitos de PWM
Aplicativos que usam PWMs devem incluir o arquivo de cabeçalho apropriado e adicionar as configurações do PWM ao manifesto do aplicativo.
Todos os aplicativos devem definir hardware de destino deles e incluir o arquivo de cabeçalho da definição de hardware correspondente.
Arquivos de cabeçalho
#include <applibs/pwm.h>
#include "path-to-your-target-hardware.h"
Substitua "path-to-your-target-hardware.h" pelo caminho para o arquivo de cabeçalho do seu hardware.
Configurações do manifesto do aplicativo
A configuração do PWM no manifesto do aplicativo lista os controladores PWM acessados pelo aplicativo. Para definir essas configurações, adicione a funcionalidade Pwm
ao manifesto do aplicativo e, em seguida, adicione cada controlador PWM à funcionalidade. O manifesto do aplicativo do Azure Sphere tem mais detalhes.
Em seu código, use as constantes definidas para seu hardware para identificar os controladores PWM. O compilador converterá esses valores em valores brutos quando você criar o aplicativo.
Por exemplo, há um trecho de um manifesto para um aplicativo que direciona uma RDB (placa de desenvolvimento de referência) MT3620.
"Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]
O trecho a seguir mostra como especificar o mesmo controlador PWM em um aplicativo que direciona o Kit de Início do Avnet MT3620:
"Pwm": [ "$AVNET_MT3620_SK_PWM_CONTROLLER2" ]
Acesso do PWM
Os aplicativos de alto nível do Azure Sphere podem acessar um PWM chamando as APIs do PWM do Applibs.
Abrir um controlador PWM
Para abrir um controlador PWM para acesso, chame PWM_Open e passe a ID do controlador a ser aberta como um parâmetro. Um descritor do arquivo será retornado se a chamada for bem-sucedida. Caso contrário, -1 será retornado.
Definir o estado de um canal PWM
Para definir ou atualizar o estado de um canal PWM, chame PWM_Apply. Passe os seguintes parâmetros para PWM_Apply:
O descritor do arquivo retornado por PWM_Open
O canal PWM a ser atualizado; esse valor é dependente da plataforma
O período, o ciclo de trabalho e a polaridade a serem aplicados ao canal
Se o canal deve ser habilitado ou desabilitado
Observação
Os limites mínimo e máximo para o período e o ciclo de trabalho são dependentes do dispositivo. Por exemplo, no núcleo de alto nível MT3620, os PWMs são executados em uma frequência base fixa de 2 MHz com registros de comparação de ativação/desativação de 16 bits. Isso impõe uma resolução de ciclo de trabalho de 500 ns e um período máximo efetivo de aproximadamente 32,77 ms. Consulte a folha de dados do seu dispositivo específico para obter detalhes.
Suporte à placa de desenvolvimento MT3620
Os recursos do PWM compatíveis do MT3620 estão listados no Status de Suporte do MT3620. O Guia do usuário da placa de desenvolvimento MT3620 descreve o layout e as funções do pino.
O MT3620 tem 12 canais de PWM, PWM0 – PWM11. Eles são organizados em três grupos de quatro canais. Cada grupo é associado a um controlador PWM (PWM-CONTROLLER-0, PWM-CONTROLLER-1, PWM-CONTROLLER-2). Os canais de PWM e os pinos GPIO de GPIO0 até GPIO11 são mapeados para os mesmos pinos no MT3260. Se seu aplicativo usar um controlador PWM, todos os pinos associados a esse controlador serão alocados para uso como saídas de PWM. Eles não podem ser usados para nenhum outro tipo periférico.