OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6412|回复: 1

AD9834(DDS)怎么改变相位

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-9-27
在线时间
2 小时
发表于 2021-8-2 00:02:34 | 显示全部楼层 |阅读模式
1金钱
大佬们,有谁做过AD9834,怎么改变相位,网上例程都是只有改变频率和波形的,我看手册说可以改变相位,还有输出的两个频率寄存器有啥用啊?输出的两个通道都是一样的频率,两个通道相位差也好像只能180度,如何才能做出相位差可调的两个正弦波呢??

最佳答案

查看完整内容[请看2#楼]

两个频率寄存器任选一个就可以。相位设置如下: void AD9833_WritePhaseReg(uint8_t _mode, uint32_t _phase_reg) { u16 phase_reg = 0; phase_reg = (u16)(_phase_reg * 4096 / 360); phase_reg &= 0xFFF; if (_mode == 0) /* 写相位寄存器0 */ { AD9833_Write16Bits(0xc000 + phase_reg); } else /* 写相位寄存器1 */ { AD9833_Write16Bits(0xe000 + phase_reg); } }
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2020-12-25
在线时间
23 小时
发表于 2021-8-2 00:02:35 | 显示全部楼层
两个频率寄存器任选一个就可以。相位设置如下:
void AD9833_WritePhaseReg(uint8_t _mode, uint32_t _phase_reg)
{
        u16 phase_reg = 0;
       
        phase_reg = (u16)(_phase_reg * 4096 / 360);
        phase_reg &= 0xFFF;
               
        if (_mode == 0)        /* 写相位寄存器0 */
        {
                AD9833_Write16Bits(0xc000 + phase_reg);
        }
        else        /* 写相位寄存器1 */
        {       
                AD9833_Write16Bits(0xe000 + phase_reg);
        }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 02:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表