
lab 1 code
Dependencies: CMSIS-DSP_for_STM32F746G BSP_DISCO_F746NG
Diff: main.cpp
- Revision:
- 20:2ecdf687a2d1
- Parent:
- 19:479f611941a8
- Child:
- 21:4dbfda694c0d
--- a/main.cpp Tue Dec 31 18:52:01 2019 +0000 +++ b/main.cpp Tue Dec 31 19:22:11 2019 +0000 @@ -45,12 +45,15 @@ static void Audio_to_Float(uint16_t* buffer_in, float* L_out, float* R_out, uint16_t Length); static void Float_to_Audio(float* L_in, float* R_in, uint16_t* buffer_out, uint16_t Length); -/* To do converstion to float */ +/* To do conversion to float */ float L_channel_float[AUDIO_BLOCK_SAMPLES]; float R_channel_float[AUDIO_BLOCK_SAMPLES]; +float *L_channel_float_p = &L_channel_float[0]; +float *R_channel_float_p = &R_channel_float[0]; /* Back conversion to integer */ -uint16_t Processed_audio[AUDIO_BLOCK_SAMPLES * 2]; +uint16_t Processed_audio[AUDIO_BLOCK_SAMPLES * 2]; +uint16_t *Processed_audio_p = &Processed_audio[0]; /* Useful variables during looping */ uint32_t counter = 0; @@ -112,7 +115,11 @@ Draw_Trace(OSC_START_X_POS, OSC_Y_POS, (uint16_t *) AUDIO_BUFFER_IN, 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, AUDIO_BLOCK_SAMPLES); + Audio_to_Float((uint16_t *) AUDIO_BUFFER_IN, L_channel_float_p, R_channel_float_p, AUDIO_BLOCK_SAMPLES); + + sprintf(buf, "Lf[0]:%8.1f Ai[0]:%6d ", L_channel_float[0], ((int16_t) *((uint16_t *) AUDIO_BUFFER_IN))); + BSP_LCD_DisplayStringAt(0, 150, (uint8_t *) buf, LEFT_MODE); + //Float_to_Audio((float *) L_channel_float, (float *) R_channel_float, (uint16_t *) Processed_audio, AUDIO_BLOCK_SAMPLES); /* Copy recorded 1st half block into the audio buffer that goes out */ @@ -184,25 +191,15 @@ void Draw_Trace(uint16_t Xpos, uint16_t Ypos, uint16_t* Mem_start, uint16_t Length) { uint16_t i; - uint32_t data_value; uint16_t* mem_address; char buf[10]; int16_t L_audio_value; int16_t R_audio_value; - - //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 = *((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; @@ -234,24 +231,28 @@ void Audio_to_Float(uint16_t* buffer_in, float* L_out, float* R_out, uint16_t Length) { uint16_t i; - uint32_t data_value; uint16_t* audio_mem_address; - uint16_t* L_chan_mem_address; - uint16_t* R_chan_mem_address; + float* L_chan_mem_address; + float* R_chan_mem_address; float L_audio_value; float R_audio_value; + + audio_mem_address = buffer_in; + L_chan_mem_address = L_out; + R_chan_mem_address = R_out; for (i=0; i<Length; i++) { - audio_mem_address = (uint16_t*) buffer_in + i; - L_chan_mem_address = (uint16_t*) L_out + i; - R_chan_mem_address = (uint16_t*) R_out + i; - data_value = *((uint16_t*) audio_mem_address); - L_audio_value = (float) ((int16_t) ((data_value >> 16) & 0xFFFF)); - R_audio_value = (float) ((int16_t) (data_value & 0xFFFF)); + L_audio_value = (float) ((int16_t) *audio_mem_address); + audio_mem_address++; + R_audio_value = (float) ((int16_t) *audio_mem_address); + audio_mem_address++; *L_chan_mem_address = L_audio_value; + L_chan_mem_address++; + *R_chan_mem_address = R_audio_value; + R_chan_mem_address++; } }