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.

[参考译文] BOOSTXL-音频:使用音频信号处理BoosterPack和MSP432的实时音频系统

Guru**** 1138100 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/617912/boostxl-audio-real-time-audio-system-using-audio-signal-processing-boosterpack-and-msp432

部件号:BOOSTXL-音频

您好,

我正在开发一个系统来对输入信号进行实时音频处理。 我使用的是MSP432启动板(显然)以及音频信号处理BoosterPack (BOOSTXL-音频)。

在初始测试中,我使用按钮完成了一个简单的录音回放系统,在录音时观察到了合理的质量,但回放质量很差。 对于播放,我使用SPI协议,编程如下

/*初始化eUSI_B设置以写入DAC */
void Audio_DAC_Setup(void){/*
	REST eUSI_B */
	EUSCI_B0->CTLW0 |= EUSCI_B_CTLW0_SWRST;

	/* SET eUSSCI_B寄存器*/
	EUSCI_B0->CTLW0 =
			EUSCI_B_CTLW0_SWRST |//		保持静止(冗余)
			EUSCI_B_CTLW0_SPI|//			主模式
			EUSCI_B_CTLW0_SYNC 0_SCI_SCI_SCI_LWLWLWLWLWLW_MODE_0_0		
					
						
					
				

	
	~SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCF_0和EUB0 SCI_SCI_SCI_SCF_SCF_SCF_SCF_SCF_SCF_SCF_SCF_SCF_SCF_SCB0 / EB0 EB0,EB0,EBUF_SCF_SCF_SCF_SCF_SCF_SCF_SCF_SCF_SCF_SCF_SCB0,EB0 1


/*将值写入DAC */
void Audio_Write_DAC (uint16_t data){/*
	引入同步引脚以启用DAC8311 */
	SYNC_PORT->OUT ==~SYNC_PIN;
	
	/*裁剪DAC8311的两位数据处于“正常模式”*/
	数据&=~0xC000;
	
	/*等待就绪*/IFG_SCIF0;
	E_B-!
	
	/*将MSB写入传输寄存器*/
	EUSCI_B0->TXBUF =(uint8_t)(data >>8);

	/*等待传输完成*/
	while (!(EUSSCI_B0->IFG & EUSCI_B_IFG_TXIFG));

	/*将LSB写入传输寄存器*/ EUTSCI_B0-
	

	
	完成传输(ESI_STW_STW)= ATW_8

	/*通过DAC8311使同步引脚高到结束SPI */
	SYNC_PORT->OUT |= SYNC_PIN;
}

第一个函数在主例程中被调用一次,第二个函数在ISR中被用作计时器。 我处理这个问题的方式是否有明显的问题?

谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Thomas

    配置中缺少的一点是SPI位时钟速率。 通常,这是EUSCI_B0->BRW =2;

    此配置的波特率分配器至少应为2。

    我假设您的SPI引脚已预先配置。

    此外,尝试回放正弦音以查看输出是什么样子? 在内存中创建一个阵列,然后尝试回放以查看发生的情况(如果跳过或写入了错误的值,或者播放速率已关闭)。

    威廉
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    William,

    我继续操作,将EUSCI_B0->BRW=2;行添加到我的SPI初始化函数中。 当您说波特率分配器配置至少应为2时,我正确地假设该行代码集是,是吗?

    假设所有SPI引脚都配置为输出,您是正确的,我已将该代码位粘贴在下面

    /*用于将值写入DAC的设置引脚*/
    void Audio_Output_Pin_Setup(void){/*
    	为SPI */
    	MOSI_port->SEL0 |= MOSI_PIN;
    	SCLK_port->SEL0|= SCLK_PIN;
    
    	/*为输出配置SYNC引脚*/ MOSI_PORT->SEL0 |AMP_PIN; SP_DIR_POL=
    	SP_PEN;
    	SP_DIR_POL= SP_PEN_PEN_PEN= SP_PEN; SP_PER_PEN= SP_PER_PEN= SP_PEN_PEN=
    
    	
    	
    	amp_port->out ==~AMP_PIN;
    } 

    我使用硬编码正弦曲线测试了回放,下面我绘制了正弦曲线,它出现在MSP432的内存中,并且我录制了它。

    似乎是跳过了一些值,但我不确定是什么原因造成了这种情况。 计时器模块配置为以22.05 kHz的频率运行,时钟设置为48 MHz。 我很难看到这里的时间安排可能是一个问题,你有什么解决这个问题的建议吗?

    谢谢!

    Thomas

    (除此之外:我从MSP432提供的许多软件演示中认识到了您的名字。 我发现这些信息对于了解设备的配置非常有帮助,谢谢。)