DDS AD9854, library to configure a AD9854 Serial Interface (SPI)
Dependents: JRO_DDSv2 JRO_DDSv2_rev2019
Diff: AD9854.h
- Revision:
- 1:d81fca2297fb
- Parent:
- 0:156a9e15919e
--- a/AD9854.h Tue Feb 24 20:08:13 2015 +0000 +++ b/AD9854.h Wed Sep 04 22:26:24 2019 +0000 @@ -8,6 +8,8 @@ #define SPI_MODE 0 #define SPI_FREQ 1000000 +#define DDS_CMD_STATUS 0X04 + #define DDS_CMD_RESET 0X10 #define DDS_CMD_ENABLE_RF 0x11 #define DDS_CMD_MULTIPLIER 0X12 @@ -18,8 +20,27 @@ #define DDS_CMD_PHASEB 0x17 #define DDS_CMD_AMPLITUDE1 0X18 #define DDS_CMD_AMPLITUDE2 0x19 +#define DDS_CMD_ENABLE_AMP 0x1A +#define DDS_CMD_AMP_RAMP_RATE 0x1B +#define DDS_CMD_DELTA_FREQ 0x1C +#define DDS_CMD_UPD_CLOCK 0x1D +#define DDS_CMD_RAMP_RATE_CLOCK 0x1E + +#define DDS_CMD_WRITE 0x50 #define DDS_CMD_READ 0x8000 +#define MSG_CMD_KO "0:Command not recognized" +#define MSG_CMD_OK "1:Configuration received and saved" + +#define MSG_STATUS_FAIL "0:DDS Clock not connected" +#define MSG_STATUS_ON "1:DDS was not programmed" +#define MSG_STATUS_RF_DIS "2:RF disabled" +#define MSG_STATUS_RF_ENA "3:RF enabled" + +#define MSG_DISABLED "0:ENABLED" +#define MSG_ENABLED "1:DISABLED" + + class DDS{ private: float clock; // Work frequency in MHz @@ -32,14 +53,25 @@ bool cr_osk_int; // ext/int output shaped control: 0 -> external bool cr_msb_lsb; // msb/lsb bit first: 0 -> MSB bool cr_sdo; // SDO pin active: 0 -> inactive - + bool cr_pll_range; + bool cr_pll_bypass; + + bool cr_osk_en_bkp; // Enable AM: 0 -> disabled + bool cr_osk_int_bkp; + char frequency1[6]; char frequency2[6]; char phase1[2]; char phase2[2]; char amplitudeI[2]; char amplitudeQ[2]; + char delta_frequency[6]; + char update_clock[4]; + char ramp_rate_clock[3]; + char amplitude_ramp_rate[1]; + bool rf_enabled; + bool programmed; double factor_freq1; double factor_freq2; @@ -58,7 +90,7 @@ int __writeData(char addr, char ndata, const char* data); char* __readData(char addr, char ndata); - int __writeDataAndVerify(char addr, char ndata, const char* wr_spi_data, SerialDriver *screen=NULL); + int __writeDataAndVerify(char addr, char ndata, char* wr_spi_data, SerialDriver *screen=NULL); char* __getControlRegister(); int __writeControlRegister(); @@ -79,7 +111,14 @@ char* rdFrequency2(); char* rdAmplitudeI(); char* rdAmplitudeQ(); + char* rdDeltaFrequency(); + char* rdUpdateClock(); + char* rdRampRateClock(); + char* rdAmplitudeRampRate(); + int isRFEnabled(); + int isAmplitudeEnabled(); + int wrMode(char mode); int wrMultiplier(char multiplier, float clock=200.0); int wrPhase1(char* phase, SerialDriver *screen=NULL); @@ -88,13 +127,21 @@ int wrFrequency2(char* freq, SerialDriver *screen=NULL); int wrAmplitudeI(char* amplitude, SerialDriver *screen=NULL); int wrAmplitudeQ(char* amplitude, SerialDriver *screen=NULL); + int wrDeltaFrequency(char* delta_freq, SerialDriver *screen=NULL); + int wrUpdateClock(char* upd_clock, SerialDriver *screen=NULL); + int wrRampRateClock(char* rr_clock, SerialDriver *screen=NULL); + int wrAmplitudeRampRate(char* ampl_ramp_rate, SerialDriver *screen=NULL); + int enableRF(); int disableRF(); + int enableAmplitude(); + int disableAmplitude(); + int defaultSettings(SerialDriver *screen=NULL); char* setCommand(unsigned short cmd, char* payload, unsigned long payload_len); char* getCmdAnswer(); unsigned long getCmdAnswerLen(); - int setAllDevice(char* payload, SerialDriver *screen=NULL); + bool wasInitialized(); char getMultiplier(); double getFreqFactor1(); @@ -102,6 +149,9 @@ char getMode(); char* getModeStr(); + int writeAllDevice(char* payload, SerialDriver *screen=NULL); + char* readAllDevice(); + }; #endif \ No newline at end of file