Utilizar PWMs em aplicações de alto nível
Este tópico descreve como aceder a moduladores de largura de impulso do dispositivo (PWMs) para utilização em aplicações de alto nível do Azure Sphere.
A modulação de largura do impulso é obtida ao variar o ciclo de direitos (proporção entre horas e folgas) de um sinal digital pulsado. Os moduladores de largura do impulso são utilizados numa vasta gama de aplicações, como o controlo de motores digitais, a comunicação e a conversão digital para analógica.
Para utilizar PWMs nas suas aplicações do Azure Sphere, tem de incluir os ficheiros de cabeçalho e Pwm
a capacidade necessários e especificar o controlador para os canais PWM aos quais a sua aplicação irá aceder.
O exemplo de PWM_HighLevelApp demonstra como utilizar o PWM numa simples aplicação de conversão digital para analógica num dispositivo MT3620.
Requisitos de PWM
As aplicações que utilizam PWMs têm de incluir o ficheiro de cabeçalho adequado e adicionar definições PWM ao manifesto da aplicação.
Todas as aplicações têm de definir o hardware de destino e incluir o ficheiro de cabeçalho de definição de hardware correspondente.
Ficheiros 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 ficheiro de cabeçalho do hardware.
Definições do manifesto da aplicação
A definição PWM no manifesto da aplicação lista os controladores PWM que são acedidos pela aplicação. Para configurar estas definições, adicione a Pwm
capacidade ao manifesto da aplicação e, em seguida, adicione cada controlador PWM à capacidade. O manifesto da aplicação do Azure Sphere tem mais detalhes.
No código, utilize as constantes definidas para o seu hardware para identificar os controladores PWM. O compilador irá traduzir estes valores para valores não processados quando criar a aplicação.
Por exemplo, eis um excerto de um manifesto de aplicação para uma aplicação que visa um quadro de desenvolvimento de referência (RDB) MT3620.
"Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]
O seguinte excerto mostra como especificar o mesmo controlador PWM numa aplicação que visa o Avnet MT3620 Starter Kit:
"Pwm": [ "$AVNET_MT3620_SK_PWM_CONTROLLER2" ]
Acesso ao PWM
As aplicações de alto nível do Azure Sphere podem aceder a um PWM ao chamar APIs PWM applibs.
Abrir um controlador PWM
Para abrir um controlador PWM para acesso, chame PWM_Open e transmita como parâmetro o ID do controlador a abrir. Um descritor de ficheiros será devolvido se a chamada for efetuada com êxito. Caso contrário, será devolvido -1.
Definir o estado de um canal PWM
Para definir ou atualizar o estado de um canal PWM, chame PWM_Apply. Transmite os seguintes parâmetros para PWM_Apply:
O descritor de ficheiros devolvido por PWM_Open
O canal PWM a atualizar; este valor é dependente da plataforma
O período, o ciclo de deveres e a polaridade a aplicar ao canal
Ativar ou desativar o canal
Nota
Os limites mínimos e máximos para o período e o ciclo de direitos dependem do dispositivo. Por exemplo, no núcleo de alto nível MT3620, os PWMs são executados numa frequência base fixa de 2 MHz com registos de comparação de 16 bits ligados/desligados. Isto impõe uma resolução do ciclo de direitos 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 de MT3620
As funcionalidades de PWM suportadas para o MT3620 estão listadas no Estado de Suporte do MT3620. O guia do utilizador do quadro de desenvolvimento MT3620 descreve o esquema de pinos e as funções de afixar.
O MT3620 tem 12 canais PWM, PWM0 - PWM11. 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 afixam o mapa GPIO0 a GPIO11 aos mesmos pinos no MT3260. Se a aplicação utilizar um controlador PWM, todos os pinos associados a esse controlador são alocados para utilização como saídas PWM. Não podem ser utilizados para qualquer outro tipo de periférico.