반응형

전체 글 1163

nRF52840 USB MSC 외장 저장 장치 구현 및 파일 시스템(FATFS) 동시 접근 충돌 해결 가이드

안녕하세요. 지난 글에서 USB CDC ACM을 이용한 CLI 환경 구축을 다루었는데, 이번에는 한 걸음 더 나아가 보려고 합니다. 임베디드 장비를 개발하다 보면 내부 플래시 메모리에 저장된 로그 파일이나 센서 데이터를 PC로 대량 백업해야 하는 상황이 자주 발생합니다. 이때 가장 직관적이고 편리한 방법이 바로 장치를 PC에 꽂았을 때 '이동식 디스크'로 인식하게 만드는 것입니다.이번 포스팅에서는 nRF52840 마이크로컨트롤러를 USB 대용량 저장 장치(Mass Storage Class, MSC)로 동작시키는 방법과, 내부 파일 시스템과 USB 보트가 충돌하지 않도록 배타적 제어(Mutex 개념)를 구현하는 핵심 노하우를 정리해 보겠습니다.핵심 요약 3줄USB MSC는 nRF52840을 PC에서 일반 ..

nRF52840 USB CDC ACM 구현 및 FreeRTOS CLI 양산 검증 적용 가이드

안녕하세요. 임베디드 개발 현장에서 가장 많이 쓰이면서도, 막상 처음 구현하려면 은근히 손이 많이 가는 기능 중 하나가 바로 USB 통신입니다. 보통 디버깅이나 PC 인터페이스용으로 UART를 많이 쓰지만, 양산 검증 환경이나 고속 데이터 전송이 필요할 때는 USB CDC ACM만 한 게 없죠.이번 글에서는 nRF52840 칩셋과 nRF5 SDK 환경에서 FreeRTOS 기반으로 USB CDC ACM을 올리고, 이를 활용해 양산 검증용 CLI(Command Line Interface) 시스템을 구축하는 과정을 한 번에 정리해 보겠습니다. 직접 삽질하며 얻은 팁과 흔히 하는 실수까지 꾹꾹 눌러 담았으니, 프로젝트에 바로 적용해 보시기 바랍니다.핵심 요약 3줄USB CDC ACM은 별도의 USB-to-UAR..

nRF52840 FatFs 파일 시스템 이식 가이드: 외부 QSPI 플래시 메모리 연동 및 예제 코드

스마트 워치, 환경 모니터링 시스템, 자산 추적기 등의 IoT 디바이스는 센서로부터 수집한 대용량 로그 데이터를 안정적으로 보관해야 합니다. 내부 플래시 메모리만으로는 용량이 턱없이 부족하기 때문에 외부 SPI 또는 QSPI NOR 플래시 메모리를 연동하는 것이 일반적입니다. 하지만 원시(Raw) 메모리 주소에 직접 데이터를 쓰고 지우는 방식은 파일 단위의 관리나 PC와의 데이터 호환 측면에서 한계가 명확합니다. 이러한 문제를 해결하기 위해 임베디드 환경에 최적화된 FAT/exFAT 파일 시스템 래퍼인 FatFs 라이브러리를 많이 활용합니다. 이번 글에서는 nRF52840 하드웨어 환경에서 QSPI 인터페이스를 블록 디바이스로 등록하고, FatFs를 포팅하여 미디어 마운트부터 파일 읽기/쓰기/삭제를 구현..

nRF52840 SAADC 구현 가이드: 저전력 센서 데이터 샘플링 및 초기화 기법

배터리로 동작하는 초소형 IoT 디바이스나 웨어러블 장치를 개발할 때, 배터리 잔량 측정이나 아날로그 센서 데이터 수집은 빼놓을 수 없는 필수 기능입니다. Nordic Semiconductor의 nRF52840은 이러한 요구사항을 충족하기 위해 저전력 플래시 기반의 연속 근사 레지스터 방식 아날로그-디지털 변환기인 SAADC(Successive Approximation Analog-to-Digital Converter)를 탑재하고 있습니다. 단순한 전압 측정을 넘어 하드웨어 타이머 및 EasyDMA와 연동해 CPU 개입을 최소화하는 구조를 가집니다. 이번 글에서는 nRF52 SDK 환경에서 단일 종단 모드로 SAADC를 초기화하는 방법부터 콜백 함수를 통한 버퍼 관리, 그리고 실무에서 전력 효율을 극대화..

nRF52840 QSPI 구현 가이드: 외부 고속 플래시 메모리 제어 및 예제 코드

웨어러블 디바이스나 IoT 자산 추적기 같은 대용량 데이터 로깅 시스템을 설계하다 보면 internal 플래시 메모리 용량의 한계에 부딪히기 마련입니다. 이럴 때 외부 NOR 플래시 메모리를 추가하여 공간을 확장하는데, 일반 SPI 대비 4배의 데이터 라인을 사용하는 QSPI(Quad Serial Peripheral Interface)는 고속 데이터 전송을 위한 훌륭한 대안이 됩니다. Nordic Semiconductor의 nRF52840은 최대 32MHz 클록의 고속 QSPI 인터페이스와 하드웨어 암호화 기법인 XIP(Execute-in-Place) 기능을 제공합니다. 이번 글에서는 nRF52 SDK 환경에서 QSPI 드라이버를 초기화하는 방법부터 실무에서 쓰이는 블록 지우기, 읽기, 쓰기 API 활용..

