Usar PMM en aplicaciones de alto nivel

En este tema se describe cómo acceder a los moduladores de ancho de pulso (PWMs) de dispositivo para su uso en aplicaciones de alto nivel de Azure Sphere.

La modulación de ancho de pulso se logra mediante la variación del ciclo de trabajo (relación entre tiempo de actividad y tiempo libre) de una señal digital pulsada. Los moduladores de ancho de pulso se utilizan en una amplia gama de aplicaciones, como el control del motor digital, la comunicación y la conversión digital a analógica.

Para usar pwms en sus aplicaciones Azure Sphere debe incluir los archivos de encabezado requeridos y Pwm capacidad, y especificar el controlador para los canales PWM a los que la aplicación tendrá acceso.

La PWM_HighLevelApp muestra cómo usar PWM en una sencilla aplicación de conversión digital a analógica en un dispositivo MT3620.

Requisitos de PWM

Las aplicaciones que usan PWM deben incluir el archivo de encabezado adecuado y agregar la configuración de PWM al manifiesto de la aplicación.

Todas las aplicaciones deben establecer su hardware de destino e incluir el archivo de encabezado de definición de hardware correspondiente.

Archivos de encabezado

 #include <applibs/pwm.h>
 #include "path-to-your-target-hardware.h"

Reemplace "path-to-your-target-hardware.h" por la ruta de acceso al archivo de encabezado del hardware.

Configuración de manifiesto de la aplicación

La configuración de PWM en el manifiesto de la aplicación enumera los controladores PWM a los que accede la aplicación. Para configurar estas opciones, agregue la Pwm funcionalidad al manifiesto de la aplicación y, a continuación, agregue cada controlador PWM a la funcionalidad. El manifiesto de la aplicación Azure Sphere tiene más detalles.

En el código, usa las constantes definidas para el hardware para identificar los controladores PWM. El compilador traducirá estos valores a valores RAW al crear la aplicación.

Por ejemplo, este es un extracto de un manifiesto de aplicación para una aplicación que se centra en un panel de desarrollo de referencia de MT3620 (RDB).

 "Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]

El siguiente extracto muestra cómo especificar el mismo controlador PWM en una aplicación que se centra en el kit de inicio Avnet MT3620:

  "Pwm": [ "$AVNET_MT3620_SK_PWM_CONTROLLER2" ]

Acceso pwm

Las aplicaciones de alto nivel de Azure Sphere pueden acceder a un PWM llamando a las API PWM de Applibs.

Abrir un controlador PWM

Para abrir un controlador PWM para el acceso, llame PWM_Open y pase como parámetro el id. del controlador para abrir. Si la llamada se realiza correctamente, se devolverá un descriptor de archivo. En caso contrario, se devolverá -1.

Establecer el estado de un canal PWM

Para establecer o actualizar el estado de un canal PWM, llame a PWM_Apply. Los parámetros siguientes se pasan a PWM_Apply:

  • Descriptor de archivo devuelto por PWM_Open

  • El canal PWM para actualizar; este valor depende de la plataforma

  • El período, el ciclo de servicio y la polaridad que se aplicarán al canal

  • Si desea habilitar o deshabilitar el canal

Nota

Los límites mínimo y máximo para el período y el ciclo de servicio dependen del dispositivo. Por ejemplo, en el núcleo de alto nivel MT3620, los PMM se ejecutan con una frecuencia de base fija de 2 MHz con registros de comparación de encendido/apagado de 16 bits. Esto impone una resolución del ciclo de derechos de 500 ns y un período máximo efectivo de aproximadamente 32,77 ms. Consulte la hoja de datos de su dispositivo específico para obtener más información.

Compatibilidad con MT3620

Las características pwm compatibles para mt3620 se enumeran en mt3620 estado de soporte. La guía de usuario de la placa de desarrollo MT3620 describe el diseño del pin y las funciones de anclar.

El MT3620 tiene 12 canales PWM, PWM0 - PWM11. Están organizados en 3 grupos de 4 canales. Cada grupo está asociado con un controlador PWM (PWM-CONTROLLER-0, PWM-CONTROLLER-1, PWM-CONTROLLER-2). Los canales PWM y GPIO anclan GPIO0 a GPIO11 y se asignan a las mismas clavijas en el MT3260. Si su aplicación utiliza un controlador PWM entonces todos los pines asociados con ese controlador se asignan para su uso como salidas PWM. No se pueden usar para ningún otro tipo de periférico.