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인 경우 모든 경우가 유사합니다. 다만 알람 마스크 필드는..
이번 포스팅은 AN1709 EMC design guide for STM8, STM32 and legacy MCUs의 내용을 번역하도록 하겠습니다. 이 가이드는 전자기적인 문제에 안전한 하드웨어를 만드는 기본적인 방법을 설명하고 있으니 시간이 되시는 분들은 꼭 필독하시기를 추천드립니다. 이번 포스팅에서는 전체내용중에 MCU의 EMC 가이드 부분만 발췌하여 번역해보도록 하겠습니다. 먼저 기본적인 용어 부터 살펴보겠습니다. EMCElectromagnetic compatibility(EMC: 전자기 호환성)은 시스템이 정상적인 환경에 존재하는 전자기 현상의 영향을 받지 않고 제대로 작동하며 다른 장비를 방해할 수 있는 전기 교란을 일으키지 않는 능력입니다.EMSElectromagnetic susceptibil..
ST는 엣지 AI 애플리케이션 구현을 간소화 및 가속화하도록 툴, 소프트웨어, 전문지식을 결합한 ST 엣지 AI 스위트(ST Edge AI Suite)를 제공한다고 밝혔다.ST 엣지 AI 스위트는 통합 소프트웨어 툴 모음으로서 임베디드 AI 애플리케이션의 개발과 구축을 용이하게 하도록 설계됐다. 이 포괄적인 제품군은 데이터 수집부터 하드웨어 상의 최종 구축까지 머신 러닝 알고리즘의 최적화 및 구축을 모두 지원하면서 다양한 유형의 사용자들을 위해 워크플로를 간소화해준다.이 스위트의 툴로는 스마트 센서부터 곧 출시 예정인 STM32N6 신경망 프로세싱 마이크로컨트롤러를 비롯한 마이크로컨트롤러 및 마이크로프로세서 등 ST 제품이 광범위하게 포함돼 있다.ST 수석 부사장 알렉산드로 크레모네시(Alessandro..
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와 같이..
AI가 생활 제품에도 확대되기 시작한걸까요? 다양한 전자 애플리케이션과 고객들을 지원하는 세계적인 반도체 회사인 ST마이크로일렉트로닉스(STMicroelectronics, 이하 ST)는 파나소닉 사이클 테크놀로지(Panasonic Cycle Technology, 이하 파나소닉)가 자사의 티모 A(TiMO A) 전기 보조 자전거에 STM32F3 마이크로컨트롤러(MCU)와 엣지 AI 개발 툴인 STM32Cube.AI를 채택했다고 밝혔다. ST의 엣지 AI 솔루션은 첨단 AI 기능을 활용해 라이더의 안전과 편의성을 향상시키는 타이어 공기압 모니터링 시스템(TPMS: Tire Pressure Monitoring System)을 제공한다. 파나소닉은 일본의 선도적인 전기 보조 자전거 생산업체로, 일본 시장에 다양..
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로 설정하면 정상적으로 설정이 되는 것을 확인..
간혹 코드 수행시간을 타이트하게 관리 해야할 경우가 있습니다. 이럴 땐 각 함수별로 혹은 코드 흐름중에 해당 코드 수행시간을 측정할 수 있다면 좀 더 시간관리가 용이할 수 있습니다. 다행히 Arm cotex-m3, m4 에서는 CoreDebug라는 register를 통해 CPU cycle을 측정 해 볼 수 있습니다. uint32_t cycles = 0; CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; DWT->CYCCNT = 0; // 수행코드 삽입 cycles = DWT->CYCCNT; 물론 수행코드 사이에 interrupt가 발생하게되면 오차가 발생할 수 있습니다. cycles는 Core clock..
이번 포스팅에서는 STM32 내부 플래 메모리에 대한 이야기를 해보려고 합니다. VDD에 전원이 들어오거나 RESET를 통해 시스템이 동작을 시작할 때 코드를 인출하는 곳이 내부 플래시 메모리입니다. MCU의 내부 플래시 메모리는 제품마다 전체, 섹터, 페이지 등의 크기가 다 다르기 때문에 어플리케이션에 적합한 제품을 골라야 비용을 절약 할 수 있습니다. Flash Memory 속도 Datasheet 등에는 표시되어 있지 않지만 의외로 Core Clock에 비해 플래시 속도가 몇 배 느립니다. 어플리케이션의 성능이 Core 속도 만큼 나오지 않는 이유는 바로 이 때문입니다. 이를 극복하기 위해 ART Accelerator라는 STM32 자체 기술이 탑재되어 있긴 한데 Branch나 interrup..