
lab 1 code
Dependencies: CMSIS-DSP_for_STM32F746G BSP_DISCO_F746NG
Diff: main.cpp
- 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;