상위 수준 애플리케이션에서 PWM 사용

이 항목에서는 Azure Sphere 상위 수준 애플리케이션에서 사용하기 위해 PWM(디바이스 펄스 너비 변조기)에 액세스하는 방법을 설명합니다.

펄스 너비 변조는 펄스 디지털 신호의 의무 주기(시간에서 오프 타임의 비율)를 변경하여 달성됩니다. 펄스 너비 변조기는 디지털 모터 제어, 통신 및 디지털-아날로그 변환과 같은 광범위한 애플리케이션에서 사용됩니다.

Azure Sphere 애플리케이션에서 PWM을 사용하려면 필요한 헤더 파일 및 Pwm 기능을 포함하고 애플리케이션이 액세스할 PWM 채널에 대한 컨트롤러를 지정해야 합니다.

PWM_HighLevelApp 샘플에서는 MT3620 디바이스의 간단한 디지털-아날로그 변환 애플리케이션에서 PWM을 사용하는 방법을 보여 줍니다.

PWM 요구 사항

PWM을 사용하는 애플리케이션은 적절한 헤더 파일을 포함하고 PWM 설정을 애플리케이션 매니페스트에 추가해야 합니다.

모든 애플리케이션은 대상 하드웨어를 설정하고 해당 하드웨어 정의 헤더 파일을 포함해야 합니다.

헤더 파일

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

"path-to-your-target-hardware.h"를 하드웨어의 헤더 파일 경로로 바꿉니다.

애플리케이션 매니페스트 설정

애플리케이션 매니페스트의 PWM 설정에는 애플리케이션에서 액세스하는 PWM 컨트롤러가 나열됩니다. 이러한 설정을 구성하려면 애플리케이션 매니페스트에 기능을 추가 Pwm 한 다음 각 PWM 컨트롤러를 기능에 추가합니다. Azure Sphere 애플리케이션 매니페스트 에는 자세한 내용이 있습니다.

코드에서 하드웨어에 대해 정의된 상수를 사용하여 PWM 컨트롤러를 식별합니다. 컴파일러는 앱을 빌드할 때 이러한 값을 원시 값으로 변환합니다.

예를 들어 MT3620 RDB(참조 개발 보드)를 대상으로 하는 애플리케이션에 대한 애플리케이션 매니페스트에서 발췌한 내용이 여기에 있습니다.

 "Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]

다음 발췌문에서는 Avnet MT3620 시작 키트를 대상으로 하는 애플리케이션에서 동일한 PWM 컨트롤러를 지정하는 방법을 보여 줍니다.

  "Pwm": [ "$AVNET_MT3620_SK_PWM_CONTROLLER2" ]

PWM 액세스

Azure Sphere 상위 수준 애플리케이션은 Applibs PWM API를 호출하여 PWM에 액세스할 수 있습니다.

PWM 컨트롤러 열기

액세스를 위해 PWM 컨트롤러를 열려면 PWM_Open 호출하고 열 컨트롤러의 ID를 매개 변수로 전달합니다. 호출에 성공하면 파일 설명자가 반환됩니다. 그렇지 않으면 -1이 반환됩니다.

PWM 채널의 상태 설정

PWM 채널의 상태를 설정하거나 업데이트하려면 PWM_Apply 호출합니다. 다음 매개 변수를 PWM_Apply 전달합니다.

  • PWM_Open 반환된 파일 설명자

  • 업데이트할 PWM 채널입니다. 이 값은 플랫폼에 따라 달라집니다.

  • 채널에 적용할 기간, 의무 주기 및 극성

  • 채널을 사용하거나 사용하지 않도록 설정할지 여부

참고

기간 및 의무 주기에 대한 최소 및 최대 제한은 디바이스에 따라 다릅니다. 예를 들어 MT3620 상위 수준 코어에서 PWM은 16비트 켜기/끄기 비교 레지스터가 있는 2MHz의 고정 기본 주파수로 실행됩니다. 이는 500 ns의 의무 주기 해결과 약 32.77ms의 유효 최대 기간을 부과합니다. 자세한 내용은 특정 디바이스의 데이터 시트를 참조하세요.

MT3620 지원

MT3620에 지원되는 PWM 기능은 MT3620 지원 상태에 나열됩니다. MT3620 개발 보드 사용자 가이드에서는 핀 레이아웃 및 핀 함수에 대해 설명합니다.

MT3620에는 12개의 PWM 채널, PWM0 - PWM11이 있습니다. 4개 채널의 3개 그룹으로 구성됩니다. 각 그룹은 PWM 컨트롤러(PWM-CONTROLLER-0, PWM-CONTROLLER-1, PWM-CONTROLLER-2)와 연결됩니다. PWM 채널과 GPIO는 GPIO11을 통해 GPIO0을 MT3260의 동일한 핀에 매핑합니다. 애플리케이션에서 PWM 컨트롤러를 사용하는 경우 해당 컨트롤러와 연결된 모든 핀이 PWM 출력으로 사용하도록 할당됩니다. 다른 주변 장치 유형에는 사용할 수 없습니다.