본문 바로가기

STM3238

STM32CubeMX에서 아두이노 스타일 사용자 코드 구조 만들기 STM32CubeMX는 STM32 마이크로컨트롤러용 프로젝트를 쉽게 생성할 수 있는 강력한 도구입니다.하지만 기본적으로 CubeMX가 생성하는 코드는 main.c 안에 모든 초기화 코드와 주변장치 핸들러가 몰려 있어 프로젝트가 커질수록 관리가 어려워집니다.아두이노처럼 setup()와 loop() 구조를 적용하면, 사용자 코드를 CubeMX 자동 생성 코드와 분리하여 깔끔하게 관리할 수 있습니다.이번 글에서는 CubeMX에서 아두이노 스타일 코드 구조를 만들고, 전역 변수와 USART 핸들러를 안전하게 사용하는 방법까지 소개합니다.1. 기본 CubeMX 구조CubeMX로 USART 하나를 활성화하고 프로젝트를 생성하면, main.c는 대략 다음과 같이 구성됩니다:int main(void){ HAL_Ini.. 2025. 9. 14.
ADA4255 프로그래머블 이득 계측 증폭기 STM32 HAL 기반 디바이스 드라이버 구현 1. 개요이 문서는 아날로그 디바이스(Analog Devices)의 ADA4255 제로 드리프트, 고전압, 프로그래머블 이득 계측 증폭기(PGIA)를 STM32 마이크로컨트롤러에서 제어하기 위한 디바이스 드라이버 구현을 다룹니다. 드라이버는 STM32 HAL 라이브러리를 기반으로 하며, 데이터시트(Rev. 0)의 레지스터 요약 및 세부 사항을 완전히 반영하여 36단계 이득 설정, 입력 멀티플렉서, 7개의 GPIO, 챠지 펌프, 결함 감지 등 모든 기능을 지원합니다. 구조체 기반 설계로 다중 장치 지원과 확장성을 제공하며, HAL 오류 코드와 사용자 정의 오류 코드를 통합하여 디버깅을 강화했습니다. DWT 기반 정밀 지연과 룩업 테이블(LUT)을 활용한 이득 오차 보정을 통해 성능과 정확도를 개선했습니다... 2025. 9. 6.
AD7124 24비트 ADC STM32 HAL 기반 디바이스 드라이버 구현 1. 개요이 문서는 아날로그 디바이스(Analog Devices)의 AD7124 24비트 델타-시그마(Δ-Σ) ADC를 STM32 마이크로컨트롤러에서 제어하기 위한 디바이스 드라이버 구현 내용을 다룹니다. 드라이버는 STM32 HAL 라이브러리를 기반으로 작성되었으며, AD7124의 주요 기능을 안정적이고 직관적으로 활용할 수 있도록 설계되었습니다.본 문서는 다음과 같은 내용을 포함합니다:AD7124 주요 사양 및 레지스터 구조 개요STM32 기반 드라이버 구현 세부 사항STM32L432KC 예제 코드를 통한 실제 활용 방법완전한 드라이버 코드(ad7124.h, ad7124.c, main.c)2. AD7124 주요 사양2.1 주요 특징AD7124는 고정밀, 저전력 데이터 수집 시스템에 최적화된 24비트 .. 2025. 9. 4.
AD524X(AD5241/AD5242/AD5280/AD5282) 디지털 포텐셔미터 STM32 HAL 기반 디바이스 드라이버 구현 1. 개요이 보고서는 아나로그 디바이스(Analog Devices)의 AD5241, AD5242, AD5280, AD5282 디지털 포텐셔미터를 STM32 마이크로컨트롤러에서 제어하기 위한 디바이스 드라이버 구현 내용을 설명합니다. 드라이버는 STM32 HAL 라이브러리를 기반으로 작성되었으며, I2C 인터페이스를 통해 디바이스의 모든 주요 기능을 지원하도록 설계되었습니다. 보고서는 디바이스의 상세 사양, 구현된 드라이버의 세부 사항, STM32L432KC 기준으로 한 예제 코드, 그리고 완전한 드라이버 코드를 포함합니다.2. AD5241/AD5242/AD5280/AD5282 주요 사양2.1 주요 특징AD5241, AD5242, AD5280, AD5282는 고정밀 디지털 포텐셔미터로, 저항 값을 디지털 .. 2025. 8. 28.
ADS124S08 24비트 ADC STM32 HAL 기반 디바이스 드라이버 구현 1. 개요이 보고서는 텍사스 인스트루먼트(Texas Instruments)의 ADS124S08 24비트 델타-시그마(Δ-Σ) 아날로그-디지털 변환기(ADC)를 STM32 마이크로컨트롤러에서 제어하기 위한 디바이스 드라이버 구현 내용을 설명합니다. 드라이버는 STM32 HAL 라이브러리를 기반으로 작성되었으며, ADS124S08의 모든 주요 기능을 지원하도록 설계되었습니다. 보고서는 디바이스의 상세 사양, 구현된 드라이버의 세부 사항, STM32L432KC 기준으로 한 예제 코드, 그리고 완전한 드라이버 코드를 포함합니다. 2. ADS124S08 주요 사양2.1 주요 특징ADS124S08은 고정밀, 저전력 데이터 수집 시스템에 최적화된 24비트 델타-시그마 ADC입니다. 주요 특징은 다음과 같습니다.해상도.. 2025. 8. 28.
ZSC31015 Sensor Signal Conditioner IC 드라이버 구현: STM32를 활용한 Zacwire 인터페이싱 이 글에서는 Renesas(구 IDT)의 ZSC31015 RBicdLite™ Analog Output Sensor Signal Conditioner를 STM32L432KC 마이크로컨트롤러와 함께 사용하는 드라이버 구현을 다룹니다. ZSC31015는 압저항성 브리지 센서(압력, 힘 등)의 신호를 보정하여 디지털(ZACwire) 또는 아날로그 출력(레일-투-레일 0.5~4.5V 또는 절대 전압)을 제공하는 고정밀 IC입니다. 이 글은 두 부분으로 나뉩니다:ZSC31015 사양 상세 분석: 데이터시트(Rev 1.40, 2016년 11월 14일, 53페이지)를 기반으로 IC의 기능, 전기적 특성, 회로 구성, 동작 모드, 아날로그 출력 설정 등을 체계적으로 정리합니다.ZACwire 통신 및 아날로그 출력 코드 .. 2025. 8. 25.
임베디드 시스템 DMA & 링 버퍼: 인터랙티브 가이드 임베디드 시스템: DMA & 링 버퍼 STM32를 예시로 한 인터랙티브 가이드 왜 이 주제가 중요한가요? 임베디드 시스템에서 DMA(Direct Memory Access)는 CPU의 부담을 줄여주는 핵심 기술입니다. **STM32와 같은 마이크로컨트롤러**에서 DMA만으로는 가변 길이 데이터나 예기치 않은 통신 중단 상황에서 데이터 유실이 발생할 수 있습니다. 이 가이드는 **소프트웨어 링 버퍼**를 결합하는 것이 왜 안정적인 시스템 설계를 위한 최선의 전략인지 시각적으로 보여줍니다. 링 버퍼.. 2025. 8. 25.
ADXL345 가속도 센서  STM32 HAL 라이브러리 드라이버 코드 구현 이 문서는 ADXL345 3축 가속도 센서를 STM32 마이크로컨트롤러와 HAL 라이브러리를 이용해 완벽하게 제어하는 방법을 안내합니다. 센서의 상세 사양부터, 핀 연결, 그리고 실제 동작하는 디바이스 드라이버 코드까지 단계별로 설명합니다.1. ADXL345 가속도 센서 사양ADXL345는 저전력, 소형, 3축 가속도 센서로, 정적(Static) 및 동적(Dynamic) 가속도 측정이 가능합니다. 특히 다양한 내장 기능 덕분에 복잡한 알고리즘 없이도 충격 및 동작 감지를 손쉽게 구현할 수 있습니다.측정 범위: ±2g, ±4g, ±8g, ±16g (사용자가 설정 가능)해상도: 10비트 고정 해상도 또는 Full Resolution 모드(최대 13비트) 지원통신 인터페이스: 4-wire SPI (직렬 통신).. 2025. 8. 24.
ADS114S08 16비트 ADC STM32 HAL 기반 디바이스 드라이버 구현 Texas Instruments의 ADS114S08은 저전력, 고정밀 16비트 Delta-Sigma ADC로, 센서 데이터 수집, 의료 기기, 산업용 계측에 이상적입니다. 이 블로그에서는 STM32L432KC 마이크로컨트롤러와 STM32 HAL을 기반으로 ADS114S08 드라이버를 구현하는 방법을 상세히 다룹니다.데이터시트 기반으로 전체 기능을 다 활용할 수 있는 상세 주석이 포함된 완전한 소스 코드, STM32CubeMX 설정 가이드를 제공하며, 초보자부터 숙련된 개발자까지 활용 가능한 실용적인 내용을 담았습니다.키워드: ADS114S08, STM32, ADC 드라이버, 고정밀 데이터 수집, STM32CubeMX, SPI 인터페이스, Delta-Sigma ADCADS114S08 사양ADS114S08은.. 2025. 8. 24.
PT100/PT1000 RTD 센서용 MAX31865 온도 변환 IC STM32 디바이스 드라이버 구현 소개 (Introduction)MAX31865는 PT100 및 PT1000 RTD(Resistance Temperature Detector) 센서를 위한 고정밀 온도 변환 IC로, STM32 마이크로컨트롤러와 SPI 인터페이스를 통해 쉽게 통합됩니다. 이 문서에서는 STM32L432KC를 기반으로 MAX31865 드라이버를 구현하는 방법을 단계별로 설명하며, PT100과 PT1000을 모두 지원하고 Callendar-Van Dusen 비선형 공식을 적용한 완전한 코드를 제공합니다. (The MAX31865 is a high-precision temperature conversion IC for PT100 and PT1000 RTD sensors, seamlessly integrated with STM3.. 2025. 8. 24.
STM32 에서 AD9833 DDS 파형발생기 제어: 드라이버 설계와 코드 구현 이 글에서는 Analog Devices의 AD9833 DDS(직접 디지털 합성, Direct Digital Synthesis) 파형 발생기 IC와 이를 STM32 마이크로컨트롤러에서 제어하기 위한 드라이버 구현을 상세히 다룹니다.AD9833은 사인파, 삼각파, 구형파를 고정밀으로 생성할 수 있는 저전력 프로그래머블 IC로, SPI 인터페이스를 통해 제어됩니다. 28비트 주파수 해상도와 12비트 위상 제어를 지원하며, 외부 컴포넌트 없이 최대 12.5 MHz의 파형을 출력할 수 있습니다. 이러한 특성 덕분에 AD9833은 테스트 장비, 센서 응용(근접/모션/결함 감지), 주파수 스위프, 클럭 생성 등 다양한 분야에서 활용됩니다.본 글에서는 다음을 다룹니다:AD9833의 주요 특징과 동작 원리 – 데이터시트.. 2025. 8. 23.
STM32Cube HAL로 AD5933 임피던스 측정 드라이버 구현 이 글에서는 Analog Devices의 AD5933 임피던스 변환기(impedance converter) IC와 이를 STM32 마이크로컨트롤러에서 제어하기 위한 드라이버 구현을 상세히 다룹니다.AD5933은 내장된 주파수 발생기(DDS, Direct Digital Synthesis)와 12비트 ADC를 이용해 외부 회로의 임피던스를 직접 측정할 수 있는 고집적 IC입니다. 사용자는 I²C 인터페이스를 통해 제어하며, 주파수 스위프(sweep) 기능을 활용하면 다양한 주파수 대역에서 임피던스 특성을 자동으로 분석할 수 있습니다. 이러한 특성 덕분에 AD5933은 생체 임피던스 분석(BIA, Body Impedance Analysis), 센서 인터페이스(습도/가스 센서), 재료 특성 평가(전극, 전해질).. 2025. 8. 23.
루프 언롤링: 임베디드 시스템과 AI 최적화 루프 언롤링(loop unrolling)은 임베디드 시스템에서 성능을 극대화하는 강력한 최적화 기법입니다. 특히 STM32, AVR 같은 마이크로컨트롤러(MCU)와 임베디드 AI에서 ReLU 활성화 함수를 사용할 때 빛을 발합니다. 이 글에서는 루프 언롤링의 기본 개념부터 STM32, AVR에서의 적용, 그리고 임베디드 AI에서의 활용까지, 초보자와 전문가 모두를 위한 알찬 정보를 제공합니다. 임베디드 개발자라면 꼭 알아야 할 이 기술입니다.(Loop unrolling is a powerful optimization technique that boosts performance in embedded systems like STM32 and AVR microcontrollers (MCUs). It’s esp.. 2025. 8. 23.
STM32 ADC 샘플 타임 설정 방법과 실무 팁 STM32 마이크로컨트롤러의 ADC는 샘플 앤 홀드 방식으로 아날로그 신호를 디지털 값으로 변환합니다. STM32 ADC 샘플 타임 설정은 변환 정확도와 성능에 큰 영향을 미칩니다. 이 글에서는 STM32 ADC 샘플 타임 설정 방법과 실무 팁을 이론과 실용적으로 설명하겠습니다.STM32 ADC 샘플 타임이란STM32 ADC 샘플 타임은 입력 전압을 샘플링 캐패시터(\(C_{adc}\))에 충전하는 시간으로써, STM32에서는 ADC 클럭 사이클 단위(예: 1.5, 7.5, 28.5, 55.5 사이클)로 설정됩니다. 샘플 타임이 너무 짧으면 캐패시터가 충분히 충전되지 않아 ADC 값이 부정확해지고, 너무 길면 변환 속도가 느려집니다.(STM32 ADC 샘플 타임에 영향을 미치는 요소STM32 ADC 샘플.. 2025. 8. 21.
STM32 에서 PWM Soft Start 구현: 모터와 LED 제어를 위한 부드러운 시작 STM32 마이크로컨트롤러를 사용해 PWM 신호(PWM signal)를 생성할 때 Soft Start(소프트 스타트, Soft Start) 기능을 구현하는 방법을 알아보겠습니다 . Soft Start는 PWM 듀티 사이클(PWM duty cycle)을 점진적으로 증가시켜 모터, LED, 전원 공급 장치 등의 부하에서 급격한 전류 변화를 방지합니다. 이 글에서는 STM32CubeMX와 HAL 라이브러리(HAL library)를 사용한 두 가지 구현 방법(소프트웨어 기반, 타이머 인터럽트 기반)을 상세한 주석이 포함된 예제 코드와 함께 설명합니다 . 초보자도 쉽게 따라 할 수 있도록 구성했습니다 키워드 (Keywords): STM32 PWM, Soft Start, 듀티 사이클 (Duty Cycle), 타이.. 2025. 8. 21.
PGA302 Sensor Signal Conditioner IC STM32용 I2C 드라이버 구현 이 문서는 STM32 마이크로컨트롤러에서 I2C 인터페이스를 통해 PGA302 센서 신호 컨디셔너를 제어하는 드라이버 구현 방법을 설명합니다. PGA302는 압력 및 온도 센서 신호를 처리하기 위한 고정밀 아날로그 프론트엔드(AFE) 장치로,STM32Cube HAL 라이브러리를 사용하여 I2C를 통해 레지스터 설정 및 데이터 읽기가 가능합니다.키워드 (Keywords): PGA302 STM32 I2C Driver, STM32Cube HAL I2C Communication, PGA302 Register Configuration Example,Sensor Signal Conditioner (Pressure & Temperature)PGA302 사양PGA302는 Texas Instruments에서 제공하는 저.. 2025. 8. 20.
STM32 링커 스크립트: 상세 설명, 구조, 작성 방법 및 예제 (STM32 Linker Script: Detailed Explanation, Structure, Writing Methods, and Examples) 1. 링커 스크립트 개요 (Overview of Linker Script)STM32 마이크로컨트롤러의 링커 스크립트는 컴파일된 소스 코드를 실행 가능한 파일(.elf)로 변환할 때, 코드와 데이터를 메모리의 적절한 위치에 배치하는 역할을 합니다 (The Linker Script for STM32 microcontrollers controls the placement of code and data in memory when converting compiled source code into an executable file (.elf)). STM32는 ARM Cortex-M 기반의 32비트 마이크로컨트롤러로, 모터 제어, IoT, 임베디드 시스템 등 다양한 애플리케이션에 사용됩니다 (The STM32, a .. 2025. 8. 18.
ZSC31050 Sensor Signal Conditioner IC STM32용 I2C 드라이버 구현 본 문서는 ZSC31050 센서의 I²C 인터페이스를 활용한 설정 및 작동 절차를 상세히 설명합니다. ZSC31050은 고정밀 압력 및 온도 측정을 위한 아날로그-디지털 혼합 신호 컨디셔닝 IC로, EEPROM과 RAM을 통해 유연한 설정이 가능합니다. 아래 절차는 센서의 초기화, 데이터 수집, 보정, 주기적 측정을 체계적으로 수행하며, 데이터 시트에 기반한 정확한 설정을 반영합니다. 명령 리스트와 주요 구성은 테이블로 상세하게 정리하였습니다. 본 문서 마지막에는 구현된 코드와 그 내용을 포함합니다.1. 장치 초기화 및 I²C 인터페이스 설정ZSC31050의 작동을 위해 마이크로컨트롤러(예: STM32L4 시리즈)와 센서 간의 I²C 인터페이스를 초기화합니다. 이 과정은 안정적인 통신을 보장하며, 하드웨.. 2025. 8. 16.
ZSSC3230 Sensor Signal Conditioner IC STM32을 사용한 I2C 코드 구현 이 내용는 ZSSC3230 센서 신호 컨디셔너의 비휘발성 메모리(NVM) 설정, 센서 데이터 측정을 STM32L432KC 마이크로컨트롤러를 I2C 인터페이스를 사용한 구현 방법을 상세히 설명합니다. 데이터시트를 기반으로 작성되었으며, 원시 센서 측정(A2HEX, A3HEX)과 전체 측정(AAHEX)을 위한 설정 및 코드를 포함합니다.1. ZSSC3230 개요ZSSC3230은 저전력, 고정밀 커패시턴스-디지털 컨버터로, 센서 신호 컨디셔닝(SSC)을 통해 커패시턴스 센서 데이터를 처리합니다. 최대 18비트 ADC 해상도와 24비트 출력 해상도를 지원하며, I2C 인터페이스를 통해 설정 및 데이터 전송을 수행합니다. 주요 응용 분야는 HVAC, 의료 기기, 웨어러블 장치 등입니다.주요 특징: 0.5pF~16.. 2025. 8. 15.
ZSSC3230 Sensor Signal Conditioner IC 센서 Raw Data 측정 설정 절차 및 I2C 코드 이 글은 ZSSC3230 센서 신호 컨디셔너 IC의 그리고 원시 센서 측정 전 NVM 설정 절차를 데이터시트를 기반으로 정리한 내용입니다.명령어 목록ZSSC3230은 동작 제어, 메모리 읽기/쓰기, 측정을 위한 다양한 명령어를 지원합니다. 명령어의 사용 가능 여부는 동작 모드(슬립 모드, 커맨드 모드, 주기적 측정 모드)에 따라 다릅니다. 아래는 데이터시트의 표 15(26페이지)에 명시된 명령어 목록입니다.명령어 코드 (바이트)반환값설명슬립 모드커맨드 모드주기적 측정 모드00HEX ~ 1FHEX16비트 데이터메모리 읽기: NVM 주소 00HEX에서 1FHEX까지 데이터를 읽음예예아니오20HEX ~ 3CHEX 뒤에 데이터 (0000HEX ~ FFFFHEX)–메모리 쓰기: NVM 주소 00HEX에서 1CHE.. 2025. 8. 15.