我正在使用STM32F030F4P6和Stm32Cube运行AD9833信号发生器。 我可以生成信号,但不能更改频率。在Analog Devices App note中有示例:
在这个例子中,我编写了这样的代码:
void AD9833_SetFRQ(float FRQ) {
uint32_t freq=0;
uint32_t freq0=0;
uint32_t freq1=0;
freq=(int)(((FRQ*pow(2,28))/FMCLK)+1); // Tuning Word
freq0=(freq&0x3fff)|(1<<14); // FREQ LSB
freq1=(freq>>14)|(1<<14); // FREQ MSB
AD9833_Reset();
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
HAL_SPI_Transmit(&hspi1,(uint8_t*)&(freq0),1,10);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
HAL_SPI_Transmit(&hspi1,(uint8_t*)&(freq1),1,10);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
HAL_SPI_Transmit(&hspi1,(uint8_t*)&(A1),1,10);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);
AD9833_Set();
}
我的数据输出与模拟设备示例完全相同,如您在逻辑分析仪图像中所见:
仍然没有机会更改频率。 有什么问题吗?
答案 0 :(得分:0)
您确定控制位(例如DB13或DB14 DB15)正确写入了吗? 另外,最后是否要重置切换?
检查命令序列的解释部分 https://www.analog.com/media/en/technical-documentation/application-notes/AN-1070.pdf