RTC Alarm 설정을 하기 위해선 아래와 같은 CubeMX에서 설정을 해주어야 합니다. 그런데 요기서 Alarm Date Week Day Sel이라는 파라메터가 있는데 뭔지 좀 헷갈립니다. 우선 Date로 설정하고 Generate 되어 있는 Code에서 해당 변수를 확인해 보았습니다. sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE; sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE; 이 부분은데 이는 RTC_ALRMAR의 WDSEL 비트의 설정입니다. 다른 어플리케이션 노트에 보니 아래와 같이 표시되어 있습니다. "WDSEL = 0인 경우 모든 경우가 유사합니다. 다만 알람 마스크 필드는..
STM32U, STM32H 시리즈부터 GPDMA(General Purposes DMA)가 기본 DMA로 들어가 있습니다. 따라서 앞으로 출시되는 ST MCU에서는 GPDMA가 필수적은 DMA 시스템이 될 가능성이 높습니다. DMA를 사용하셨던 분들이나 앞으로 사용하실 분들은 GPDMA에 대해 필수적으로 알아야 합니다. GPDMA의 핵심은 Linked-list를 통해 다중 블록전송이 가능해졌다는 것입니다. 실례로 I2C로 받은 데이터를 UART를 통해 소프트웨어 개입없이 송출하는게 가능합니다. 아래 번역은 ST Employee 가 작성한 "How to configure the GPDMA?" 포스트를 번역해 놓은 것입니다. GPDMA를 구성하는 방법은 무엇입니까?1. GPDMA 모듈 설정STM32U5와 같이..
STM32G4를 사용하시는 분들중에 CubeMX에서 System Clock을 Max 170MHz 로 설정이 안되는 황당한 경험을 한 경우가 있을 것 같습니다. 무방비 상태에서 HCLK를 170MHz 설정하면 아래와 같은 메시지를 보게 됩니다. 문제는 아무런 안내없이 저런 경고를 띄운 후에 150MHz로 강제 설정이 되어 버립니다. 원인은 reference manual에서 확인 할 수 있으며 CubeMX의 default 세팅 값인 아래 VOS(Voltage Scale)에서는 최대 150MHz로 밖에 설정이 안되는 것이 원입니다. 따라서 CubeMX의 RCC설정에서 Power Regulator Voltage Scale 1 boost로 설정하고 다시 170MHz로 설정하면 정상적으로 설정이 되는 것을 확인..
이번 포스팅에서는 STM32 내부 플래 메모리에 대한 이야기를 해보려고 합니다. VDD에 전원이 들어오거나 RESET를 통해 시스템이 동작을 시작할 때 코드를 인출하는 곳이 내부 플래시 메모리입니다. MCU의 내부 플래시 메모리는 제품마다 전체, 섹터, 페이지 등의 크기가 다 다르기 때문에 어플리케이션에 적합한 제품을 골라야 비용을 절약 할 수 있습니다. Flash Memory 속도 Datasheet 등에는 표시되어 있지 않지만 의외로 Core Clock에 비해 플래시 속도가 몇 배 느립니다. 어플리케이션의 성능이 Core 속도 만큼 나오지 않는 이유는 바로 이 때문입니다. 이를 극복하기 위해 ART Accelerator라는 STM32 자체 기술이 탑재되어 있긴 한데 Branch나 interrup..
지난 포스트에서 좀 더 자세히 CubeMX에서 설정 부터 UART(USART) Printf - HAL & Polling을 설명해보도록 하겠습니다. 실제로 어플리케이션을 개발할 때 내부 동작 순서나 Debugging을 위해 자주 사용하는 printf() Log 출력하는 방법을 STM32G431RB Nucleo board를 사용해서 UART를 통해 구현해보겠습니다. CubeMX(혹은 CubeIDE)핀 설정은 아래와 같이 해줍니다. LPUART : PA2, PA3 BUTTON : PC13 STM32G4 Nucleo board에는 LPUART PA2,PA3을 통해서 UART VCP로 사용할 수 있습니다. 내부 회로도를 확인해 보면 PA2, PA3 핀은 ST-Link와 연결되어 최종적으로 PC에 Virtual C..
이번 포스트에서는 STM32 자체 ADC 에러들을 AN2834를 번역하여 살펴 보도록 하겠습니다. 몇몇의 Error 들은 어플리케이션이 안고 가야하며 몇몇의 Error들은 교정을 통해 정확도를 높일 수 있습니다. 아무튼 에러에 대해 알아야 나중에 당황하지 않고 개발을 할 수 있습니다. ADC errors 이 섹션에는 ADC 정확도에 영향을 미치는 주요 오류가 나열되어 있습니다. 설명된오류는 모든 ADC 발생하며 변환 품질은 오류 제거에 따라 달라집니다. 이러한 오류 값은 STM32 MCU 데이터시트의 ADC 특성 섹션에 표시되어 있습니다. STM32 ADC에는 다양한 정확도 오류 유형이 있습니다. 참조하기 쉽도록 정확도 오류는 1 LSB의 배수로 표시됩니다. 전압 단위의 분해능(Resolution..
아래의 그림은 STM32H745/55/47/57xx 의 Dual Core MCU의 시스템 아키텍처입니다. 보시는 것과 같이 Core만 두개일 뿐 대부분의 주변장치(Peripheral)은 각종 버스(AHB, APB)들에 의해 공유되는 것을 볼 수 있습니다. 이 얘기는 각 Core에서 독점적으로 사용되는 장치는 M7 Core에 Coupled 되어 있는 ITCM, DTCM 밖에 없다고 생각하시면 됩니다. 그런데, RCC의 몇몇 레지스터를 보면 아래와 같이 세가지로 구분되어 있는 것을 볼 수 있습니다. 이번 포스트는 왜 이렇게 구분되어 있는가에 대한 내용입니다. 분명 RCC는 블럭은 단 한개만 존재합니다. 그런데 마치 두개인 것 처럼 보입니다. 이는 RCC 레지스터 맵이 4개의 섹션으로 구분되어 있기 때문입니다..
이번 포스팅에서는 AN4187(Using the CRC peripheral on STM32 microcontrollers)를 번역하여 STM32에서 제공하는 CRC에 대해 알아보도록 하겠습니다. 개요 CRC(cyclic redundancy check:순환 중복 검사 )는 데이터 신뢰성을 얻기 위해 강력하고 쉽게 구현된 기술입니다. 오류가 수정 기능은 없으며 데이터 전송 또는 저장 무결성 검사에서 오류를 감지하는 데 주로 사용됩니다. 진단 범위는 기본 안전 표준의 요구 사항을 충족하므로 IEC 60335-1 및 IEC 607030-1 표준("Class B" 요구 사항)을 준수하도록 인증된 ST 펌웨어에서 플래시 메모리 콘텐츠 무결성 자체 테스트 검사에 사용됩니다. 자세한 내용은 AN3307(Guid..