lab 1 code

Dependencies:   CMSIS-DSP_for_STM32F746G BSP_DISCO_F746NG

Revision:
18:255d15af49f2
Parent:
17:eb85a2387dd4
Child:
19:479f611941a8
--- a/main.cpp	Tue Dec 31 17:43:38 2019 +0000
+++ b/main.cpp	Tue Dec 31 18:43:43 2019 +0000
@@ -25,9 +25,9 @@
     BUFFER_OFFSET_FULL = 2,
 } BUFFER_StateTypeDef;
 
-
-#define HALF_AUDIO_BLOCK_SIZE           ((uint32_t)128)         // Number of samples (L and R) @ Frequency
-#define AUDIO_BLOCK_SIZE                ((uint32_t)256)
+#define HALF_AUDIO_BLOCK_SAMPLES        ((uint32_t)128)          // Number of samples (L and R) in half block
+#define HALF_AUDIO_BLOCK_SIZE           ((uint32_t)256)         // Number of samples (L and R) in full block
+#define AUDIO_BLOCK_SIZE                ((uint32_t)512)
 
 #define SDRAM_DEVICE_ADDR_AUDIO_MEM     ((uint32_t)0xC0400000)
 #define AUDIO_BUFFER_IN                 SDRAM_DEVICE_ADDR_AUDIO_MEM
@@ -109,12 +109,12 @@
         timer.reset();
 
         /* Plot traces of first half block recording */   
-        Erase_Trace(OSC_START_X_POS, OSC_Y_POS, HALF_AUDIO_BLOCK_SIZE);
-        Draw_Trace(OSC_START_X_POS, OSC_Y_POS, (uint16_t *) AUDIO_BUFFER_IN, HALF_AUDIO_BLOCK_SIZE);
-
+        Erase_Trace(OSC_START_X_POS, OSC_Y_POS, HALF_AUDIO_BLOCK_SAMPLES);
+        Draw_Trace(OSC_START_X_POS, OSC_Y_POS, (uint16_t *) AUDIO_BUFFER_IN, HALF_AUDIO_BLOCK_SAMPLES);
+        
         /* Convert data to floating point representation for processing */
-        Audio_to_Float((uint16_t *) AUDIO_BUFFER_IN, (float *) L_channel_float, (float *) R_channel_float, HALF_AUDIO_BLOCK_SIZE);        
-        Float_to_Audio((float *) L_channel_float, (float *) R_channel_float, (uint16_t *) Processed_audio, HALF_AUDIO_BLOCK_SIZE);
+        //Audio_to_Float((uint16_t *) AUDIO_BUFFER_IN, (float *) L_channel_float, (float *) R_channel_float, HALF_AUDIO_BLOCK_SAMPLES);        
+        //Float_to_Audio((float *) L_channel_float, (float *) R_channel_float, (uint16_t *) Processed_audio, HALF_AUDIO_BLOCK_SAMPLES);
 
         /* Copy recorded 1st half block into the audio buffer that goes out */
         memcpy((uint16_t *)(AUDIO_BUFFER_OUT), (uint16_t *)(AUDIO_BUFFER_IN), AUDIO_BLOCK_SIZE);
@@ -128,8 +128,8 @@
         while (audio_rec_buffer_state != BUFFER_OFFSET_FULL) {}
         
         /* Plot traces of second half block recording */
-        //Erase_Trace(OSC_START_X_POS+HALF_AUDIO_BLOCK_SIZE, OSC_Y_POS, HALF_AUDIO_BLOCK_SIZE);
-        //Draw_Trace(OSC_START_X_POS+HALF_AUDIO_BLOCK_SIZE, OSC_Y_POS, (uint16_t *) AUDIO_BUFFER_IN + (AUDIO_BLOCK_SIZE), HALF_AUDIO_BLOCK_SIZE);
+        Erase_Trace(OSC_START_X_POS+HALF_AUDIO_BLOCK_SAMPLES, OSC_Y_POS, HALF_AUDIO_BLOCK_SAMPLES);
+        Draw_Trace(OSC_START_X_POS+ HALF_AUDIO_BLOCK_SAMPLES, OSC_Y_POS, (uint16_t *) (AUDIO_BUFFER_IN + (AUDIO_BLOCK_SIZE)), HALF_AUDIO_BLOCK_SAMPLES);
                 
         /* Compute important cycle information and display it*/
         counter++;
@@ -141,7 +141,7 @@
 
         /* Copy recorded 2nd half block into audio output buffer */
         memcpy((uint16_t *)(AUDIO_BUFFER_OUT + (AUDIO_BLOCK_SIZE)), (uint16_t *)(AUDIO_BUFFER_IN + (AUDIO_BLOCK_SIZE)), AUDIO_BLOCK_SIZE);
-    
+            
         /* Change the recording buffer state to reflect the status of the buffer */   
         audio_rec_buffer_state = BUFFER_OFFSET_NONE;
         
@@ -186,7 +186,7 @@
 {
     uint16_t i;
     uint32_t data_value;
-    uint32_t* mem_address;
+    uint16_t* mem_address;
     char buf[10];
     int16_t L_audio_value;
     int16_t R_audio_value;
@@ -194,13 +194,20 @@
     //data_value = *((uint32_t*) Mem_start);
     //L_audio_value = (int16_t) ((data_value >> 16) & 0xFFFF);
     //R_audio_value = (int16_t) (data_value & 0xFFFF);
+    
+    mem_address = Mem_start;
       
     for (i=0; i<Length; i++)
    {
-        mem_address = (uint32_t*) Mem_start + i;
-        data_value = *((uint32_t*) mem_address);
-        L_audio_value = (int16_t) ((data_value >> 16) & 0xFFFF);
-        R_audio_value = (int16_t) (data_value & 0xFFFF);
+        //mem_address = (uint32_t*) Mem_start + i;
+        //data_value = *((uint16_t*) mem_address);
+        //L_audio_value = (int16_t) ((data_value >> 16) & 0xFFFF);
+        //R_audio_value = (int16_t) (data_value & 0xFFFF);
+        
+        L_audio_value = (int16_t) *mem_address;
+        mem_address++;
+        R_audio_value = (int16_t) *mem_address;
+        mem_address++;
         
         L_audio_value = L_audio_value / 100;
         R_audio_value = R_audio_value / 100;