#define fread gdb_stdio_fread\r
#define fwrite gdb_stdio_fwrite\r
\r
-#define N1 24000\r
-#define N2 320\r
+#define N 2000\r
\r
int main(void) {\r
- short *buf, *pbuf;\r
+ short buf[N];\r
FILE *fin;\r
- int i, nframes;\r
\r
- buf = (short*)malloc(N1*sizeof(short));\r
dac_open();\r
\r
- fin = fopen("stm_in.raw", "rb");\r
- if (fin == NULL) {\r
- printf("Error opening input file: stm_in.raw\n\nTerminating....\n");\r
- exit(1);\r
- }\r
- fread(buf, sizeof(short), N1, fin);\r
- fclose(fin);\r
-\r
- nframes = N1/N2;\r
while(1) {\r
+ fin = fopen("stm_in.raw", "rb");\r
+ if (fin == NULL) {\r
+ printf("Error opening input file: stm_in.raw\n\nTerminating....\n");\r
+ exit(1);\r
+ }\r
+ \r
printf("Starting!\n");\r
- pbuf = buf;\r
- for(i=0; i<nframes; i++) {\r
- while(dac_write(pbuf, N2) == -1);\r
- pbuf += N2;\r
- } \r
+\r
+ while(fread(buf, sizeof(short), N, fin) == N) {\r
+ while(dac_write(buf, N) == -1);\r
+ } \r
+\r
printf("Finished!\n");\r
+ fclose(fin);\r
}\r
+\r
+ /* let FIFO empty */\r
+\r
+ while(1);\r
}\r
\r
#define DAC_DHR12R2_ADDRESS 0x40007414\r
#define DAC_DHR12L2_ADDRESS 0x40007418\r
\r
-#define DAC_BUF_SZ 320\r
-#define FIFO_SZ 2000\r
+#define DAC_BUF_SZ 320\r
+#define FIFO_SZ 8000\r
#define DAC_MAX 4096\r
\r
DAC_InitTypeDef DAC_InitStructure;\r
static void TIM6_Config(void);\r
static void DAC_Ch2_Config(void);\r
\r
+int dac_underflow;\r
+\r
void dac_open(void) {\r
\r
memset(dac_buf, 32768, sizeof(short)*DAC_BUF_SZ);\r
if(DMA_GetITStatus(DMA1_Stream6, DMA_IT_HTIF6) != RESET) {\r
/* fill first half from fifo */\r
\r
- if (fifo_read(DMA1_Stream6_fifo, signed_buf, DAC_BUF_SZ/2) == -1)\r
+ if (fifo_read(DMA1_Stream6_fifo, signed_buf, DAC_BUF_SZ/2) == -1) {\r
memset(signed_buf, 0, sizeof(short)*DAC_BUF_SZ/2);\r
+ dac_underflow++;\r
+ }\r
\r
/* convert to unsigned */\r
\r
if(DMA_GetITStatus(DMA1_Stream6, DMA_IT_TCIF6) != RESET) {\r
/* fill second half from fifo */\r
\r
- if (fifo_read(DMA1_Stream6_fifo, signed_buf, DAC_BUF_SZ/2) == -1)\r
+ if (fifo_read(DMA1_Stream6_fifo, signed_buf, DAC_BUF_SZ/2) == -1) {\r
memset(signed_buf, 0, sizeof(short)*DAC_BUF_SZ/2);\r
+ dac_underflow++;\r
+ }\r
\r
/* convert to unsigned */\r
\r