feat(audio): I2S3 audio amplifier driver — Issue #143 #173
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "sl-firmware/issue-143-audio-amp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Closes #143.
Adds I2S3 audio output driver for MAX98357A / PCM5102A class-D amplifiers.
Changes
New files
include/audio.h— public API:audio_init,audio_mute,audio_set_volume,audio_play_tone,audio_write_pcm,audio_tick,audio_is_playing;AudioToneenum (STARTUP/ARM/DISARM/FAULT/BEEP_SHORT/BEEP_LONG)src/audio.c— I2S3 driver: PLLI2S N=192/R=2 → 96 MHz → FS≈22058 Hz (<0.04% error), GPIO PC10/PA15/PB5 AF6, mute=PC5, DMA1_Stream7_Ch0 circular, ping-pong ISR callbacks, square-wave tone generator, tone sequencer, 4096-sample SPSC PCM FIFOtest/test_audio.py— 45 tests, all passingModified files
include/config.h— AUDIO_BCLK/LRCK/DOUT/MUTE pin defines; AUDIO_SAMPLE_RATE=22050, AUDIO_BUF_HALF=441, AUDIO_VOLUME_DEFAULT=80include/jlink.h— JLINK_CMD_AUDIO=0x08 (PCM audio chunk from Jetson)src/jlink.c—#include "audio.h"; JLINK_MAX_PAYLOAD 64→252 (126 int16 samples/frame); AUDIO dispatch case callsaudio_write_pcm()src/main.c—audio_init()+ STARTUP tone on boot; ARM tone after arming; FAULT tone on tilt-fault edge;audio_tick(now)in main loopHardware notes
Test results
4827d3cd55toc3ada4a156