使用RT1011 使用MQS端口播放音频有轻微的“呼呼”声音,音频源是16kbps,16位,单通道,wav格式音频。音频源音量大时很难听清噪音,音频源声音很小时 就很容易听清。
改变输入的电阻和电容,原本的音频过滤掉了,也可以很清楚的听到“呼呼”的噪音
mqs电路图
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.*/
}
楼主你好!
我有个题外的问题,你现在是帮你自己测试还是公司测试?
如果是公司的项目,我建议你用公司的邮箱建一个case,这样我们会有更多时间去帮助你,因为现在看下来你的邮箱是第三方的邮箱。
Best Regards,
Kerry
这个公司项目测试,但是我们公司没有专门的邮箱
Hi WahibKuang,
楼主你好!
两个点需要你确认:
1. 你有没有配置对应的MQS引脚功能为MQS, Pinmux.c里面配置
你可以告诉我你现在用的是哪两个脚,回头我有空可以帮你测试。
2. 你的驱动芯片的地线,是否和你的RT芯片的地共线?
我问这个问题,因为我之前外挂驱动芯片,而且外供电,没有和RT板子共地,导致很大杂音,但是我共地之后,就很清晰。
当然,另外也可能和你的驱动芯片有关,要求输入使用低通滤波,截止频率大概100Khz
如果上述两点你都做到了,那么还请你那边给我录个小视频上传上来,我看看。
Best Regards,
Kerry
你好 ,有空帮我看看!
放大器和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 */
Hi WahibKuang,
楼主你好!
你这个文件:20210514_161019.m4a 是不是RT MQS 发出来的呢?我听着声音还是比较清晰,杂音听下来是你周围环境的声音,另外就是嘀嘀嘀的声音有点小,这个还需要你放大器再放大,因为MQS是不能调音量的,完全取决外面的功放驱动电路。你可以加大放大倍数看看,是否能够声音大些,我这边听你的.m4a还是比较清晰的。
Best Regards,
Kerry
我发了两个附件,你需要把两个音频对照着听,有很明显的沙沙的声音,外部环境音很小的。
这个播放的声音是经过软件计算(就是 每个16位的值乘以8%左右)播放的声音。源声音很大,这种沙沙的声音不仔细听不出来的,但是靠近仔细听还是可以听出有沙沙的声音。
Hi WahibKuang,
这种特别细节的问题,通常还是产生于你的硬件,就像我之前说的,你需要做硬件低通滤波,截止频率大概100Khz,目测你的硬件MQS_LEFT没有做低通滤波直接输出去了,这样你的沙沙声应该是干扰信号导致的,也就是你要设计硬件电路把你那部分干扰沙沙频率给滤掉。
Best Regards,
kerry
这个100Khz的截止频率是怎么得来的?
我的mqs需要改动吗?
mqs的分频设置和SAI之间的频率有什么特定的关系?
改了好多组数据,只有当前的mqs配置声音是最清晰的。
Hi @WahibKuang ,
你目前的声音是能听到的,所以实际上你的MQS代码已经完全工作了。
关于噪音的事情,是需要你外部硬件电路去滤波杂音的,目前看下来,你的MQS代码应该是不需要去修改了,因为已经完全工作了。
100Khz截止频率是我们专家推荐的,关于低通电路你可以网上搜索下,很多的。主要还是前端电容电阻的搭配。
关于你这个问题:
mqs的分频设置和SAI之间的频率有什么特定的关系?
改了好多组数据,只有当前的mqs配置声音是最清晰的。
mqs实际上就是SAI3, 你如果找个带功放芯片的喇叭,实际上也可以直接接上去,这样声音会更大些。
关于SAI时钟情况,你可以看下我这篇基础篇,会比较清晰点:
附件是我之前测试RT1050 MQS的情况,当然我外部也没有用低通滤波,是直接加的74LVC240A芯片播放的。
Best Regards,
Kerry