12#define WAV_PLAYER_FILESYSTEM (1)
15#define MISCCR2_DAC1SEL 0x0040
16#define MISCCR2_DAC0SEL 0x0020
17#define MISCCR2_ADCEN 0x0010
18#define MISCCR2_ADC7EN 0x0008
19#define MISCCR2_ADC3EN 0x0004
22#define ADC_CAL_DAC1 0x0002
23#define ADC_CAL_DAC0 0x0001
26#define DAC_CR_RESET 0x1101
27#define DAC_CR_FILT 0x1000
28#define DAC_CR_WMLVL_M 0x0300
29#define DAC_CR_WMLVL_S 8
30#define DAC_CR_DMA 0x0080
31#define DAC_CR_HSLS 0x0040
32#define DAC_CR_UP 0x0020
33#define DAC_CR_DOWN 0x0010
34#define DAC_CR_AUTO 0x0008
35#define DAC_CR_SYNC 0x0004
36#define DAC_CR_FMT 0x0002
37#define DAC_CR_PDN 0x0001
41#define DAC1_CH0 0x0000
42#define DAC1_CH1 0x0800
43#define DAC1_CH2 0x1000
44#define DAC1_CH3 0x1800
46#define DAC0_CH0 0x0000
47#define DAC0_CH1 0x0008
48#define DAC0_CH2 0x0010
49#define DAC0_CH3 0x0018
52#define DAC1_SRC_PWMA 0x0000
53#define DAC1_SRC_PWMB 0x0100
54#define DAC1_SRC_PWMX 0x0200
55#define DAC1_SRC_PWMTRIG1 0x0300
56#define DAC1_SRC_PWMTRIG0 0x0400
57#define DAC1_SRC_TnOUT 0x0500
58#define DAC1_SRC_TnIN 0x0600
60#define DAC0_SRC_PWMA 0x0000
61#define DAC0_SRC_PWMB 0x0001
62#define DAC0_SRC_PWMX 0x0002
63#define DAC0_SRC_PWMTRIG1 0x0003
64#define DAC0_SRC_PWMTRIG0 0x0004
65#define DAC0_SRC_TnOUT 0x0005
66#define DAC0_SRC_TnIN 0x0006
68#define EDMA_CH_DAC0 62
69#define EDMA_CH_DAC1 63
70#define EDMA_CH_DAC0_INT 0x40000000
71#define EDMA_CH_DAC1_INT 0x80000000
73#define TCD_POOL_SIZE 20
75#define MAX_SAMPLE_RATE 100000
93 uint32_t SubChunkSize;
95 uint16_t ChannelCount;
99 uint16_t BitsPerSample;
106 uint32_t SubChunkSize;
169 struct channelControl
173 uint16_t transfersRem;
174 uint16_t finalTransferSize;
176 volatile dacstruct *dac;
177 volatile edma_tcdstruct *tcd;
183 uint16_t BitsPerSample;
184 uint16_t ChannelCount;
188 struct initialPlaySettings
191 uint16_t transfersRem;
192 uint16_t transferSize;
195 static WavPlayer *s_players[DAC_COUNT];
200 channelControl m_channel[DAC_COUNT];
201 initialPlaySettings m_initSettings[DAC_COUNT];
203 int m_playsRem[DAC_COUNT];
204 timerstruct timerSettings;
205 WAVFILE::WavFile *m_pWav;
206 WAVFILE::RIFFChunk *m_pWav_riff;
207 WAVFILE::formatChunk *m_pWav_fmt;
208 WAVFILE::dataChunk *m_pWav_data;
212 wavError PrepareData();
214 const uint8_t *FindChunk(
const char *chunkID,
const uint8_t *data, uint32_t dataLen);
215 wavError ParseHeader();
217 void PrepChunk_RIFF();
218 void PrepChunk_fmt();
219 void PrepChunk_data();
225 void ISR(
int channelNum);
232 static void RunISR();
233 static void RunSoftMuteISR(uint32_t vector);
235#ifdef WAV_PLAYER_FILESYSTEM
248 wavError OpenFile(
const char *fileName, uint8_t *dataBuffer, uint32_t bufferSize);
263 wavError OpenBuffer(uint8_t *data);
277 wavError SetChannelDAC(
int channel = 0,
int dacNum = 0);
288 wavError SetTimer(
int timerNum = 3);
299 wavError Play(
OS_SEM *wavFinishedSem = NULL);
310 wavError Loop(uint32_t playCount = 0,
OS_SEM *wavFinishedSem = NULL);
321 wavError StopGraceful();
338 wavError ResetBuffer();
349 playState GetState();
NetBurner Real-Time Operating System (NBRTOS) API.
Semaphores are used to control access to shared resources or or to communicate between tasks in a mul...
Definition nbrtos.h:411