Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 34 additions & 20 deletions libraries/HAL_Drivers/drv_i2s.c
Original file line number Diff line number Diff line change
Expand Up @@ -144,33 +144,47 @@ void ifx_set_samplerate(struct rt_audio_configure audio_config)
{
switch (audio_config.samplerate)
{
case 16000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 15U, 0U);
break;
case 16000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 24U, 0U);
break;
case 24000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 16U, 0U);
break;
case 48000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 8U, 0U);
break;
case 96000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 2U, 0U);
break;
default:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 24U, 0U);
break;
}
}
else
{
switch (audio_config.samplerate)
{
case 16000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 11U, 0U);
break;
case 24000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 7U, 0U);
break;
case 48000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 3U, 0U);
break;
case 96000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 1U, 0U);
break;
default:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 11U, 0U);
break;
case 16000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 11U, 0U);
break;
case 24000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 7U, 0U);
break;
case 48000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 3U, 0U);
break;
case 96000:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 1U, 0U);
break;
default:
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 11U, 0U);
break;
}
}

#if defined(BSP_USING_XiaoZhi)
Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U, 15U, 0U);
#endif
Cy_SysClk_PeriPclkEnableDivider((en_clk_dst_t)CYBSP_TDM_CONTROLLER_0_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_16_5_BIT, 0U);
}

Expand Down Expand Up @@ -758,7 +772,7 @@ void i2s_playback_task(void *arg)
while (audio->replay->queue.is_empty == 1)
{
rt_thread_mdelay(1);
#if !defined(BSP_USING_XiaoZhi)
#if defined(PKG_USING_WAVPLAYER) && !defined(BSP_USING_XiaoZhi)
if(count>=50){
rt_completion_done(&audio->replay->cmp);
count=0;
Expand Down
4 changes: 2 additions & 2 deletions libraries/HAL_Drivers/drv_pdm.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ static rt_err_t mic_configure(struct rt_audio_device *audio, struct rt_audio_cap
{
case AUDIO_MIXER_VOLUME:
mic_dev->volume = caps->udata.value;
// set_pdm_pcm_gain(mic_dev->volume);
set_pdm_pcm_gain(mic_dev->volume);
LOG_D("Set volume: %d\r\n", mic_dev->volume);
break;
default:
Expand Down Expand Up @@ -344,7 +344,7 @@ static rt_err_t mic_init(struct rt_audio_device *audio)
Cy_PDM_PCM_Channel_Init(PDM0, &RIGHT_CH_CONFIG, (uint8_t)RIGHT_CH_INDEX);

/* Set the gain for both left and right channels. */
// set_pdm_pcm_gain(mic_dev.volume);
set_pdm_pcm_gain(mic_dev.volume);

/* As registred for right channel, clear and set maks for it. */
Cy_PDM_PCM_Channel_ClearInterrupt(PDM0, RIGHT_CH_INDEX, CY_PDM_PCM_INTR_MASK);
Expand Down
4 changes: 2 additions & 2 deletions projects/Edgi_Talk_M33_Audio/applications/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ int main(void)
struct rt_audio_caps sound_dev_arg;
sound_dev_arg.main_type = AUDIO_TYPE_MIXER;
sound_dev_arg.sub_type = AUDIO_MIXER_VOLUME;
sound_dev_arg.udata.value = 65;
sound_dev_arg.udata.value = 60;
rt_device_control(sound_dev, AUDIO_CTL_CONFIGURE, &sound_dev_arg);

rt_device_open(sound_dev, RT_DEVICE_OFLAG_WRONLY);
Expand All @@ -51,7 +51,7 @@ int main(void)
struct rt_audio_caps mic_dev_arg;
mic_dev_arg.main_type = AUDIO_TYPE_MIXER;
mic_dev_arg.sub_type = AUDIO_MIXER_VOLUME;
mic_dev_arg.udata.value = 5;
mic_dev_arg.udata.value = 30;
rt_device_control(mic_dev, AUDIO_CTL_CONFIGURE, &mic_dev_arg);

rt_device_open(mic_dev, RT_DEVICE_OFLAG_RDONLY);
Expand Down