본문 바로가기

[ST_MICRO]/STM32G0

#STM32G0 STM32CubeIDE Timer Test - 1% HSI 이용

#STM32G0 STM32CubeIDE Timer Test  - 1% HSI 이용


STM32G0 스펙을 보면 HSI클럭 부분에서 1%를 강조 하고 있다. 기존 칩보다 강점 이라고 내새우니 한번 테스트 해 봐야 겠다.



Core: Arm® 32-bit Cortex®-M0+ CPU, frequency up to 64 MHz
-40°C to 85°C/125°C operating temperature
Up to 64 Kbytes of Flash memory
8 Kbytes of SRAM with HW parity check

Voltage range: 1.7 V to 3.6 V

4 to 48 MHz crystal oscillator
32 kHz crystal oscillator with calibration
Internal 16 MHz RC with PLL option (±1 %)
Internal 32 kHz RC oscillator (±5 %)

12-bit, 0.4 μs ADC (up to 16 ext. channels)
Up to 16-bit with hardware oversampling
Conversion range: 0 to 3.6V





STM32CubeIDE 를 이용하여 Timer14를 활성화 한다.






STM32 CubeIDE를 이용해서 코드 생성하면 생성되는 코드에 적절한 값을 설정해서 1ms 타이머를 하나 만든다.


static void MX_TIM14_Init(void)

{
  /* USER CODE BEGIN TIM14_Init 0 */
  /* USER CODE END TIM14_Init 0 */
  /* USER CODE BEGIN TIM14_Init 1 */
  /* USER CODE END TIM14_Init 1 */
  htim14.Instance = TIM14;
  htim14.Init.Prescaler = 64-1;
  htim14.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim14.Init.Period = 1000-1;
  htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_Base_Init(&htim14) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN TIM14_Init 2 */
  /* USER CODE END TIM14_Init 2 */
}



Timer14 타이머 인터럽트 핸들러를 생성하고 주기적으로 GPIO PA5를 토글하도록 했다.

#define TIM_HANDLE                       htim14
volatile uint32_t gTimeTick = 0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == TIM_HANDLE.Instance)
    {
       gTimeTick++;
       GPIOA->ODR ^= GPIO_PIN_5;
    }

}




타이머 Start 함수를 호출하면 PA5(LED)가 토글되는것을 확인 할 수 있다.

HAL_TIM_Base_Start_IT(&TIM_HANDLE);






1.995ms가 출력된다.

외부에 크리스털 발진기를 연결하는 것 보다는 정확하지는 않지만 스팩에 나와 있는 1% 범위 안에는 들어오는것 같다.





그러면 기존 STM32F 시리즈의 스펙을 한번 살펴보자

25도 범위에서는 비슷한 오차 인것 같고 -40~85도에서는 5% 오차를 보인다고 한다. 스펙상으로는 STM32G시리즈가 많이 좋아 보인다.




그럼 STM32F0 보드에서 동일한 코드를 실행해 보자.

1.991ms 가 출력된다. 

조금 좋아 진것 같긴하다. 이정도는 환경에 따라 달라질 수 있는 것으로 판단되긴 한데...

아무튼 기존 보다는 좋지 않을까...










반응형