一共用到两个stm32板子
第一个板子用ADC采集声音信号,使之变为数字信号
经USART通信 连接到第二个开发板
第二个开发板接收到USART传过来的数据 发送到DAC 使之还原成声音信号
下面是DAC的部分程序 请各位大神看看 哪里出错了 用示波器看不到波形啊
int main(void)
{
RCC_INIT_();
NVIC_INIT_();
GPIO_INIT_();
USART_INIT_();
DAC_INIT_();
while(1)
{
DAC_SetChannel1Data(DAC_Align_8b_R,USART_ReceiveData(USART1));
// DAC->DHR12R1=USART_ReceiveData(USART1);
DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);
}
}
void GPIO_INIT_(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA , &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA , &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA , &GPIO_InitStructure);
}
void DAC_INIT_(void)
{
DAC_InitTypeDef DAC_InitStructure;
DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
DAC_Init(DAC_Channel_1, &DAC_InitStructure);
DAC_Cmd(DAC_Channel_1, ENABLE);
DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);
DAC_DMACmd(DAC_Channel_1, DISABLE);
}
|