主题中讨论的其他部件:Tida-0.1236万
您好,
我们正在尝试使用MEMS PDM麦克风和外部PDM到PCM转换器(ADAU7118)检测超声波信号。 PCM音频数据通过I2S 或时间域中的串行音频接口端口输出
多路复用(TDM)格式。 我们还需要处理在MCU I2S线路上接收的数据并以无线方式传输。
是否有任何参考代码可以从我们的应用程序开始?
转换器支持4 kHz至192 kHz的不同采样频率,可通过LR时钟进行设置。 如何改变MCU的采样频率?
此致
Pratik
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,
我们正在尝试使用MEMS PDM麦克风和外部PDM到PCM转换器(ADAU7118)检测超声波信号。 PCM音频数据通过I2S 或时间域中的串行音频接口端口输出
多路复用(TDM)格式。 我们还需要处理在MCU I2S线路上接收的数据并以无线方式传输。
是否有任何参考代码可以从我们的应用程序开始?
转换器支持4 kHz至192 kHz的不同采样频率,可通过LR时钟进行设置。 如何改变MCU的采样频率?
此致
Pratik
您好,Pratik,
您可以从 i2secho 示例开始,并进一步参考I2S.h TI驱动程序运行时API。 支持的采样频率为8kHz,16kHz,32kHz和44.1kHz。
此致,
Ryan
您好,Ryan:
感谢您的回复。
在我们的应用中,我们需要检测22kHz至80Khz的超声波信号。 对于此采样频率,需要为190Khz,但您提到的I2S驱动程序支持最大44.1kHz。 我们能否将现有I2S驱动器中的采样频率更改为190Khz并验证超声波信号?
我们找到 了使用CC1301 MCU的TIDA-0.1236万参考设计。 在I2S.c文件中,我们看到了下面的注释
* I2S时钟配置为接近192kHz采样率
*无需使用编解码器的内部PLL (以节省电源)即可。
*时钟设置如下:
*
*-系统时钟= 48 MHz
*- I2S主时钟(MCLK)= 24 MHz
*- I2S采样频率(WCLK)= 187.5 kHz
*- I2S位时钟= WCLK * 16 = 6 MHz
我们是否可以为应用程序使用相同的I2S驱动程序?
您好,Ryan:
我们尝试修改I2S echo simplelink_cc13x2_26x2_SDK_5_20_00_52 SDK示例代码,以获得高于44.1kHz的采样频率。 我们在应用中设置了以下参数以实现75Khz采样频率。
i2sParams.samplingFrequency = 7.5万;
i2sParams.bitsPerWord =16;
i2sParams.fixedBufferLength =256;
i2sParams.writeCallback = writeCallbackFxn;
i2sParams.readCallback = readCallbackFxn;
i2sParams.errorCallback = errCallbackFxn;
REST保留为I2S.h文件中提到的默认参数
* params.memorySlotLength = I2S_memory_length_16bits;
* params.moduleRole = I2S_master;
* params.trueI2sFormat =(布尔) TRUE;
* params.invertWS =(布尔) TRUE;
* params.isMSBFirst =(布尔) TRUE;
* params.isDMA未使用=(布尔) FALSE;
* params.samplingEdge = I2S_sampling_Edge_Rising;
* params.beforeWordPadding = 0;
* params.AfterWordAdding = 0;
* params.fixedBufferLength = 1;
* params.SD0Use = I2S_SD0_output;
* params.SD1Use = I2S_SD1_input;
* params.SD0Channels = I2S_Channels_Stereo;
* params.SD1Channels = I2S_Channels_Stereo;
* params.phaseType = I2S_phone_type_dual;
* params.startUpDelay = 0;
* params.MCLKDivider = 40;
通过上述参数和 PRCM (TI.com) 计算,我们将WS CLK视为75Khz
WS CLK = MCUCLK / BDIV *(2个WDIV)
= 48Mhz / 20 *(2 * 16)
= 7.5万 Hz
在使用上述配置刷新代码后,我们尝试探测WS针脚以验证75Khz采样频率,但在WS针脚上看不到任何信号。
我们是否缺少任何其他要在代码中完成的设置?
请验证系统是否使用较慢的时钟(如32 kHz)工作,以便确认WS针信号在已知设置下是否正确。 您初始化的SCK时钟为7.5万*2*16= 2.4 MHz,略低于驱动程序可实现的最大4MHz。 您可以将断点放在errCallbackFxn中,以确定是否出现任何错误,还可以验证是否触发了读和写回调。 这样,您就可以确定驱动程序是否工作,但输出什么都不工作,或者基本上不能按预期工作。
此致,
Ryan