1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
55
56
57
64
65
66
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
93
94
99
100
101
106
107
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
142
143
147
148
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/* ... */
#ifndef __MAIN_H
#define __MAIN_H
#include "stdio.h"
#include "usbh_core.h"
#include "stm32f4xx_hal.h"
#include "stm32446e_eval.h"
#include "stm32446e_eval_io.h"
#include "stm32446e_eval_audio.h"
#include "lcd_log.h"
#include "ff.h"
#include "ff_gen_drv.h"
#include "usbh_diskio_dma.h"
10 includes
Includes
#define AUDIO_OUT_BUFFER_SIZE 8192
#define AUDIO_IN_PCM_BUFFER_SIZE 4*2304
#define AUDIO_IN_PDM_BUFFER_SIZE INTERNAL_BUFF_SIZE
#define FILEMGR_LIST_DEPDTH 24
#define FILEMGR_FILE_NAME_SIZE 40
#define FILEMGR_FULL_PATH_SIZE 256
#define FILEMGR_MAX_LEVEL 4
#define FILETYPE_DIR 0
#define FILETYPE_FILE 1
9 defines
Exported Defines
typedef enum {
APPLICATION_IDLE = 0,
APPLICATION_START,
APPLICATION_READY,
APPLICATION_DISCONNECT,
...}AUDIO_ApplicationTypeDef;
typedef enum {
AUDIO_DEMO_IDLE = 0,
AUDIO_DEMO_WAIT,
AUDIO_DEMO_EXPLORE,
AUDIO_DEMO_PLAYBACK,
AUDIO_DEMO_IN,
...}AUDIO_Demo_State;
typedef struct _DemoStateMachine {
__IO AUDIO_Demo_State state;
__IO uint8_t select;
...}AUDIO_DEMO_StateMachine;
typedef enum {
AUDIO_STATE_IDLE = 0,
AUDIO_STATE_WAIT,
AUDIO_STATE_INIT,
AUDIO_STATE_PLAY,
AUDIO_STATE_RECORD,
AUDIO_STATE_NEXT,
AUDIO_STATE_PREVIOUS,
AUDIO_STATE_FORWARD,
AUDIO_STATE_BACKWARD,
AUDIO_STATE_STOP,
AUDIO_STATE_PAUSE,
AUDIO_STATE_RESUME,
AUDIO_STATE_VOLUME_UP,
AUDIO_STATE_VOLUME_DOWN,
AUDIO_STATE_ERROR,
...}AUDIO_PLAYBACK_StateTypeDef;
typedef enum {
AUDIO_SELECT_MENU = 0,
AUDIO_PLAYBACK_CONTROL,
...}AUDIO_DEMO_SelectMode;
typedef enum {
BUFFER_OFFSET_NONE = 0,
BUFFER_OFFSET_HALF,
BUFFER_OFFSET_FULL,
...}BUFFER_StateTypeDef;
typedef struct {
uint8_t buff[AUDIO_OUT_BUFFER_SIZE];
BUFFER_StateTypeDef state;
uint32_t fptr;
...}AUDIO_OUT_BufferTypeDef;
typedef enum {
BUFFER_EMPTY = 0,
BUFFER_FULL,
...}WR_BUFFER_StateTypeDef;
typedef struct {
uint16_t pdm_buff[AUDIO_IN_PDM_BUFFER_SIZE];
uint16_t pcm_buff[AUDIO_IN_PCM_BUFFER_SIZE];
uint32_t pcm_ptr;
WR_BUFFER_StateTypeDef wr_state;
uint32_t offset;
uint32_t fptr;
...}AUDIO_IN_BufferTypeDef;
typedef struct {
uint32_t ChunkID;
uint32_t FileSize;
uint32_t FileFormat;
uint32_t SubChunk1ID;
uint32_t SubChunk1Size;
uint16_t AudioFormat;
uint16_t NbrChannels;
uint32_t SampleRate;
uint32_t ByteRate;
uint16_t BlockAlign;
uint16_t BitPerSample;
uint32_t SubChunk2ID;
uint32_t SubChunk2Size;
...}WAVE_FormatTypeDef;
typedef struct _FILELIST_LineTypeDef {
uint8_t type;
uint8_t name[FILEMGR_FILE_NAME_SIZE];
...}FILELIST_LineTypeDef;
typedef struct _FILELIST_FileTypeDef {
FILELIST_LineTypeDef file[FILEMGR_LIST_DEPDTH] ;
uint16_t ptr;
...}FILELIST_FileTypeDef;
typedef enum {
AUDIO_ERROR_NONE = 0,
AUDIO_ERROR_IO,
AUDIO_ERROR_EOF,
AUDIO_ERROR_INVALID_VALUE,
...}AUDIO_ErrorTypeDef;
extern USBH_HandleTypeDef hUSBHost;
extern AUDIO_ApplicationTypeDef appli_state;
extern AUDIO_PLAYBACK_StateTypeDef AudioState;
extern FATFS USBH_fatfs;
extern FIL WavFile;
Exported types
void AUDIO_MenuInit(void);
void AUDIO_MenuProcess(void);
uint8_t AUDIO_ShowWavFiles(void);
uint8_t AUDIO_StorageInit(void);
FRESULT AUDIO_StorageParse(void);
uint16_t AUDIO_GetWavObjectNumber(void);
void Toggle_Leds(void);
Exported functions
/* ... */#endif