PWM Driver는 AUTOSAR Classic Platform에서 MCAL의 I/O Drivers 그룹에 드는 모듈이다.[1] 마이크로컨트롤러 안의 PWM(Pulse Width Modulation) 하드웨어를 초기화하고 제어하며, 내보낼 펄스의 duty cycle과 주기를 고르게 한다.[2]

용어

PWM Driver 규격은 아래 용어를 정의한다.[2]

용어뜻
PeriodPWM 신호의 주기
Polaritychannel이 주기를 시작하는 출력 상태. PWM_HIGH면 high로 시작해 duty cycle만큼 지나면 low가 되고, PWM_LOW면 반대다.
Duty cycle주기 가운데 시작 레벨(polarity의 레벨)이 차지하는 비율
Idle statePwm_SetOutputToIdle이나 Pwm_DeInit을 부른 뒤 channel이 머무는 출력 상태. PWM_HIGH나 PWM_LOW로 설정한다.

Channel class

이 규격은 channel을 주기를 바꿀 수 있는지에 따라 세 class로 나눈다.[2]

  • Fixed period: 주기가 고정되고 duty cycle만 바꿀 수 있다.
  • Fixed period shifted: 주기가 shift된 채 고정되고 duty cycle만 바꿀 수 있다. 하드웨어가 지원할 때만 쓴다.
  • Variable period: 주기와 duty cycle을 모두 바꿀 수 있다.[2]

출력 설정과 읽기

Pwm_SetDutyCycle은 channel의 duty cycle을 정하고, Pwm_SetPeriodAndDuty는 주기와 duty cycle을 함께 정한다. 주기를 바꿀 수 있는 channel은 variable period뿐이어서, 개발 오류 검출을 켠 상태로 다른 class의 channel에 Pwm_SetPeriodAndDuty를 부르면 PWM_E_PERIOD_UNCHANGEABLE 오류가 보고된다. Pwm_GetOutputState는 PWM 출력 신호의 내부 상태를 읽어 PWM_HIGH나 PWM_LOW로 돌려준다.[2]

Duty cycle 표현

duty cycle 파라미터는 16비트 부호 없는 정수이고, 0x0000이 0%, 0x8000이 100%다. 0x8000은 이므로, 파라미터 값 와 주기 가 주어지면 polarity 레벨 구간의 길이 는 아래와 같다.[2]

그래서 0x4000은 50%다. duty cycle이 0%면 출력은 polarity의 반대 레벨에, 100%면 polarity 레벨에 머문다.[2]

Notification

Pwm_EnableNotification은 channel의 rising edge, falling edge, 두 edge 가운데 인자로 고른 쪽에서 notification이 불리게 하고, Pwm_DisableNotification은 이를 끈다.[2]

다른 드라이버와의 관계

PWM Driver는 prescaler, 시스템 클록, PLL(Phase-Locked Loop) 설정을 MCU Driver에 맡기고, 포트 핀의 기능 설정을 Port Driver에 맡긴다.[2]

[1]
“Layered Software Architecture (AUTOSAR CP R25-11),” AUTOSAR, 2025. Accessed: Sep. 30, 2026. [Online]. Available: https://www.autosar.org/fileadmin/standards/R25-11/CP/AUTOSAR_CP_EXP_LayeredSoftwareArchitecture.pdf
[2]
“Specification of PWM Driver (AUTOSAR CP R25-11),” AUTOSAR, 2025. Accessed: Sep. 30, 2026. [Online]. Available: https://www.autosar.org/fileadmin/standards/R25-11/CP/AUTOSAR_CP_SWS_PWMDriver.pdf