이번 포스트에서는 STM32 자체 ADC 에러들을 AN2834를 번역하여 살펴 보도록 하겠습니다. 몇몇의 Error 들은 어플리케이션이 안고 가야하며 몇몇의 Error들은 교정을 통해 정확도를 높일 수 있습니다. 아무튼 에러에 대해 알아야 나중에 당황하지 않고 개발을 할 수 있습니다. ADC errors 이 섹션에는 ADC 정확도에 영향을 미치는 주요 오류가 나열되어 있습니다. 설명된오류는 모든 ADC 발생하며 변환 품질은 오류 제거에 따라 달라집니다. 이러한 오류 값은 STM32 MCU 데이터시트의 ADC 특성 섹션에 표시되어 있습니다. STM32 ADC에는 다양한 정확도 오류 유형이 있습니다. 참조하기 쉽도록 정확도 오류는 1 LSB의 배수로 표시됩니다. 전압 단위의 분해능(Resolution..
STM32에서는 아래와 같은 VDD-VDDA 의 구성을 가지고 있습니다. STM32G 시리즈 Power scheme VDD와 VDDA는 완전하게 독립적으로 분리할 수 있습니다. 하지만 회로적으로 Digital 전원과 Analog 전원을 따로 분리하지 않는 경우가 더 많습니다. VDD는 디지털 회로에 들어가는 전원으로 디지털의 특성상 작은 ripple은 허용이 되는 편입니다. 하지만 ADC의 기준이 되는 VREF+는 작은 ripple이라도 ADC에 큰 오차를 만들 수 있습니다. 따라서 회로적으로 VREF+가 흔들리지 않도록 권장하는 Decoupling Capacitor 및 노이즈 원인으로 부터 떨어 뜨려야 합니다. 흔히 VDD - VDDA - VREF+ 를 같이 연결하여 사용하는데 디지털 전원인 VDD..
오실로스코프를 사용하여 사양에 대한 벅 컨버터의 성능을 확인할 수 있습니다. 그림 20. PWM 파형 D0 및 D1 트레이스는 벅 컨버터가 일정한 100mA 부하로 작동할 때 하이 사이드(1차) 및 로우 사이드(2차) 스위치에 대한 PWM 출력을 보여줍니다. PWM 주기는 200kHz 스위칭 주파수에 해당하는 5µs입니다. 출력 전압은 채널 1 트레이스에서 볼 수 있듯이 목표와 일치하는 3.3V입니다. 그림 20 그림 21 CPU 부하에서 D0 트레이스는 CPU가 유휴 상태인 동안, 즉 while(1) 루프를 실행하는 동안 토글되는 디지털 IO 핀(GPO2)입니다. CPU가 FMAC 인터럽트 핸들러를 실행할 때 GPO는 토글을 멈춥니다. CPU가 PWM 주기 시작 후 460ns에 FMAC 인터..
Configuring the FMAC FMAC 레지스터에 액세스하기 전에 FMAC 클록을 활성화해야 합니다. __HAL_RCC_FMAC_CLK_ENABLE(); A 및 B 계수를 위해 시스템 메모리 영역을 할당해야 합니다. /* Array of filter coefficients A (feedback taps) in Q1.15 format */ static int16_t aFilterCoeffA[COEFF_VECTOR_A_SIZE] = {A1,A2,A3}; /* Array of filter coefficients B (feed-forward taps) in Q1.15 format */ static int16_t aFilterCoeffB[COEFF_VECTOR_B_SIZE] = {-B0,-B1,-B2,-B..
ADC의 Conversion 시간은 회로 설계 뿐 아니라 소프트웨어 구현시 중요한 요소입니다. 특히 빠른 응답이 필요로하는 어플리케이션에서는 이 변환시간에 대해 좀 더 주의를 해야합니다. 너무 짧게 설정하여 정확하지 않은 결과값을 가지지 않도록 해야하며, 너무 길게 설정하여 어플리케이션 수행에 장애가 되지 않도록 하여야합니다. 그림1. STM32는 SAR 방식의 ADC 가 내장되어 있습니다. STM32는 SAR 방식의 AD Conversion Controller를 가지고 있으며 이 방식은 대표적으로 가격 대비 좋은 성능을 가진 방식입니다. 위의 그림1에서 볼 수 있듯이 여러개(합계:2C)의 Capacitor 을 가지고 있으며 이 Capacitor를 충전한 후 각 Capacitor를 설정한 비트 수 만큼 ..
Polling Conversion에서 유의해야 할 Overrun을 없애는 방법은 무엇일까요? Overrun 제거 그것은 바로 AUTODLY를 Set하는 방법입니다. 아래 그림을 참조하도록 하겠습니다. AUTDLY=1로 설정 한 후 Conversion을 보면 CH1 Conversion 이후 ADC_DR에서 Read하기 전까지는 다음 Channel CH2를 Conversion 하지 않는 것을 볼 수 있는데요, 이러한 이유로 Overrun이 발생하지 않게됩니다. CubeMX 설정 지난 포스트에 이어서 CubeMX의 설정을 알아보겠습니다. 핀설정은 생략하고 Configruation 부분만 발췌하였습니다. 중요한 것은 우리는 여러채널을 한번에 Conversion 하기 위해서 Scan Conversion Mode을..
ADC 변환에는 크게 3가지로 구분 할 수 있습니다. 각각의 장단점은 아래와 같이 간단하게 말할 수 있습니다. 변환방법 장점 단점 Interrupt - 변환시간 절약 - 소프트웨어 트리거 사용가능 - 하드웨어 트리거 사용가능 - 잦은 인터럽트 유발 - 인터럽트 처리가 늦으면 Overrun 발생 Polling - 직관적인 사용성 - 소프트웨어 트리거 사용가능 - 변환시간 및 프로세싱 예측가능 - 프로세서 점유율이 높아짐 - 변환완료 처리가 늦어지면 Overrun 발생 - 하드웨어 트리거 사용이 어려움 DMA - 변환시간 절약 - 하드웨어 트리거 사용가능 - 설정의 복잡함 - 변환완료 프로세스를 잘 처리하지 않으면 Overrun 발생 어플리케이션에 맞는 변환방법을 선택하면 사용성은 물론 최상의 성능을 구현할..