/ { aliases { /* alias used by DT_ALIAS(led0) in app code */ led0 = &ld2; }; /* simple gpio-leds node */ leds { compatible = "gpio-leds"; ld2: led_0 { gpios = <&gpioa 5 GPIO_ACTIVE_HIGH>; // LD2 -> PA5 label = "LD2"; }; }; }; &gpioa { status = "okay"; }; &gpioc { status = "okay"; }; /* ── Audio ADC ───────────────────────────────────────── * * ADC1 is already enabled by the board DTS with: * - pinctrl on PA0 (ADC1_IN1) — Arduino header A0 * - SYNC clock, prescaler /4 → 42.5 MHz ADC clock * * We just add the channel config here. * * Conversion time = (641 + 12.5) / 42.5 MHz = 15.4 µs * Max sample rate ≈ 65 kHz — plenty for 44.1 kHz * Actual 44.1 kHz rate is set by a timer in code. */ &adc1 { #address-cells = <1>; #size-cells = <0>; channel@1 { reg = <1>; // IN1 = PA0 zephyr,gain = "ADC_GAIN_1"; zephyr,reference = "ADC_REF_INTERNAL"; zephyr,acquisition-time = ; zephyr,resolution = <12>; }; }; /* ── TIM6 — ADC sample clock ───────────────────────── * * Basic timer, no PWM/capture — just counting. * TRGO output triggers ADC1 conversions. * * Timer clock = 170 MHz (APB1, no prescaler) * ARR = (170,000,000 / 44,100) - 1 = 3854 * Actual rate = 170,000,000 / 3855 = ~44,099 Hz * * Trigger routing (TIM6_TRGO → ADC1) is done in code * via STM32 LL/HAL — devicetree just enables the clock. */ &timers6 { status = "okay"; st,prescaler = <0>; counter { status = "okay"; }; };