Application note 내용이 복잡하여 우선 예제 중심으로 번역해서 올리도록 하겠습니다. Digital peak current mode implementation Onboard comparator and DAC 이전에 설명한 아날로그 피크 전류 모드 구현은 피크 전류 감지 비교기(Comparator)를 사용하여 수요 피크 전류와 실제 측정된 전류의 교차를 감지합니다. 디지털 구현의 경우 이 피크 전류 감지도 스위치가 최대한 빨리 꺼지는 방식으로 구현해야 합니다. ADC를 사용하여 스위칭 간격으로 인덕터 전류를 여러 번 샘플링하고 이를 수요 기준 값과 비교하면 너무 느릴 수 있습니다. 따라서 디지털 구현은 아날로그 설계의 피크 전류 감지 비교기와 동일한 목적으로 온보드(on board) ..
B-G474E-DPOW1 Discovery kit 로 Buck convertor 를 구현한 Applicatoin note를 해석하는 시리즈를 시작해 보도록 하겠습니다. 영어원문 자료는 아래 URL을 참조하시기 바랍니다. https://www.st.com/resource/en/application_note/an5497-buck-current-mode-with-the-bg474edpow1-discovery-kit-stmicroelectronics.pdf B-G474E-DPOW1 디스커버리 키트에는 Synchronous buck converter 전력단이 포함되어 있습니다. Synchronous buck converter를 위한 전력단의 단순화된 회로도가 그림 3에 나와 있습니다. 그림3 Princip..
ADC의 Conversion 시간은 회로 설계 뿐 아니라 소프트웨어 구현시 중요한 요소입니다. 특히 빠른 응답이 필요로하는 어플리케이션에서는 이 변환시간에 대해 좀 더 주의를 해야합니다. 너무 짧게 설정하여 정확하지 않은 결과값을 가지지 않도록 해야하며, 너무 길게 설정하여 어플리케이션 수행에 장애가 되지 않도록 하여야합니다. 그림1. STM32는 SAR 방식의 ADC 가 내장되어 있습니다. STM32는 SAR 방식의 AD Conversion Controller를 가지고 있으며 이 방식은 대표적으로 가격 대비 좋은 성능을 가진 방식입니다. 위의 그림1에서 볼 수 있듯이 여러개(합계:2C)의 Capacitor 을 가지고 있으며 이 Capacitor를 충전한 후 각 Capacitor를 설정한 비트 수 만큼 ..
안녕하세요? 오늘은 자꾸만 까먹어서 기록해 놓은 STM32CubeIDE에서 에서 가장 많이 사용되는 printf 함수의 uart(usart) 구현 방법을 알아보겠습니다. 코드 먼저 보도록 하겠습니다. #include printf가 사용된 곳에 위의 를 include 해줍니다. 그리고 실제 STM32CubeIDE에서 사용가능하도록 _write 함수를 구현해 주면 끝납니다. int _write(int file, char *ptr, int len) { HAL_UART_Transmit(&hlpuart1, (uint8_t *)ptr, len, HAL_MAX_DELAY); return len; } 추가로 printf에서 float 형태의 인자를 받기위해서는 아래와 같은 설정을 해주어야 합니다. 다만 주의할 점은 s..
흔히 고민되는 것이 Window watchdog 과 Indepedent watchdog 중에 어느것을 써야할지에 대한 고민입니다. 두가지 모두 Application 동작중에 오류로 인해 Core가 hang 걸렸을 때 System에 Reset을 걸어주는데 유용하게 사용됩니다. 제가 생각하는 Window watchdog 은 아래와 같은 조건에서 사용되는 것이 좋습니다. 이것 이외에는 Window watchdog, Indepedent watchdog 무엇을 사용해도 괜찮습니다. Window watchdog 사용예 Application이 정밀한 스케줄로 동작되며 지정된 시간에 watchdog을 refresh(kick dog)을 못 시킬 경우 Reset을 하는 용도 Low-power mode에서는 Watchdog..
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 발생 어플리케이션에 맞는 변환방법을 선택하면 사용성은 물론 최상의 성능을 구현할..
Cortex®-M7 프로세서의 MPU(메모리 보호 장치)를 사용하면 영역별로 Level 1(L1) 캐시 속성(Attributes)을 수정할 수 있습니다. 캐시는 캐시 제어 레지스터에 의해 전역적으로 제어되지만 MPU는 캐시 모드와 영역에 대한 액세스를 캐시할 수 있는지 여부를 지정할 수 있습니다. 경우에 따라 캐시된 시스템은 공유 데이터를 처리할 때 코어와 주 메모리 간의 데이터 일관성을 보장해야 합니다. 이 애플리케이션 노트는 레벨 1 캐시 동작을 설명하고 L1 캐시를 사용할 때 STM32F7 시리즈 및 STM32H7 시리즈에서 데이터 일관성을 보장하는 방법을 보여주는 예를 제공합니다. MPU 및 메모리 유형 및 캐시 정책에 따라 메모리 속성을 설정하는 방법에 대한 자세한 내용은 http://w..