nRF52840 SPI Master 구현 가이드: MCP2515 CAN 통신 예제 코드 분석

임베디드 시스템 아키텍처를 설계할 때 디스플레이, 외부 플래시 메모리, CAN 컨트롤러처럼 대용량 데이터를 지연 없이 빠르게 처리해야 하는 컴포넌트들은 주로 SPI(Serial Peripheral Interface) 인터페이스를 사용합니다. Nordic Semiconductor의 nRF52840은 고속 데이터 전송을 하드웨어 레벨에서 안정적으로 뒷받침하는 고성능 SPIM(EasyDMA 지원 SPI Master) 블록을 내장하고 있습니다. 이번 글에서는 nRF52 SDK 환경을 기반으로 nRF52840의 SPI 드라이버를 초기화하는 방법부터 시작하여, 대표적인 외부 CAN 컨트롤러 칩셋인 MCP2515와의 실제 연동 패킷 제어 소스 코드까지 단계별로 상세히 짚어보겠습니다.핵심 요약SPI는 전이중(Full-..

nRF52840 TWI Slave 구현 가이드: TWIS 드라이버 설정 및 이벤트 처리

사물인터넷(IoT) 기기나 복잡한 임베디드 시스템을 설계하다 보면 하나의 MCU가 메인 컨트롤러(Master) 역할을 하고, 다른 MCU가 주변장치(Slave) 역할을 맡아 상호 통신해야 하는 상황이 자주 발생합니다. Nordic Semiconductor의 nRF52840은 고성능 무선 연결성뿐만 아니라 강력한 유선 인터페이스도 제공하는데, 그중 TWI(Two-Wire Interface) 하드웨어는 I2C 프로토콜과 완벽하게 호환됩니다. 이번 글에서는 nRF52840을 TWI Slave(TWIS)로 동작시키기 위한 드라이버 구성 방법을 알아보겠습니다. 특히 마스터의 요청에 즉각적으로 반응해야 하는 슬레이브 특성을 고려하여, 이벤트 핸들러 중심의 안정적인 코드 구현법을 공유합니다.핵심 요약nRF52840 ..

nRF52840 TWI Master 구현 가이드: I2C 통신 및 예제 코드 분석

센서 데이터 수집이나 외부 EEPROM 제어 등 임베디드 시스템 개발에서 I2C 통신은 빠질 수 없는 필수 요소입니다. Nordic Semiconductor의 nRF52840 칩셋은 이를 TWI(Two-Wire Interface)라는 이름의 주변장치로 지원합니다. 이번 글에서는 nRF52 SDK 환경에서 nRF52840을 TWI Master로 동작시키기 위한 드라이버 초기화 방법부터 안정적인 데이터 송수신 함수 구현까지 단계별로 살펴보겠습니다. 특히 실무 환경에서 발생할 수 있는 예외 처리와 타임아웃 구현 방식을 집중적으로 다룹니다.핵심 요약nRF52840의 TWI는 I2C 표준 프로토콜과 호환되며 SDK의 nrf_drv_twi 라이브러리로 제어합니다.인터럽트 핸들러 기반의 비동기 이벤트를 활용해 TX ..

nRF52840 TWI(I2C) 기초: 하드웨어 구조와 인스턴스 설정 주의사항

안녕하세요, 임베디드 소프트웨어 개발 전문 블로그 '소프트웨어 공장'입니다.임베디드 프로젝트를 진행하다 보면 조도 센서, 가속도 센서, OLED 디스플레이, 외부 EEPROM 등 무수히 많은 주변 장치(Peripheral)를 메인 MCU에 연결해야 하는 상황을 마주합니다. 이때 각 장치마다 수많은 데이터 선을 일일이 할당하면 핀 리소스가 금방 고갈되고 회로가 복잡해집니다. 이 문제를 해결하기 위해 필수로 사용되는 통신 프로토콜이 바로 TWI(Two-Wire Interface)입니다. TWI는 우리에게 익숙한 I2C(Inter-Integrated Circuit) 통신의 노르딕 세미컨덕터 표준 명칭으로, 기능과 규격이 완벽하게 일치합니다. 단 두 개의 라인만으로 수십 개의 슬레이브 장치를 제어할 수 있어 회..

nRF52840 UART 가이드: 시리얼 통신 설정 및 FIFO 기반 데이터 처리

안녕하세요, 임베디드 소프트웨어 개발 전문 블로그 '소프트웨어 공장'입니다.임베디드 시스템을 개발할 때 디바이스의 내부 동작 상태를 확인하거나, 다른 센서 및 MCU와 데이터를 주고받기 위해 가장 먼저 구현하는 기능이 바로 UART(Universal Asynchronous Receiver/Transmitter) 비동기 시리얼 통신입니다. 디버깅용 로그 출력을 위해서도 필수적인 인터페이스입니다. 하지만 nRF52840 칩셋 환경에서 UART를 구현할 때는 단순히 하드웨어 핀만 연결한다고 끝나는 것이 아닙니다. SDK 내부의 수많은 설정 파일(sdk_config.h)을 조율해야 하고, 드라이버와 라이브러리 레이어를 프로젝트에 수동으로 매핑해 주어야 하는 번거로움이 있습니다. 이 과정을 정확히 이해하지 못하면..

반응형