2024-03-29 09:37 AM
Hello,
I'm trying AudioRecord_demo() on STM32H750B Discovery and nothing happens. Touchscreen demos are working, not sure where to start checking things out.
It seems that everything is already properly set to Microphone input and HeadPhone output.
Has anyone tried this demo ?
Thanks in advance,
regards,
Rob.
2024-03-29 09:47 AM
Hello,
Which demo you're referring to? this one: Projects\STM32H750B-DK\Examples\BSP ?
2024-03-29 10:40 AM
HAve taken this release and have created main, that calls AudioRecord_demo();
https://github.com/STMicroelectronics/stm32h750b-dk-bsp
Touchscreen demos work out of the box. Not sure what is needed to get audio demo working.
Thanks in advance,
regards,
Rob.
2024-03-29 11:48 AM - edited 2024-03-29 11:49 AM
As I understood you isolated the audio section from the original demo and created a standalone audio demo and the original demo is working fine. Do you confirm?
2024-03-29 03:59 PM - edited 2024-03-30 01:47 AM
I've found somewhere BSP project and all drivers are included in BSP - but it seems like audio_record is from somewhere else, probably some example... Touchscreen demos are probably also imported, all demos 1,2,3 work out of the box, audio_play demo crashes (but that's probably because of missing audio file). AudioRecord_demo displays everything normally on LCD, but it doesn't do anything.
I'd like to learn, how to check what is wrong - maybe only settings. There should be some status info, about the state, errors etc...
There is probably something missing... Is there any working audio code for STM32H750B ?
Regards,
Rob.
The code I'm calling :
/**
* @brief Audio Record and Playback multi-buffer mode test
* Record:
* - Audio IN instance: 1 (DFSDM)
* - Audio IN Device : digital MIC1 and MIC2
* - Audio IN number of channel : 2
* Playback:
* - Audio OUT instance: 0 (SAI)
* - Audio OUT Device : HDMI
* @retval None
*/
void AudioRecord_demo(void)
{
uint32_t channel_nbr = 2;
int32_t Status;
uint32_t x_size, y_size;
BSP_LCD_GetXSize(0, &x_size);
BSP_LCD_GetYSize(0, &y_size);
/* Clear the LCD */
UTIL_LCD_Clear(UTIL_LCD_COLOR_WHITE);
/* Set Audio Demo description */
UTIL_LCD_FillRect(0, 0, x_size, 90, UTIL_LCD_COLOR_BLUE);
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_WHITE);
UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_BLUE);
UTIL_LCD_SetFont(&Font24);
UTIL_LCD_DisplayStringAt(0, 0, (uint8_t *)"AUDIO RECORD SAI PDM EXAMPLE", CENTER_MODE);
UTIL_LCD_SetFont(&Font16);
UTIL_LCD_DisplayStringAt(0, 24, (uint8_t *)"Microphone IN, HeadPhone OUT ", CENTER_MODE);
UTIL_LCD_DisplayStringAt(0, 40, (uint8_t *)"Press User button for exit", CENTER_MODE);
/* Set the LCD Text Color */
UTIL_LCD_DrawRect(10, 100, x_size - 20, y_size - 110, UTIL_LCD_COLOR_BLUE);
UTIL_LCD_DrawRect(11, 101, x_size - 22, y_size - 112, UTIL_LCD_COLOR_BLUE);
AudioFreq_ptr = AudioFreq+2; /* AUDIO_FREQUENCY_16K; */
AudioOutInit.Device = AUDIO_OUT_DEVICE_HEADPHONE;
AudioOutInit.ChannelsNbr = channel_nbr;
AudioOutInit.SampleRate = *AudioFreq_ptr;
AudioOutInit.BitsPerSample = AUDIO_RESOLUTION_16B;
AudioOutInit.Volume = VolumeLevel;
AudioInInit.Device = AUDIO_IN_DEVICE_DIGITAL_MIC;
AudioInInit.ChannelsNbr = channel_nbr;
AudioInInit.SampleRate = *AudioFreq_ptr;
AudioInInit.BitsPerSample = AUDIO_RESOLUTION_16B;
AudioInInit.Volume = VolumeLevel;
/* Initialize Audio Recorder with 2 channels to be used */
BSP_AUDIO_IN_Init(1, &AudioInInit);
BSP_AUDIO_IN_GetState(1, &InState);
BSP_AUDIO_OUT_Init(0, &AudioOutInit);
/* Start Recording */
UTIL_LCD_DisplayStringAt(0, 190, (uint8_t *)"Start Recording ", CENTER_MODE);
Status = BSP_AUDIO_IN_RecordPDM(1, (uint8_t*)&recordPDMBuf, 2*AUDIO_IN_PDM_BUFFER_SIZE);
/* Play the recorded buffer*/
UTIL_LCD_DisplayStringAt(0, 220, (uint8_t *)"Play the recorded buffer... ", CENTER_MODE);
Status = BSP_AUDIO_OUT_Play(0, (uint8_t*)&RecPlayback[0], 2*AUDIO_BUFF_SIZE);
while (1)
{
if (CheckForUserInput() > 0)
{
ButtonState = 0;
BSP_AUDIO_OUT_Stop(0);
BSP_AUDIO_OUT_DeInit(0);
BSP_AUDIO_IN_Stop(1);
BSP_AUDIO_IN_DeInit(1);
return;
}
}
}