2.7 Pulse-Width Modulator
2.7.1 Introduction
PWM(pulse-width modulator)는 16비트 카운터를 가지고 있고 저장된 샘플 오디오 이미지에서 사운드를 생성하고 톤(tone:음정)을 생성하도록 최적화 되어 있다. PWM은 백라이트에 대한 컨트롤도 제공한다.
PWM은 16비트 분해능을 가지며, 사운드를 생성하기 위해 4 x16 데이터 FIFO를 사용한다. PWM Output(PWMO) 신호의 적당한 duty cycle로 백라이트를 제어하기 위해 권한있는 사용자를 허용하는 Linux 드라이버로 소프트웨어 모듈은 구성된다.
2.7.2 Hardware Operation
아래 그림은 PWM 블록 다이어그램을 보여준다.
PWM은 프로세서 core와 인터페이스하기 위해 IP Bus 프로토콜을 따른다. CCM(Clock Control Module)의 clock, reset inputs과 프로세서 인터럽트 핸들러의 인터럽트 신호를 제외하고 디바이스 내부의 다른 모듈과 인터페이스 하지 않는다. PWM은 단일 외부 출력 신호인 PWMO가 포함된다. PWM은 다음과 같은 내부 신호가 포함된다 :
- 3개의 clock 입력
- 4개의 인터럽트 라인
- 한 개의 하드웨어 리셋 라인
- 4개의 저전력과 디버그 모드 신호
- 4개의 스캔 신호
- 표준 IP 슬레이브 버그 신호
2.7.3 Clocks
프리스케일러(prescaler)에 공급하는 clock는 다음 중에서 선택할 수 있다 :
- High frequency clock - CCM에서 제공. PWM은 저전력 모드에서 이 clock으로 실행될 수 있다.
- Low reference clock - CCM에서 제공되는 32KHz의 낮은 reference clock. PWM은 저전력 모드에서 이 clock으로 실행될 수 있다.
- Global functional clock - 일반 작동용. 저전력 모드에서 이 clock은 끌 수 있다.
clock 입력 소스는 PWM 컨트롤 레지스터의 CLKSRC 필드에 의해 결정된다. CLKSRC 값은 PWM이 비활성화된 경우에만 변경해야 한다.
2.7.4 Software Operation
PWM 디바이스 드라이버는 전원에 대한 일련의 펄스 폭을 변경하여 로드(load)로 전송되는 전력의 양을 줄인다. PWM의 한 가지 일반적이고 효과적인 사용 용도는 다양한 duty cycle로 QVGA 패널의 백라이트를 컨트롤하는 것이다.
아래 테이블은 소스 코드의 인터페이스 함수를 요약한 것이다.
Table 18. PWM Driver Summary
Function | Description |
struct pwm_device *pwm_get(struct device *dev, const char*con_id) | PWM 디바이스 조회 및 요청 |
void pwm_put(struct pwm_device *pwm) | PWM 디바이스 해제 |
int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns) | PWM 디바이스 구성 변경 |
int pwm_enable(struct pwm_device *pwm) | PWM 출력 토글 시작 |
int pwm_disable(struct pwm_device *pwm) | PWM 출력 토글 정지 |
pwm_config() 함수는 PWM 모듈에 대한 대부분의 구성 작업을 포함한다. 거기에는 clock 소스 옵션, PWM 출력 신호의 주기와 duty cycle을 포함한다. local functional clock(로컬 기능 클록)은 변경될 수 있으므로 PWM 모듈의 peripheral clock를 선택하는 것이 좋다.
2.7.5 Driver Features
PWM 드라이버는 다음 소프트웨어/하드웨어 지원을 포함한다 :
- Duty cycle modulation (듀티 사이클 변조)
- Varying output intervals (다양한 출력 간격)
- Two power management modes (두 가지 전원 관리 모드) - full on and full off (완전 켜짐과 완전 꺼짐)
2.7.6 Source Code Structure
Table 19. PWM Driver Files
File | Description |
drivers/pwm/pwm.h | 함수 선언 |
drivers/pwm/pwm-imx.c | i.MX PWM 함수 |
2.7.7 Menu Configuration Options
menu configuration에서 다음 모듈을 활성화한다 :
- Device Drivers > Pulse-Width Modulation (PWM) Support > i.MX PWM support
- 다음 옵션을 선택하여 Backlight 드라이버를 활성화한다 :
Device Drivers > Graphic support > Backlight & LCD device support > Generic PWM based Backlight Driver
'NXP i.MX SoC Family > i.MX Linux Reference Manual' 카테고리의 다른 글
i.MX Linux Reference Manual - System - Thermal (0) | 2022.06.17 |
---|---|
i.MX Linux Reference Manual - System - Remote Processor Messaging (0) | 2022.06.17 |
i.MX Linux Reference Manual - System - OProfile (0) | 2022.06.15 |
i.MX Linux Reference Manual - System - Power Management (0) | 2022.06.10 |
i.MX Linux Reference Manual - System - Anatop Regulator Driver (0) | 2022.06.10 |