본문 바로가기

[ST_MICRO]/STM32H7

STM32H7 CubeMx를 이용한 PWM출력 테스트 - 1Mhz PWM

STM32H7 CubeMx를 이용한 PWM출력 테스트 - 1Mhz PWM


STM32CubeMx를 실행해 프로젝트 생성후 핀맵 할당한다.

STM32H7_EVM 보드의 TIM2_CH1(PA5)에  PWM출력 되도록 했다.





TIM2에서 PWM 모드 설정해 주면 된다.







STM32H7 CubeMx 프로젝트 생성후 아래와 같이 HAL코드(HAL_TIM_PWM_Start 함수)로 PWM 출력을 시작 할 수 있다.


  HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);

  //주파수 편경
  TIM2->ARR = 100-1;// 100 x 5ns

  //펄스폭 가변
  TIM2->CCR1 = 50-1;





생성된 코드를 돌려보면 PWM이 2Mhz로 출력이 된다.
뭐가 설정이 잘못 되었나?
APB2 클럭 최대가 100Mhz로 되어 있어 타이머에 100Mhz가 공급될것으로 생각하고 있었는데...
CubeMX에서 클럭 설정 부분을 잘 보니 TIMER의 경우 200Mhz가 공급 된다고 되어 있다.







그러면 ARR레지스터에 100을 입력 하면 2Mhz로 출력이 되는것이 맞는것 같다.
TimeClk
200000000
Prescale
1
클럭당시간
0.000 000 005
ARR값
100
PWM주파수
2000000


PWM을 50단계까지 생각한다면 최대 PWM주파수를 4Mhz까지 출력 가능 할것 같다.

1Mhz로 구동한다면 200단계 정도 인데... 고속 PWM제어에 바로 쓰기는 약간 아쉬움이 있는것 같다.



기존 STM32F0 PWM 출력 테스트와 비교하면 4배 정도(48Mhz->200Mhz 기준) 좋은것 같다.


참고로 STM32F7 PWM 출력 테스트도 비교할 만하다.

반응형