回复【32楼】 xuande :
# xuande
---------------------------------
用串口调试的时候,我还是想传输12位的AD值(希望声音清晰一些),而且试了一下,发现另一块MINIV3.0串口接收到的数据,再经DA转换,喇叭播放的声音带有很大噪音,而且也失真,可以帮我看看程序有什么问题吗?谢谢!!采样率8K,波特率19200和115200都试过
串口1在主函数里一直发送
[mw_shl_code=c,true] while(1)
{
if(ADC_TimeOutFlag==1)//定时器定时采样率标志位
{
txbuff[0]=ADC_Value/256;//高4位
txbuff[1]=ADC_Value%256;//低8位
USART_SendData(USART1,txbuff[i++]);
if(i==2)
i=0;
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
ADC_TimeOutFlag=0;
}
}[/mw_shl_code]
串口3中断接收;主函数进行DA转换
[mw_shl_code=c,true]void USART3_IRQHandler(void)
{
if(USART_GetITStatus(USART3,USART_IT_RXNE)==SET)
{
while(USART_GetFlagStatus(USART3,USART_FLAG_RXNE)==SET)
{
rxbuff[i++] = USART_ReceiveData(USART3);
if(i==2)
i=0;
}
USART_ClearITPendingBit(USART3,USART_IT_RXNE);
}
}[/mw_shl_code]
[mw_shl_code=c,true] while(1)
{
if(DAC_TimeOutFlag==1)
{
DAC_Value = rxbuff[0]*256+rxbuff[1];
DAC_SetChannel1Data(DAC_Align_12b_R, DAC_Value);
DAC_TimeOutFlag=0;
}
}[/mw_shl_code]
|