maa samples 140->100 변경, mec/maa 수신 시 Piezo 자동 Active/Sleep
- MAA_NUM_SAMPLES 140에서 100으로 변경 (DR_ADC_ECHO_SAMPLES_MAX 제한) - 단일(mec) 및 모든 채널(maa) 에코 캡처 명령 수신 시 Piezo 자동 Active, 응답 송신 후 Sleep - Cmd_mpa 중복 호출 정리 (dr_piezo_system_init 내부에 power_on 포함) - 채널별 디버그 로그 추가 - 코드 리뷰 주석 정리 및 기타 파일 업데이트 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,20 +3,60 @@
|
||||
* @brief Piezo Transducer Driver (2MHz Signal Generator)
|
||||
* @author Charles KWON
|
||||
* @date 2025-12-09
|
||||
*
|
||||
*
|
||||
* @note Hardware: nRF52840 + MD1822K6-G MOSFET Driver + TC7920K6-G MOSFET
|
||||
* Output: <EFBFBD>20V at 2MHz, 3~5 cycles
|
||||
*
|
||||
* Output: +/-20V at 2MHz, 3~5 cycles
|
||||
*
|
||||
* @details Timing Sequence:
|
||||
* 1. PE = HIGH (enable)
|
||||
* 2. P_OUT/N_OUT = 2MHz pulses (3~5 cycles)
|
||||
* 3. DMP = HIGH (dump)
|
||||
* 4. DMP = LOW
|
||||
* 5. PE = LOW (disable)
|
||||
*
|
||||
*
|
||||
* All signals (P_OUT, N_OUT, DMP) operate within PE HIGH period.
|
||||
******************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
* [한국어 설명] 피에조 초음파 트랜스듀서 드라이버 헤더
|
||||
*
|
||||
* === 개요 ===
|
||||
* 방광 측정용 초음파 송신기의 핀 할당, 설정값, 함수 선언을 정의.
|
||||
* nRF52840 + MD1822K6-G(MOSFET 드라이버) + TC7920K6-G(MOSFET) 하드웨어 구성.
|
||||
* 출력: +/-20V, 2MHz, 3~7 사이클 버스트.
|
||||
*
|
||||
* === 핀 할당 ===
|
||||
* 전원 제어:
|
||||
* - DR_PIEZO_PWR_EN (P1.9): DC/DC 컨버터 활성화 -> +/-20V 고전압 생성
|
||||
*
|
||||
* TX 신호 핀 (MOSFET 드라이버 제어):
|
||||
* - PE (P0.25): Pulse Enable - 전체 시퀀스 활성화/비활성화
|
||||
* - DMP (P1.0): Dump - 펄스 후 피에조 잔류 에너지 방전
|
||||
* - P_OUT (P1.7): Positive Output - 피에조 양극 구동
|
||||
* - N_OUT (P1.6): Negative Output - 피에조 음극 구동 (P_OUT과 역상)
|
||||
*
|
||||
* MUX 제어 핀 (8채널 에코 신호 경로 선택):
|
||||
* - EN_MUXA (P0.21): MUXA 활성화 (CH0~CH3 담당)
|
||||
* - EN_MUXB (P0.23): MUXB 활성화 (CH4~CH7 담당)
|
||||
* - SEL0 (P1.10): MUX 내부 채널 주소 비트 0
|
||||
* - SEL1 (P0.28): MUX 내부 채널 주소 비트 1
|
||||
*
|
||||
* === MUX 채널 매핑 (8채널) ===
|
||||
* CH0 = MUXA 입력0: EN_A=1, EN_B=0, SEL0=0, SEL1=0
|
||||
* CH1 = MUXA 입력2: EN_A=1, EN_B=0, SEL0=1, SEL1=0
|
||||
* CH2 = MUXA 입력1: EN_A=1, EN_B=0, SEL0=0, SEL1=1
|
||||
* CH3 = MUXA 입력3: EN_A=1, EN_B=0, SEL0=1, SEL1=1
|
||||
* CH4 = MUXB 입력0: EN_A=0, EN_B=1, SEL0=1, SEL1=1
|
||||
* CH5 = MUXB 입력1: EN_A=0, EN_B=1, SEL0=0, SEL1=1
|
||||
* CH6 = MUXB 입력2: EN_A=0, EN_B=1, SEL0=1, SEL1=0
|
||||
* CH7 = MUXB 입력3: EN_A=0, EN_B=1, SEL0=0, SEL1=0
|
||||
*
|
||||
* === 두 가지 버스트 모드 ===
|
||||
* 1) 하드웨어 버스트 (dr_piezo_burst): Timer2 + PPI + GPIOTE 사용, CPU 비의존적
|
||||
* 2) 소프트웨어 버스트 (dr_piezo_burst_sw_XXmhz): CPU NOP 기반 정밀 타이밍
|
||||
* - 주파수별 전용 함수: 1.7/1.8/1.9/2.0/2.1/2.2 MHz
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef DR_PIEZO_H
|
||||
#define DR_PIEZO_H
|
||||
|
||||
@@ -25,7 +65,8 @@
|
||||
#include "nrf_gpio.h"
|
||||
|
||||
/*==============================================================================
|
||||
* POWER CONTROL PINS (DC/DC Converter +/-20V)
|
||||
* 전원 제어 핀 (DC/DC 컨버터 +/-20V)
|
||||
* DR_PIEZO_PWR_EN: HIGH로 설정 시 DC/DC 컨버터가 +/-20V 고전압 생성
|
||||
*============================================================================*/
|
||||
//#define DR_PIEZO_PWR_SHDN NRF_GPIO_PIN_MAP(0, 21) /**< SHDN_VPP/VNN (LT3463) */ // P0.21 : PZT_EN_MUXA jhChun 0128
|
||||
//#define DR_PIEZO_PWR_EN_10V NRF_GPIO_PIN_MAP(0, 22) /**< EN_+10V (MCP1804) */ // P0.22 : NIRS PIN
|
||||
@@ -33,7 +74,12 @@
|
||||
#define DR_PIEZO_PWR_EN NRF_GPIO_PIN_MAP(1, 9) /** Power Enable jhChun 0128 */
|
||||
|
||||
/*==============================================================================
|
||||
* TX SIGNAL PINS (MOSFET Driver Control)
|
||||
* TX 신호 핀 (MOSFET 드라이버 제어)
|
||||
* PE: Pulse Enable - 전체 TX 시퀀스 활성화/비활성화
|
||||
* DMP: Dump - 펄스 후 피에조 잔류 에너지 방전용
|
||||
* P_OUT: Positive Output - 피에조 양극 구동 (N_OUT과 역상)
|
||||
* N_OUT: Negative Output - 피에조 음극 구동 (P_OUT과 역상)
|
||||
* 주의: 이전 핀 할당(주석 처리)에서 새 보드 레이아웃으로 변경됨 (jhChun 0128)
|
||||
*============================================================================*/
|
||||
//#define DR_PIEZO_PIN_PE NRF_GPIO_PIN_MAP(1, 5) /**< Pulse Enable */
|
||||
//#define DR_PIEZO_PIN_DMP NRF_GPIO_PIN_MAP(1, 9) /**< Dump control */
|
||||
@@ -46,7 +92,11 @@
|
||||
#define DR_PIEZO_PIN_N_OUT NRF_GPIO_PIN_MAP(1, 6) /**< Negative output */ // P1.2 -> P1.6 jhChun 0128
|
||||
|
||||
/*==============================================================================
|
||||
* MUX CONTROL PINS (Echo Signal Path Selection)
|
||||
* MUX 제어 핀 (에코 신호 경로 선택)
|
||||
* 8채널 아날로그 MUX로 피에조 센서 채널을 선택한다.
|
||||
* MUXA(CH0~CH3)와 MUXB(CH4~CH7) 두 개의 4채널 MUX 사용.
|
||||
* EN_MUXA/EN_MUXB: 각 MUX 활성화 (동시에 하나만 HIGH)
|
||||
* SEL0/SEL1: MUX 내부 4채널 중 하나를 선택하는 주소 비트
|
||||
*============================================================================*/
|
||||
//#define DR_PIEZO_MUX_SEL1 NRF_GPIO_PIN_MAP(1, 13) /**< MUX Select 1 (HIGH) */
|
||||
//#define DR_PIEZO_MUX_SEL2 NRF_GPIO_PIN_MAP(1, 12) /**< MUX Select 2 (LOW) */
|
||||
@@ -59,7 +109,11 @@
|
||||
#define DR_PIEZO_MUX_SEL1 NRF_GPIO_PIN_MAP(0, 28) /**< MUX Select 1 */
|
||||
|
||||
/*==============================================================================
|
||||
* CONFIGURATION
|
||||
* 설정값
|
||||
* DR_PIEZO_FREQ_HZ: 목표 주파수 (실제 동작 주파수는 dr_piezo.c에서 결정)
|
||||
* DR_PIEZO_DEFAULT_CYCLES: 기본 버스트 사이클 수 (5)
|
||||
* DR_PIEZO_MIN/MAX_CYCLES: 허용 사이클 범위 (3~7)
|
||||
* DR_PIEZO_MUX_SETTLING_US: MUX 채널 전환 후 아날로그 경로 안정화 대기 시간
|
||||
*============================================================================*/
|
||||
/**
|
||||
* @note Actual operating frequency is defined in dr_piezo.c as PIEZO_FREQ_MHZ.
|
||||
@@ -73,7 +127,8 @@
|
||||
#define DR_PIEZO_MUX_SETTLING_US 1300 /**< MUX settling delay (us) */
|
||||
|
||||
/*==============================================================================
|
||||
* POWER CONTROL FUNCTIONS
|
||||
* 전원 제어 함수
|
||||
* DC/DC 컨버터(+/-20V)를 ON/OFF하여 피에조 구동 고전압을 제어한다.
|
||||
*============================================================================*/
|
||||
|
||||
/**
|
||||
@@ -86,8 +141,15 @@ void dr_piezo_power_on(void);
|
||||
*/
|
||||
void dr_piezo_power_off(void);
|
||||
|
||||
/**
|
||||
* @brief 피에조 전원 상태 확인
|
||||
* @return true: 전원 ON, false: 전원 OFF
|
||||
*/
|
||||
bool dr_piezo_is_power_on(void);
|
||||
|
||||
/*==============================================================================
|
||||
* TX DRIVER FUNCTIONS
|
||||
* TX 드라이버 함수
|
||||
* 초음파 송신 관련: 초기화, 버스트 송신, 활성화/비활성화, 주파수 설정
|
||||
*============================================================================*/
|
||||
|
||||
/**
|
||||
@@ -156,7 +218,12 @@ void dr_piezo_mux_init(void);
|
||||
void dr_piezo_select_channel(uint8_t channel);
|
||||
|
||||
/*==============================================================================
|
||||
* SYSTEM FUNCTIONS (Power + TX combined)
|
||||
* 시스템 함수 (전원 + TX 통합 제어)
|
||||
* 전원 ON/OFF와 TX 드라이버 초기화/해제를 한 번에 수행하는 편의 함수.
|
||||
* 소프트웨어 버스트(burst_sw) 계열: CPU NOP 기반 정밀 타이밍.
|
||||
* - Timer/PPI 없이 CPU에서 직접 GPIO를 제어
|
||||
* - 인터럽트 비활성화 상태에서 동작하여 타이밍 정확도 보장
|
||||
* - 주파수별 전용 함수 제공 (NOP 개수가 다름)
|
||||
*============================================================================*/
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user