working ADC input + FFT analysis + py logger
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
ld2: led_0 {
|
||||
gpios = <&gpioa 5 GPIO_ACTIVE_HIGH>; /* LD2 -> PA5 */
|
||||
gpios = <&gpioa 5 GPIO_ACTIVE_HIGH>; // LD2 -> PA5
|
||||
label = "LD2";
|
||||
};
|
||||
};
|
||||
@@ -20,4 +20,50 @@
|
||||
|
||||
&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 = <ADC_ACQ_TIME(ADC_ACQ_TIME_TICKS, 641)>;
|
||||
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";
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user