Usar PWMs em aplicativos com capacidade em tempo real

O Azure Sphere dá suporte à Modulação de Largura de Pulso. A modulação de largura de pulso é obtida variando o ciclo de dever (razão de tempo de trabalho para tempo de folga) de um sinal digital pulsado. Os PWMs (moduladores de largura de pulso) são usados em uma ampla gama de aplicativos, como controle de motor digital, comunicação e conversão digital para analógica.

Este tópico descreve como usar PWMs em aplicativos com capacidade em tempo real (RTApp). Para obter informações sobre como usar PWMs em aplicativos de alto nível, consulte Usando PWM em aplicativos de alto nível.

Nota

O sistema operacional do Azure Sphere não redefine periféricos na inicialização. Seus aplicativos devem garantir que os periféricos estejam em um estado conhecido na inicialização ou após a reinicialização.

Suporte a MT3620 para PWM nos núcleos em tempo real

Esta seção descreve as opções PWM que só se aplicam ao executar o Azure Sphere no MT3620.

Os recursos PWM que o MT3620 dá suporte estão listados no Status de Suporte do MT3620. O guia de usuário do painel de desenvolvimento MT3620 descreve o layout do pino e as funções de fixação.

O MT3620 tem 12 canais PWM, identificados por PWM0-PWM11. Eles são organizados em três 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 o GPIO fixam GPIO0 por GPIO11 no mapa para os mesmos pinos no MT3620. Se o aplicativo usar um controlador PWM, todos os pinos associados a esse controlador serão alocados para uso como saídas PWM. Nenhum deles pode ser usado para GPIO.

Para registrar endereços base, interromper números, taxa de relógio, frequência de amostragem e outros detalhes sobre o MT3620, consulte o Mt3620 Datasheet e o Manual de Usuário MT3620 M4; se as perguntas permanecerem, você poderá solicitar detalhes da Avnet por email .Azure.Sphere@avnet.com

O hardware PWM pode ser configurado para usar uma das três frequências de relógio: 32 KHz, 2 MHz (XTAL/13) ou 26 MHz (XTAL). Nos núcleos RT (em tempo real), um aplicativo em tempo real (RTApp) pode selecionar qual relógio usar como base. Não há suporte para frequências base definidas pelo usuário. No entanto, seu aplicativo pode gerar frequências de sinal derivadas da frequência base selecionada. Para obter um exemplo, consulte a appication de exemplo PWMAudio na Galeria do Azure Sphere.

Configurações do manifesto do aplicativo

Para usar um PWM em um RTApp, adicione o Pwm recurso ao manifesto do aplicativo e especifique os controladores PWM que serão usados no aplicativo. Por exemplo, a linha a seguir especifica o controlador PWM 0 para uso em um RTApp que tem como destino o RDB (conselho de desenvolvimento de referência) MT3620:

"Capabilities": {
   "Pwm": [ "PWM-CONTROLLER-0" ] }

O manifesto do aplicativo Azure Sphere tem mais detalhes sobre o manifesto do aplicativo.

Os aplicativos de exemplo PWM

O repositório CodethinkLabs no GitHub contém vários aplicativos de exemplo que demonstram como usar periféricos compatíveis com MT3620 em aplicativos compatíveis com o Azure Sphere em tempo real. Especificamente, o exemplo PWM_RTApp_MT3620_BareMetal demonstra como incorporar um periférico PWM em um aplicativo com capacidade em tempo real.

O projeto PWMAudio demonstra como usar os núcleos em tempo real para gerar áudio PWM (Modulação de Largura de Pulso). Este projeto faz parte da Galeria do Azure Sphere, uma coleção de scripts, utilitários e funções não retidos.