Может поможет этот код, здесь описана последовательность как я инициализирую ДДСку и парочка значений. На 3 аргумент функции записи не обращайте внимание
Код
//DDS Register Map
#define DDS_CSR_REG 0x00
#define DDS_FR1_REG 0x01
#define DDS_FR2_REG 0x02
#define DDS_CFR_REG 0x03
#define DDS_CTW0_REG 0x04
#define DDS_CPW0_REG 0x05
#define DDS_ACR_REG 0x06
#define DDS_LSR_REG 0x07
#define DDS_RDW_REG 0x08
#define DDS_FDW_REG 0x09
#define DDS_CTW1_REG 0x0A
#define Chanel0_Select 0x42
#define Chanel1_Select 0x82
#define ChanelS_Select 0xC2
#define Init_Function_Register1 0x00505000&0x83ffff
#define Init_Function_Register2 0x0
#define Init_Function_Register3_0 0x00000301
#define Init_Function_Register3_1 0x00000301
#define StartSweep 0x0080E014
#define StopSweep 0x0000000A
int DDS_Init (unsigned int qmult)
{
unsigned char last=1;
unsigned int data;
unsigned char f;
DDS_WriteData (DDS_CSR_REG, Chanel0_Select, 1);
data=qmult&0x1f;
data=(Init_Function_Register1&0x83ffff)|(data<<18);
DDS_WriteData (DDS_FR1_REG, data, 1);
DDS_WriteData (DDS_FR2_REG, Init_Function_Register2, 1);
DDS_WriteData (DDS_CFR_REG, Init_Function_Register3_0, last);
DDS_IO_Update();
f=DDS_ReadData(DDS_CSR_REG, &data);
if (((data&0xFF)!=Chanel0_Select)||(f!=1))
{
return f;
}
DDS_WriteData (DDS_CSR_REG, Chanel1_Select, 1);
DDS_WriteData (DDS_CFR_REG, Init_Function_Register3_1, last);
DDS_IO_Update();
f=DDS_ReadData(DDS_CSR_REG, &data);
if (((data&0xFF)!=Chanel1_Select)||(f!=1))
{
return f;
}
return 1;
}