- FDS 피에조 파라미터 구조체 변경 (pd_adc_cnt/pd_delay_us 삭제, piezo 5개 필드 추가)
- maa/mbb 앱 파라미터 수신 → FDS 저장 기능 추가 - magic_number 변경 (0x20260319), cycles 범위 3~7로 제한 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -12,15 +12,18 @@
|
||||
* - CONFIG_FILE = 0x8010, CONFIG_REC_KEY = 0x7010 으로 단일 레코드를 관리한다.
|
||||
*
|
||||
* [config_data_t 구조체 필드]
|
||||
* - magic(4B) : 포맷 확인용 매직 넘버 (MAGIC = 0x20231226)
|
||||
* - hw_no(12B) : 하드웨어 번호 (BLE 명령으로 설정)
|
||||
* - serial_no(12B) : 시리얼 번호 (기본값: "VB026030000")
|
||||
* - passkey(6B) : BLE 페어링용 정적 패스키
|
||||
* - bond_delete(1B) : 본딩 데이터 삭제 플래그
|
||||
* - reset_status(1B) : 리셋 상태 값
|
||||
* - pd_adc_cnt : 포토다이오드 ADC 측정 횟수
|
||||
* - pd_delay_us : 포토다이오드 측정 간 지연 시간(us)
|
||||
* - life_cycle : 장치 사용 횟수
|
||||
* - magic(4B) : 포맷 확인용 매직 넘버 (0x20231226 -> 0x20260318(기본값 재생성을 위해 매직넘버 변경))
|
||||
* - hw_no(12B) : 하드웨어 버전 (기본값: "")
|
||||
* - serial_no(12B) : 시리얼 번호 (기본값: "VB026030000")
|
||||
* - passkey(6B) : BLE 페어링용 정적 패스키(기본값: "123456")
|
||||
* - bond_data_delete(1B) : 본딩 데이터 삭제 플래그(기본값: 1)
|
||||
* - reset_status(1B) : 리셋 상태 값(기본값: 99)
|
||||
* - life_cycle(4B) : 장치 사용 횟수(기본값: 0)
|
||||
* - piezo_freq_option : Piezo 송신 펄스 주파수(기본값: 1=2.1MHz)
|
||||
* - piezo_cycles : Piezo 송신 펄스 사이클 수 (기본값: 7)
|
||||
* - piezo_averaging : Piezo 채널당 반복 측정 횟수 (기본값: 5)
|
||||
* - piezo_delay_us : Piezo 송신 펄스 출력 후 ADC 시작 시까지 대기시간(us) (기본값: 10)
|
||||
* - piezo_num_samples : Piezo 측정 ADC 샘플 개수 (기본값: 100)
|
||||
*
|
||||
* [매직 넘버 검증]
|
||||
* - 플래시에서 로드한 데이터의 magic 값이 0x20231226과 일치하는지 확인하여
|
||||
@@ -63,7 +66,7 @@
|
||||
#define CONFIG_REC_KEY (0x7010)
|
||||
|
||||
/* 매직 넘버: 플래시에 저장된 데이터가 유효한 설정인지 판별하는 데 사용 */
|
||||
#define CONFIG_MAGIC_NUMBER_VALUE (0x20260318)
|
||||
#define CONFIG_MAGIC_NUMBER_VALUE (0x20260319)
|
||||
|
||||
/* 전역 설정 데이터 구조체 인스턴스 */
|
||||
config_data_t m_config;
|
||||
@@ -98,7 +101,7 @@ uint8_t static_passkey_dflt[6] = "123456"; /* BLE 패스키 기본값 */
|
||||
* @brief 기본 설정값 초기화
|
||||
*
|
||||
* m_config 구조체의 각 필드를 공장 초기값으로 설정한다.
|
||||
* 플래시에 유효한 설정이 없거나 매직 넘버가 불일치할 때 호출된다.
|
||||
* 플래시에 유효한 설정이 없거나 매직 넘버가 불일치할 때 호출된다.VB0HW0000
|
||||
*/
|
||||
void fds_default_value_set(void)
|
||||
{
|
||||
@@ -310,7 +313,7 @@ void config_load( void )
|
||||
}
|
||||
else
|
||||
{
|
||||
cfg_load_write_new:
|
||||
cfg_load_write_new:
|
||||
DBG_PRINTF("[FDS] New - writing defaults\r\n");
|
||||
/* System config not found (or corrupt); write a new one. */
|
||||
m_config.magic_number = CONFIG_MAGIC_NUMBER_VALUE;
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
#pragma pack(1)
|
||||
typedef struct
|
||||
{
|
||||
uint32_t magic_number; /* 4B - 0x20231226 */
|
||||
uint32_t magic_number; /* 4B - 포맷 확인용 매직 넘버 */
|
||||
char hw_no[12]; /* 12B - HW Version */
|
||||
char serial_no[12]; /* 12B - Serial Number */
|
||||
uint8_t static_passkey[6]; /* 6B - BLE Passkey */
|
||||
@@ -50,9 +50,9 @@ typedef struct
|
||||
/* Piezo 측정 파라미터 - 8B */
|
||||
uint8_t piezo_freq_option; /* 1B - Frequency : 송신 펄스 주파수 (0=1.8M, 1=2.1M, 2=2.0M, 3=1.7M) */
|
||||
uint8_t piezo_cycles; /* 1B - Burst Cycle : 송신 펄스 사이클 수 (3~7) */
|
||||
uint16_t piezo_averaging; /* 2B - 채널당 반복 측정 횟수 */
|
||||
uint16_t piezo_delay_us; /* 2B - 송신 펄스 출력 후 ADC 시작 시까지 대기시간(us) */
|
||||
uint16_t piezo_num_samples; /* 2B - 측정 ADC 샘플 개수(80~140) */
|
||||
uint16_t piezo_averaging; /* 2B - 평균화 수 : 채널당 반복 측정 횟수 (1~10) */
|
||||
uint16_t piezo_delay_us; /* 2B - 대기 시간(Delay) : 송신 펄스 출력 후 ADC 시작 시까지 대기시간 (us) (0~30) */
|
||||
uint16_t piezo_num_samples; /* 2B - 측정 ADC 샘플 개수 (80~140) */
|
||||
} config_data_t; /* Total: 48 bytes - FDS에 저장하는 디바이스 설정 */
|
||||
|
||||
extern config_data_t m_config;
|
||||
|
||||
@@ -441,6 +441,10 @@ static void load_flash_config(void)
|
||||
DBG_PRINTF("[CFG] HW=%.12s S/N=%s passkey=%.6s bond=%d rst=%d\r\n",
|
||||
m_config.hw_no, SERIAL_NO, m_static_passkey, bond_data_delete,
|
||||
m_reset_status);
|
||||
DBG_PRINTF("[CFG] piezo: freq=%u cyc=%u avg=%u delay=%u samples=%u\r\n",
|
||||
m_config.piezo_freq_option, m_config.piezo_cycles,
|
||||
m_config.piezo_averaging, m_config.piezo_delay_us,
|
||||
m_config.piezo_num_samples);
|
||||
}
|
||||
|
||||
/*==============================================================================
|
||||
|
||||
@@ -225,7 +225,7 @@ void dr_piezo_power_on(void)
|
||||
|
||||
m_power_enabled = true;
|
||||
|
||||
DBG_PRINTF("[DR_PIEZO] Power ON: +/-20V ready\r\n");
|
||||
DBG_PRINTF("[PIEZO] Power ON: +/-20V ready\r\n");
|
||||
}
|
||||
|
||||
/* 피에조 전원 OFF: TX 비활성화 후 DC/DC 컨버터 차단 */
|
||||
@@ -237,7 +237,7 @@ void dr_piezo_power_off(void)
|
||||
|
||||
m_power_enabled = false;
|
||||
|
||||
DBG_PRINTF("[DR_PIEZO] Power OFF\r\n");
|
||||
DBG_PRINTF("[PIEZO] Power OFF\r\n");
|
||||
}
|
||||
|
||||
/* 피에조 전원 상태 확인 */
|
||||
@@ -267,7 +267,7 @@ static void dr_piezo_gpio_init(void)
|
||||
/* Initialize MUX control pins */
|
||||
dr_piezo_mux_init();
|
||||
|
||||
DBG_PRINTF("[DR_PIEZO] GPIO init done\r\n");
|
||||
DBG_PRINTF("[PIEZO] GPIO init done\r\n");
|
||||
}
|
||||
|
||||
/* GPIOTE 초기화: P_OUT/N_OUT을 토글 모드로 설정 (PPI 연결 대상) */
|
||||
@@ -291,7 +291,7 @@ static void dr_piezo_gpiote_init(void)
|
||||
);
|
||||
nrf_gpiote_task_enable(GPIOTE_CH_N_OUT);
|
||||
|
||||
DBG_PRINTF("[DR_PIEZO] GPIOTE init done\r\n");
|
||||
DBG_PRINTF("[PIEZO] GPIOTE init done\r\n");
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -732,10 +732,10 @@ void dr_piezo_test_pins(void)
|
||||
/* 시스템 전체 초기화: 전원 ON → TX 드라이버 초기화 */
|
||||
void dr_piezo_system_init(void)
|
||||
{
|
||||
DBG_PRINTF("[DR_PIEZO] System init...\r\n");
|
||||
DBG_PRINTF("[PIEZO] System init...\r\n");
|
||||
dr_piezo_power_on();
|
||||
dr_piezo_init();
|
||||
DBG_PRINTF("[DR_PIEZO] System ready\r\n");
|
||||
DBG_PRINTF("[PIEZO] System ready\r\n");
|
||||
}
|
||||
|
||||
/* 시스템 전체 종료: TX 드라이버 해제 → 전원 OFF */
|
||||
@@ -856,7 +856,7 @@ void dr_piezo_burst_sw(uint8_t cycles)
|
||||
|
||||
uint32_t _d2 = NRF_P1->OUT;
|
||||
|
||||
DBG_PRINTF("[B]S0:%u%u%u\r\n", (_d0>>10)&1, (_d1>>10)&1, (_d2>>10)&1);
|
||||
//DBG_PRINTF("[B]S0:%u%u%u\r\n", (_d0>>10)&1, (_d1>>10)&1, (_d2>>10)&1);
|
||||
|
||||
/* Restore P1 port state (nrf_gpio_cfg_output may clear bits) */
|
||||
NRF_P1->OUT = saved_p1_out;
|
||||
|
||||
Reference in New Issue
Block a user