Partilhar via


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.