主题中讨论的其他器件: MSPWARE
大家好、
我尝试通过 MSP430FR5994 Launchpad 将 BOOST-XL 音频演示用于声学信号检测应用。 同样、我对 MSPWare 示例中提供的'audio_collect.c'示例文件进行了一些修改。 其背后的想法是减小代码大小、并尝试查找是否有其他方法对音频录制和回放的行为进行编码。 为了初始化 DMA 通道以录制和回放音频、原始代码的结构如下:
static DMA_initParam dma0Config; static DMA_initParam dma1Config; dma0Config.channelSelect = DMA_CHANNEL_1; dma0Config.transferModeSelect = DMA_TRANSFER_SINGLE; dma0Config.transferSize = SAMPLES_LENGTH; dma0Config.triggerSourceSelect = DMA_TRIGGERSOURCE_26; dma0Config.transferUnitSelect = DMA_SIZE_SRCWORD_DSTWORD; dma0Config.triggerTypeSelect = DMA_TRIGGER_RISINGEDGE; dma1Config.channelSelect = DMA_CHANNEL_2; dma1Config.transferModeSelect = DMA_TRANSFER_SINGLE; dma1Config.transferSize = SAMPLES_LENGTH; dma1Config.triggerSourceSelect = DMA_TRIGGERSOURCE_26; dma1Config.transferUnitSelect = DMA_SIZE_SRCWORD_DSTWORD; dma1Config.triggerTypeSelect = DMA_TRIGGER_RISINGEDGE; DMA_init(&dma0Config); DMA_init(&dma1Config);
我的想法不是以上陈述、而是尝试以下几点:
#define ADC12_DMA_TRIGGER_SOURCE 0X1A // (TRIGGER_SOURCE_26) #define SAMPLES_LENGTH 0x7FFF DMA1CTL = (DMADT_0 + DMADSTBYTE_0 + DMASRCBYTE_0 + DMALEVEL_0); DMA1SZ = SAMPLES_LENGTH; // Reset and then trigger the DMA Channel 1 DMACTL1 &= 0X00FF; DMACTL1 |= (ADC12_DMA_TRIGGER_SOURCE << 8); DMA2CTL = (DMADT_0 + DMADSTBYTE_0 + DMASRCBYTE_0 + DMALEVEL_0); DMA2SZ = SAMPLES_LENGTH; // Reset and then trigger the DMA Channel 2 DMACTL2 &= 0X00FF; DMACTL2 |= (ADC12_DMA_TRIGGER_SOURCE<<8);
虽然我还在寄存器的帮助下使用了类似的方法来编码行为、但当我根据'DA_initParam'使用初始化时、整个代码会正常工作 、但当我尝试使用基于修改后的寄存器的方法时、演示只会继续录音 (红色 LED 保持亮起)、从不启动回放。 我几乎可以肯定的是、当我使用 DMA 的默认初始化、同时根据基于寄存器的方法修改其余代码时、代码片段中会出现问题- BOOST-XL 演示非常完美。 我曾向论坛提出类似的问题、但没有看到适用于我的案例的问题。 如果有人可以查看代码并让我知道我可能会出错的地方、那将会非常有帮助。 我还将附加'audio_collect.c'的修改后代码文件 和 MSPWare 中提供的默认示例供您参考。
e2e.ti.com/.../audio_5F00_collect.c e2e.ti.com/.../audio_5F00_collect_5F00_default.c
请告诉我是否需要其他详细信息。 谢谢!
此致、
Siddhant