请教 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度,可是输出的相位却不准,
想请教一下上面的计算式要如何修改比较好?谢谢。 汗~~
phasereg = deg * 4096 * 2/PI
忘记说了,你还得做类型转换。。 花生大请说明一下为什麽公式要这样写好吗?
phasereg = deg * 4096 * 2/PI
在下实在看不懂,这和手册的公式到底有什麽关系呢? 信号的相移 deg = 2*PI/4096 * PHASEREG,其中 PHASEREG 是寄存器的值,需要求的就是它的值啊。 ∵ rad = 2π/4096 * REG
∴ REG = rad*4096/2π
又
∵ rad = (deg/360)*2π
∴ REG = (deg/360)*4096
= deg*(512/45)
≈ deg*(11 + 3/8) 对不起,我还是有点似懂非懂
手册公式是这样写:
2*PI/4096 * PhaseReg;
而这也是 IC 根据上面的公式结果产生的相移,
所以我们要算的是 PhaseReg 的值该填入多少是吗?
因此,要求 PhaseReg 的值就要改写计算式变成下面这样是吗?
PhaseReg = deg * 4096 * 2/PI
谢谢。 回复【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]