RT1011 使用mqs端口播放 音频有噪音

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

RT1011 使用mqs端口播放 音频有噪音

1,769 Views
WahibKuang
Contributor I

使用RT1011 使用MQS端口播放音频有轻微的“呼呼”声音,音频源是16kbps,16位,单通道,wav格式音频。音频源音量大时很难听清噪音,音频源声音很小时 就很容易听清。

改变输入的电阻和电容,原本的音频过滤掉了,也可以很清楚的听到“呼呼”的噪音

mqs电路图

屏幕截图 2021-05-14 095853.png

mqs参数

 

/* Select Audio PLL (786.432 MHz) as sai1 clock source */
#define MQS_SAI_CLOCK_SOURCE_SELECT (2U)
/* Clock pre divider for sai clock source */
#define MQS_SAI_CLOCK_SOURCE_PRE_DIVIDER (3U)
/* Clock divider for sai clock source */
#define MQS_SAI_CLOCK_SOURCE_DIVIDER (4U)
/* Get frequency of sai clock: SAI3_Clock = 786.48MHz /(1+0)/(63+1) = 12.14MHz */
/* Get frequency of sai clock: SAI3_Clock = 786.48MHz /(3+1)/(4+1) = 39.3MHz */
#define MQS_SAI_CLK_FREQ (CLOCK_GetFreq(kCLOCK_AudioPllClk) / (MQS_SAI_CLOCK_SOURCE_DIVIDER + 1U) / (MQS_SAI_CLOCK_SOURCE_PRE_DIVIDER + 1U))


void configMQS(void)
{
    CCM->CCGR0 = CCM->CCGR0 & (~CCM_CCGR0_CG2_MASK) | CCM_CCGR0_CG2(3);         /* Enable MQS hmclk. */
	//CLOCK_EnableClock(kCLOCK_Mqs);
    IOMUXC_MQSEnterSoftwareReset(IOMUXC_GPR, true);                             /* Reset MQS. */
    IOMUXC_MQSEnterSoftwareReset(IOMUXC_GPR, false);                            /* Release reset MQS. */
    IOMUXC_MQSEnable(IOMUXC_GPR, true);                                         /* Enable MQS. */
    IOMUXC_MQSConfig(IOMUXC_GPR, kIOMUXC_MqsPwmOverSampleRate64, 1);           /* 39.321MHz/64/(1+1) = 0.3MHz
																				12.14Mhz/32/(0+1)		
                                                                                Higher frequency PWM involves less low frequency harmonic.*/
}

 

0 Kudos
11 Replies

1,737 Views
kerryzhou
NXP TechSupport
NXP TechSupport

楼主你好!

我有个题外的问题,你现在是帮你自己测试还是公司测试?

如果是公司的项目,我建议你用公司的邮箱建一个case,这样我们会有更多时间去帮助你,因为现在看下来你的邮箱是第三方的邮箱。

 

Best Regards,

Kerry

0 Kudos

1,732 Views
WahibKuang
Contributor I

这个公司项目测试,但是我们公司没有专门的邮箱

0 Kudos

1,758 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi WahibKuang,

   楼主你好!

   两个点需要你确认:

1. 你有没有配置对应的MQS引脚功能为MQS, Pinmux.c里面配置

   你可以告诉我你现在用的是哪两个脚,回头我有空可以帮你测试。

 

2. 你的驱动芯片的地线,是否和你的RT芯片的地共线?

  我问这个问题,因为我之前外挂驱动芯片,而且外供电,没有和RT板子共地,导致很大杂音,但是我共地之后,就很清晰。

当然,另外也可能和你的驱动芯片有关,要求输入使用低通滤波,截止频率大概100Khz

 

如果上述两点你都做到了,那么还请你那边给我录个小视频上传上来,我看看。

 

Best Regards,

Kerry

 

 

 

0 Kudos

1,686 Views
WahibKuang
Contributor I

你好 ,有空帮我看看!

0 Kudos

1,752 Views
WahibKuang
Contributor I

