Echo ADC fast capture의 샘플별 timeout 카운터 제거

- 수동 CS GPIO 제어 유지
- 샘플 간 CS/SPI 타이밍은 유지하면서 per-samples poling overhead를 줄이기 위함
This commit is contained in:
2026-06-19 11:41:59 +09:00
parent a6213faca8
commit 543bb29ad2
+2 -13
View File
@@ -30,7 +30,6 @@ static bool echo_adc_initialized;
/* ADC 원본 수신 버퍼 */
static uint8_t raw_capture[ECHO_ADC_MAX_SAMPLES * 2];
/* GPIO 포트 레지스터 선택 */
static NRF_GPIO_Type *gpio_reg_for_spec(const struct gpio_dt_spec *spec)
{
return (spec->port == DEVICE_DT_GET(DT_NODELABEL(gpio1))) ? NRF_P1 : NRF_P0;
@@ -112,27 +111,17 @@ static int echo_adc_capture_fast(uint16_t *samples, uint16_t num_samples)
for (uint16_t i = 0; i < num_samples; i++)
{
/* CS 하강 후 2바이트 수신 */
cs_port->OUTCLR = cs_mask;
spim->RXD.PTR = (uint32_t)&raw_capture[i * 2U];
spim->EVENTS_END = 0;
spim->TASKS_START = 1;
/* 전송 완료 대기 */
uint32_t timeout = 10000U;
while (!spim->EVENTS_END && (timeout > 0U))
while (!spim->EVENTS_END)
{
timeout--;
}
/* CS 복귀 */
cs_port->OUTSET = cs_mask;
if (timeout == 0U)
{
DBG_PRINTF("[ECHO] fast capture timeout\r\n");
return -ETIMEDOUT;
}
}
echo_adc_unpack_samples(samples, num_samples);
@@ -182,7 +171,7 @@ int echo_adc_init(void)
}
echo_adc_initialized = true;
DBG_PRINTF("[ECHO] SPIM3 init OK\r\n");
//DBG_PRINTF("[ECHO] SPIM3 init OK\r\n");
return 0;
}