Use PWMs em aplicativos de alto nível
Importante
Esta é a documentação do Azure Sphere (Legado). O Azure Sphere (Legado) 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 da largura de pulso é obtida variando o ciclo de trabalho (relação entre o tempo ligado e o tempo desligado) de um sinal digital pulsado. Moduladores de largura de pulso são usados em uma ampla gama de aplicações, como controle de motor digital, comunicação e conversão digital-para-analógico.
Para usar PWMs em seus aplicativos do Azure Sphere, você deve incluir os arquivos de cabeçalho e Pwm
a capacidade necessários e especificar o controlador para os canais PWM que seu aplicativo acessará.
O exemplo de PWM_HighLevelApp demonstra como usar o PWM em um aplicativo de conversão digital para analógico simples em um dispositivo MT3620.
Requisitos do PWM
Os aplicativos que usam PWMs devem incluir o arquivo de cabeçalho apropriado e adicionar configurações de PWM ao manifesto do aplicativo.
Todos os aplicativos devem definir seu hardware de destino e incluir o arquivo de cabeçalho de 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 de manifesto do aplicativo
A configuração PWM no manifesto do aplicativo lista os controladores PWM que são acessados pelo aplicativo. Para definir essas configurações, adicione a Pwm
capacidade ao manifesto do aplicativo e, em seguida, adicione cada controlador PWM à capacidade. O manifesto do aplicativo Azure Sphere tem mais detalhes.
No código, use as constantes definidas para o hardware para identificar os controladores PWM. O compilador traduzirá esses valores em valores brutos quando você criar o aplicativo.
Por exemplo, aqui está um trecho de um manifesto de aplicativo para um aplicativo que tem como alvo uma placa de desenvolvimento de referência (RDB) MT3620.
"Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]
O trecho a seguir mostra como especificar o mesmo controlador PWM em um aplicativo destinado ao Avnet MT3620 Starter Kit:
"Pwm": [ "$AVNET_MT3620_SK_PWM_CONTROLLER2" ]
Acesso PWM
Os aplicativos de alto nível do Azure Sphere podem acessar um PWM chamando APIs do Applibs PWM.
Abra um controlador PWM
Para abrir um controlador PWM para acesso, chame PWM_Open e passe como parâmetro o ID do controlador a ser aberto. Um descritor de arquivo será retornado se a chamada for bem-sucedida. Caso contrário, -1 será devolvido.
Definir o estado de um canal PWM
Para definir ou atualizar o estado de um canal PWM, ligue para PWM_Apply. Você passa os seguintes parâmetros para PWM_Apply:
O descritor de arquivo retornado por PWM_Open
O canal PWM para atualizar; Este valor depende da plataforma
O período, o ciclo de trabalho e a polaridade a serem aplicados ao canal
Se o canal deve ser ativado ou desativado
Nota
Os limites mínimo e máximo para o período e o ciclo de trabalho dependem do dispositivo. Por exemplo, no núcleo de alto nível MT3620, PWMs são executados em uma freqüência base fixa de 2 MHz com registradores de comparação de 16 bits ligados/desligados. 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 MT3620
Os recursos PWM suportados para o MT3620 estão listados em MT3620 Status de suporte. O guia do usuário da placa de desenvolvimento MT3620 descreve o layout do pino e as funções do pino.
O MT3620 tem 12 canais PWM, PWM0 - PWM11. Eles estão organizados em 3 grupos de 4 canais. Cada grupo está associado a um controlador PWM (PWM-CONTROLLER-0, PWM-CONTROLLER-1, PWM-CONTROLLER-2). Os canais PWM e GPIO pinos GPIO0 através GPIO11 mapa para os mesmos pinos no MT3260. Se seu aplicativo usa um controlador PWM, todos os pinos associados a esse controlador são alocados para uso como saídas PWM. Eles não podem ser usados para qualquer outro tipo periférico.