play raw file out of discovery working
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 4 Jun 2013 03:09:08 +0000 (03:09 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 4 Jun 2013 03:09:08 +0000 (03:09 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@1308 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/src/fifo.c
codec2-dev/stm32/src/dac_play.c
codec2-dev/stm32/src/stm32f4_dac.c
codec2-dev/unittest/mksine.c

index be4995e8b75615d25f43a43fe63e3be63f0a5520..566d77ab700c33ce5393bf90648dc947417254ef 100644 (file)
@@ -100,7 +100,6 @@ int fifo_read(struct FIFO *fifo, short data[], int n)
 {
     int            i;
     short         *pdata;
-    short         *pin = fifo->pin;
     short         *pout = fifo->pout;
 
     assert(fifo != NULL);
index 43263ec7ca480641b5db0828bbe98275fe36f8ce..3e08abbdfb0137e77e3c2741ef4dac665d0cadc2 100644 (file)
 #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
index b9b6df5c8a5e1d553425fe6d754d6fb66aae2e52..31c40c1e49cac5adbeaa60277b9b9f75daa05f24 100644 (file)
@@ -35,8 +35,8 @@
 #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
@@ -47,6 +47,8 @@ unsigned short dac_buf[DAC_BUF_SZ];
 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
@@ -209,8 +211,10 @@ void DMA1_Stream6_IRQHandler(void) {
     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
@@ -229,8 +233,10 @@ void DMA1_Stream6_IRQHandler(void) {
     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
index 932d361aa71782452d56899b3a453f97034afa31..f501f06a9018a0c3a9c757b1a109fe9630ac194f 100644 (file)
@@ -13,7 +13,7 @@
 
 #define TWO_PI     6.283185307
 #define FS         8000.0
-#define AMP        1000.0
+#define AMP        32767.0
 
 int main(int argc, char *argv[]) {
     FILE *f;