
lab 1 code
Dependencies: CMSIS-DSP_for_STM32F746G BSP_DISCO_F746NG
Diff: main.cpp
- Revision:
- 16:b7dca59ab076
- Parent:
- 15:83e40ccc1b1f
- Child:
- 17:eb85a2387dd4
--- a/main.cpp Mon Dec 30 20:18:17 2019 +0000 +++ b/main.cpp Tue Dec 31 17:27:20 2019 +0000 @@ -44,15 +44,15 @@ volatile uint32_t audio_rec_buffer_state = BUFFER_OFFSET_NONE; static void Erase_Trace(uint16_t Xpos, uint16_t L_Ypos, uint16_t R_Ypos, uint16_t Length); static void Draw_Trace(uint16_t Xpos, uint16_t L_Ypos, uint16_t R_Ypos, uint16_t* Mem_start, uint16_t Length); -static void Audio_to_Float(uint32_t* buffer_in, float* L_out, float* R_out, uint16_t Length); -static void Float_to_Audio(uint16_t* L_in, uint16_t * R_in, uint16_t* buffer_out, uint16_t Length); +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 */ float L_channel_float[HALF_AUDIO_BLOCK_SIZE]; float R_channel_float[HALF_AUDIO_BLOCK_SIZE]; /* Back conversion to integer */ -int32_t Processed_audio[HALF_AUDIO_BLOCK_SIZE]; +uint16_t Processed_audio[HALF_AUDIO_BLOCK_SIZE]; /* Useful variables during looping */ uint32_t counter = 0; @@ -112,20 +112,11 @@ Draw_Trace(OSC_START_X_POS, L_CHANNEL_Y_POS, R_CHANNEL_Y_POS, (uint16_t *) AUDIO_BUFFER_IN, HALF_AUDIO_BLOCK_SIZE); /* Convert data to floating point representation for processing */ - Audio_to_Float((uint32_t *) AUDIO_BUFFER_IN, (float*) &L_channel_float, (float*) &R_channel_float, HALF_AUDIO_BLOCK_SIZE); - - Float_to_Audio((uint16_t *) &L_channel_float, (uint16_t *) &R_channel_float, (uint16_t *) Processed_audio, HALF_AUDIO_BLOCK_SIZE); - - uint32_t data_value = *((uint32_t*) AUDIO_BUFFER_IN); - int16_t L_audio_value = (int16_t) ((data_value >> 16) & 0xFFFF); - //L_channel_float[1] = 10; - sprintf(buf, "Lf:%10.2f Li:%6d", L_channel_float[0], L_audio_value); - BSP_LCD_DisplayStringAt(0, 155, (uint8_t *) buf, LEFT_MODE); - + 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); /* 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); - memcpy((uint16_t *)(AUDIO_BUFFER_OUT), (uint16_t *)(Processed_audio), AUDIO_BLOCK_SIZE); + memcpy((uint16_t *)(AUDIO_BUFFER_OUT), (uint16_t *)(AUDIO_BUFFER_IN), AUDIO_BLOCK_SIZE); /* Capture the timing of the first half processing */ first_half_time = timer.read_us(); @@ -202,18 +193,9 @@ 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); - - //sprintf(buf, "%12d", data_value); - //BSP_LCD_DisplayStringAt(0, 60, (uint8_t *) buf, LEFT_MODE); - - //sprintf(buf, "%12d", L_audio_value); - //BSP_LCD_DisplayStringAt(0, 60, (uint8_t *) buf, LEFT_MODE); - - //sprintf(buf, "%12d", R_audio_value); - //BSP_LCD_DisplayStringAt(0, 80, (uint8_t *) buf, LEFT_MODE); + //data_value = *((uint32_t*) Mem_start); + //L_audio_value = (int16_t) ((data_value >> 16) & 0xFFFF); + //R_audio_value = (int16_t) (data_value & 0xFFFF); for (i=0; i<Length; i++) { @@ -225,14 +207,6 @@ L_audio_value = L_audio_value / 50; R_audio_value = R_audio_value / 50; - //sprintf(buf, "%12d", L_audio_value); - //BSP_LCD_DisplayStringAt(0, 60, (uint8_t *) buf, LEFT_MODE); - - //sprintf(buf, "%12d", R_audio_value); - //BSP_LCD_DisplayStringAt(0, 80, (uint8_t *) buf, LEFT_MODE); - - - //L_audio_value = -i; if (L_audio_value > AUDIO_DRAW_LIMIT) {L_audio_value = AUDIO_DRAW_LIMIT;} else if (L_audio_value < -AUDIO_DRAW_LIMIT) {L_audio_value = -AUDIO_DRAW_LIMIT;} @@ -253,39 +227,28 @@ * @param Length: length of data to convert * @retval None */ -void Audio_to_Float(uint32_t* buffer_in, float* L_out, float* R_out, uint16_t Length) +void Audio_to_Float(uint16_t* buffer_in, float* L_out, float* R_out, uint16_t Length) { uint16_t i; uint32_t data_value; - uint32_t* audio_mem_address; - float* L_chan_mem_address; - float* R_chan_mem_address; + uint16_t* audio_mem_address; + uint16_t* L_chan_mem_address; + uint16_t* R_chan_mem_address; float L_audio_value; float R_audio_value; - int16_t L_audio_value_int; - for (i=0; i<Length; i++) { - audio_mem_address = (uint32_t*) buffer_in + i; - L_chan_mem_address = (float*) L_out + i; - R_chan_mem_address = (float*) R_out + i; - data_value = *((uint32_t*) audio_mem_address); + 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)); - L_audio_value_int = ((int16_t) ((data_value >> 16) & 0xFFFF)); R_audio_value = (float) ((int16_t) (data_value & 0xFFFF)); - *L_chan_mem_address = 2 * L_audio_value; - //*L_chan_mem_address = 20; + *L_chan_mem_address = L_audio_value; *R_chan_mem_address = R_audio_value; } - - //sprintf(buf, "Lf:%10.2f Li:%6d", L_audio_value, data_value); - //L_audio_value_int = ((int16_t) (data_value & 0xFFFF)); - //L_audio_value_int = (int16_t) ((data_value >> 16) & 0xFFFF); - //sprintf(buf, "Lavi:%6d Li:%6d", L_audio_value_int, data_value); - //BSP_LCD_DisplayStringAt(0, 155, (uint8_t *) buf, LEFT_MODE); - } /** @@ -296,7 +259,7 @@ * @param Length: length of data to convert * @retval None */ -void Float_to_Audio(uint16_t* L_in, uint16_t * R_in, uint16_t* buffer_out, uint16_t Length) +void Float_to_Audio(float* L_in, float* R_in, uint16_t* buffer_out, uint16_t Length) { uint16_t i; uint32_t data_value;