放大器和RX芯片在一个板子上的 ,用万用表测了是共地的。

MQS使用的是一个通道。

	  IOMUXC_SetPinMux(
      IOMUXC_GPIO_AD_01_MQS_LEFT,             /* GPIO_AD_01 is configured as MQS_LEFT */
      0U);                                    /* Software Input On Field: Input Path is determined by functionality */
    
	IOMUXC_SetPinConfig(
      IOMUXC_GPIO_AD_01_MQS_LEFT,             /* GPIO_AD_01 PAD functional properties : */
      0x10A0U);                               /* Slew Rate Field: Slow Slew Rate
                                                 Drive Strength Field: R0/4
                                                 Speed Field: fast(150MHz)
                                                 Open Drain Enable Field: Open Drain Disabled
                                                 Pull / Keep Enable Field: Pull/Keeper Enabled
                                                 Pull / Keep Select Field: Keeper
                                                 Pull Up / Down Config. Field: 100K Ohm Pull Down
                                                 Hyst. Enable Field: Hysteresis Disabled */

 

0 Kudos

1,683 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi WahibKuang,

  楼主你好!

  你这个文件:20210514_161019.m4a 是不是RT MQS 发出来的呢?我听着声音还是比较清晰,杂音听下来是你周围环境的声音,另外就是嘀嘀嘀的声音有点小,这个还需要你放大器再放大,因为MQS是不能调音量的,完全取决外面的功放驱动电路。你可以加大放大倍数看看,是否能够声音大些,我这边听你的.m4a还是比较清晰的。

 

Best Regards,

Kerry

0 Kudos

1,675 Views
WahibKuang
Contributor I

我发了两个附件,你需要把两个音频对照着听,有很明显的沙沙的声音,外部环境音很小的。

这个播放的声音是经过软件计算(就是 每个16位的值乘以8%左右)播放的声音。源声音很大,这种沙沙的声音不仔细听不出来的,但是靠近仔细听还是可以听出有沙沙的声音。

 

0 Kudos

1,664 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi WahibKuang,

  这种特别细节的问题,通常还是产生于你的硬件,就像我之前说的,你需要做硬件低通滤波,截止频率大概100Khz,目测你的硬件MQS_LEFT没有做低通滤波直接输出去了,这样你的沙沙声应该是干扰信号导致的,也就是你要设计硬件电路把你那部分干扰沙沙频率给滤掉。

 

Best Regards,

kerry

0 Kudos

1,658 Views
WahibKuang
Contributor I

这个100Khz的截止频率是怎么得来的?

我的mqs需要改动吗?

mqs的分频设置和SAI之间的频率有什么特定的关系?

改了好多组数据,只有当前的mqs配置声音是最清晰的。

0 Kudos

1,647 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @WahibKuang ,

  你目前的声音是能听到的,所以实际上你的MQS代码已经完全工作了。

  关于噪音的事情,是需要你外部硬件电路去滤波杂音的,目前看下来,你的MQS代码应该是不需要去修改了,因为已经完全工作了。

  100Khz截止频率是我们专家推荐的,关于低通电路你可以网上搜索下,很多的。主要还是前端电容电阻的搭配。

  关于你这个问题:

mqs的分频设置和SAI之间的频率有什么特定的关系?

改了好多组数据,只有当前的mqs配置声音是最清晰的。

mqs实际上就是SAI3, 你如果找个带功放芯片的喇叭,实际上也可以直接接上去,这样声音会更大些。

关于SAI时钟情况,你可以看下我这篇基础篇,会比较清晰点:

https://community.nxp.com/t5/i-MX-RT-Knowledge-Base/RT10xx-SAI-basic-and-SDCard-wave-file-play/ta-p/...

附件是我之前测试RT1050 MQS的情况,当然我外部也没有用低通滤波,是直接加的74LVC240A芯片播放的。

 

Best Regards,

Kerry

0 Kudos

1,744 Views
WahibKuang
Contributor I

这个是正常的 按键音

0 Kudos