From 4762dd62246e4bd17c0e309bd46cfce1bcfc4ac8 Mon Sep 17 00:00:00 2001 From: jhChun Date: Thu, 26 Mar 2026 14:52:40 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B0=B0=ED=84=B0=EB=A6=AC=20=EC=A0=84?= =?UTF-8?q?=EC=95=95=20SAADC=20=EC=98=A4=EB=B2=84=EC=83=98=ED=94=8C?= =?UTF-8?q?=EB=A7=81=20X4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - battery_saadc.c: 기존 1회 샘플링 -> 4회 샘플링 및 평균 - 배터리 전압 ADC 노이즈에 의한 측정값 흔들림 개선 --- .../ble_app_bladder_patch/battery_saadc.c | 11 +++++++---- project/ble_peripheral/ble_app_bladder_patch/main.c | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/project/ble_peripheral/ble_app_bladder_patch/battery_saadc.c b/project/ble_peripheral/ble_app_bladder_patch/battery_saadc.c index b25bd4d..d39e7dc 100644 --- a/project/ble_peripheral/ble_app_bladder_patch/battery_saadc.c +++ b/project/ble_peripheral/ble_app_bladder_patch/battery_saadc.c @@ -110,7 +110,7 @@ extern bool motion_data_once ; * * SAADC 변환 완료 시 호출된다. * ADC 값을 실제 배터리 전압(mV)으로 변환하고, 동작 모드에 따라: - * - 저전압 체크 모드: 3100mV 이하 10회 연속이면 자동 전원 OFF + * - 저전압 체크 모드: 3500mV 이하 10회 연속이면 자동 전원 OFF * - info4 모드: info_batt에 저장 후 온도 측정(go_temp)으로 전환 * - 일반 모드: BLE 또는 UART로 즉시 전송 * @@ -205,12 +205,15 @@ void battery_event_handler( nrf_drv_saadc_evt_t const * p_event ) */ static void battery_configure(void) { - /* SAADC 드라이버 초기화 (기본 설정 + 배터리 이벤트 핸들러 등록) */ - ret_code_t err_code = nrf_drv_saadc_init(NULL, battery_event_handler); + /* SAADC 드라이버 초기화 (16x 오버샘플링으로 노이즈 저감) */ + nrf_drv_saadc_config_t saadc_config = NRF_DRV_SAADC_DEFAULT_CONFIG; + saadc_config.oversample = NRF_SAADC_OVERSAMPLE_4X; + ret_code_t err_code = nrf_drv_saadc_init(&saadc_config, battery_event_handler); APP_ERROR_CHECK(err_code); - /* AIN2 채널 설정: 싱글엔드 입력, 1/3 프리스케일링 (기본값) */ + /* AIN2 채널 설정: 싱글엔드 입력, 1/6 gain, burst 활성화 (오버샘플링용) */ nrf_saadc_channel_config_t config = NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(NRF_SAADC_INPUT_AIN2); + config.burst = NRF_SAADC_BURST_ENABLED; err_code = nrf_drv_saadc_channel_init(0, &config); APP_ERROR_CHECK(err_code); diff --git a/project/ble_peripheral/ble_app_bladder_patch/main.c b/project/ble_peripheral/ble_app_bladder_patch/main.c index 1b22ceb..39f3669 100644 --- a/project/ble_peripheral/ble_app_bladder_patch/main.c +++ b/project/ble_peripheral/ble_app_bladder_patch/main.c @@ -1656,7 +1656,7 @@ int main(void) * * - 전원 자가유지 래치 (P0.8 HIGH) * - RTT 로그 출력 - * - GPIO (전원 버튼 입력, 전원 유지 핀) + * - GPIO (전원 버튼 입력) * - 앱 타이머 (전원 폴링, 배터리, 메인 루프) * - 기본 설정값 (시리얼 번호, 패스키) * - 버튼/LED (BSP)