PSIR 发表于 2012-1-2 14:34:06

请教 AD9833 的相位输入函数写法

大家好:

下图是 AD9833 DDS 资料手册第15页的截图。
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_709676N7N608.jpg
(原文件名:AD9833.jpg)
上面那个是频率计算函数的公式,网路上可以找到范例程式,而我也测试出来了,
下面那个是相位计算函数的公式,可以决定输出的起始相位角,
依照它的公式我写了一个计算函数如下:

#define        TWO_PI                6.28318530717958

void set_AD9833_phase(unsigned long int deg){ //AD9833相位設定
unsigned int phase;
deg = deg * (TWO_PI/4096);    //2Π/4096
   
phase=deg & 0x0fff;        //取低12位元,因为相位寄存器是12位元
phase|=0xD000;        //前面加上PHASE0寄存器的定址
}

因为我有用两颗 AD9833 想产生 I-Q 信号,一个设0度,一个设90度,
可是我执行这个代码後,例如要设定90度,可是输出的相位却不准,
想请教一下上面的计算式要如何修改比较好?谢谢。

huayuliang 发表于 2012-1-2 17:00:11

汗~~
phasereg = deg * 4096 * 2/PI

忘记说了,你还得做类型转换。。

PSIR 发表于 2012-1-3 09:40:30

花生大请说明一下为什麽公式要这样写好吗?

phasereg = deg * 4096 * 2/PI

在下实在看不懂,这和手册的公式到底有什麽关系呢?

huayuliang 发表于 2012-1-3 23:30:37

信号的相移 deg = 2*PI/4096 * PHASEREG,其中 PHASEREG 是寄存器的值,需要求的就是它的值啊。

eduhf_123 发表于 2012-1-4 05:46:09

∵ rad = 2π/4096 * REG
∴ REG = rad*4096/2π


∵ rad = (deg/360)*2π
∴ REG = (deg/360)*4096
       = deg*(512/45)
       ≈ deg*(11 + 3/8)

PSIR 发表于 2012-1-4 11:49:35

对不起,我还是有点似懂非懂

手册公式是这样写:

2*PI/4096 * PhaseReg;

而这也是 IC 根据上面的公式结果产生的相移,
所以我们要算的是 PhaseReg 的值该填入多少是吗?

因此,要求 PhaseReg 的值就要改写计算式变成下面这样是吗?

PhaseReg = deg * 4096 * 2/PI

谢谢。

PSIR 发表于 2012-1-4 11:52:37

回复【4樓】eduhf_123經歷
∵ rad = 2π/4096 * reg
∴ reg = rad*4096/2π

∵ rad = (deg/360)*2π
∴ reg = (deg/360)*4096
       = deg*(512/45)
       ≒ deg*(11 + 3/8)
-----------------------------------------------------------------------

请问原来的公式他所表示的是弪度而不是角度,
所以还要再算成角度的公式是吗?
页: [1]
查看完整版本: 请教 AD9833 的相位输入函数写法