其他
项目分享| STM32+DDS自制信号发生器(源码开源)
不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我
信号发生器性能
同时,具有显示输出波形的类型、重复频率(周期)和幅度的功能。
系统方案
4) 按键模块采用独立按键的方式设置输出波形的类型、幅值和频率等数据。
输出信号实测
总体软件设计
代码实现
#define ad9851_rest_l HAL_GPIO_WritePin(AD9851_RESET_GPIO_Port, AD9851_RESET_Pin, GPIO_PIN_RESET)
#define ad9851_rest_h HAL_GPIO_WritePin(AD9851_RESET_GPIO_Port, AD9851_RESET_Pin, GPIO_PIN_SET)
#define ad9851_fq_up_l HAL_GPIO_WritePin(AD9851_FQ_UP_GPIO_Port, AD9851_FQ_UP_Pin, GPIO_PIN_RESET)
#define ad9851_fq_up_h HAL_GPIO_WritePin(AD9851_FQ_UP_GPIO_Port, AD9851_FQ_UP_Pin, GPIO_PIN_SET)
#define ad9851_w_clk_l HAL_GPIO_WritePin(AD9851_W_CLK_GPIO_Port, AD9851_W_CLK_Pin, GPIO_PIN_RESET)
#define ad9851_w_clk_h HAL_GPIO_WritePin(AD9851_W_CLK_GPIO_Port, AD9851_W_CLK_Pin, GPIO_PIN_SET)
#define ad9851_data_l HAL_GPIO_WritePin(AD9851_DATA_GPIO_Port, AD9851_DATA_Pin, GPIO_PIN_RESET)
#define ad9851_data_h HAL_GPIO_WritePin(AD9851_DATA_GPIO_Port, AD9851_DATA_Pin, GPIO_PIN_SET)
//串行口初始化
void ad9851_reset_serial()
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = AD9851_RESET_Pin|AD9851_FQ_UP_Pin|AD9851_W_CLK_Pin|AD9851_DATA_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
ad9851_w_clk_l;
ad9851_fq_up_l;
ad9851_rest_l;
ad9851_rest_h;
ad9851_rest_l;
ad9851_w_clk_l;
ad9851_w_clk_h;
ad9851_w_clk_l;
ad9851_fq_up_l;
ad9851_fq_up_h;
ad9851_fq_up_l;
}
//串行口写入DDS寄存器
void ad9851_wr_serial(u8 w0,u32 frequence)
{
u8 i,w;
frequence=frequence*4294967296/180000000;
w=(frequence>>=0);
for(i=0;i<8;i++)
{
if((w>>i)&0x01)
ad9851_data_h;
else ad9851_data_l;
ad9851_w_clk_h;
ad9851_w_clk_l;
}
w=(frequence>>8);
for(i=0;i<8;i++)
{
if((w>>i)&0x01)
ad9851_data_h;
else ad9851_data_l;
ad9851_w_clk_h;
ad9851_w_clk_l;
}
w=(frequence>>16);
for(i=0;i<8;i++)
{
if((w>>i)&0x01)
ad9851_data_h;
else ad9851_data_l;
ad9851_w_clk_h;
ad9851_w_clk_l;
}
w=(frequence>>24);
for(i=0;i<8;i++)
{
if((w>>i)&0x01)
ad9851_data_h;
else ad9851_data_l;
ad9851_w_clk_h;
ad9851_w_clk_l;
}
w=w0;
for(i=0;i<8;i++)
{
if((w>>i)&0x01)
ad9851_data_h;
else ad9851_data_l;
ad9851_w_clk_h;
ad9851_w_clk_l;
}
ad9851_fq_up_h;
ad9851_fq_up_l;
}
达尔闻项目分享系列——聚焦物联网、嵌入式、AI、FPGA等热门应用技术,开源分享原理图、代码等项目方案,做你手边的知识库。
项目分享系列集锦:
STM32物联网智能家居项目树莓派+计算棒2完成实时人脸识别项目嵌入式开发板的云计算平台搭建
STM32实现最简单空中鼠标
Arduino魔方机器人STM32版“AI灵魂画手”
STM32电子相册制作