Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of jro by
JroDDS.h@4:de495ce256b8, 2015-02-10 (annotated)
- Committer:
- miguelcordero191
- Date:
- Tue Feb 10 14:28:42 2015 +0000
- Revision:
- 4:de495ce256b8
- Parent:
- 3:f0e6c145b075
Some features were added to library
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| miguelcordero191 | 4:de495ce256b8 | 1 | #ifndef JRO_DDS |
| miguelcordero191 | 4:de495ce256b8 | 2 | #define JRO_DDS |
| miguelcordero191 | 4:de495ce256b8 | 3 | |
| miguelcordero191 | 2:3d8d52e9751c | 4 | #include "mbed.h" |
| miguelcordero191 | 2:3d8d52e9751c | 5 | #include "SerialDriver.h" |
| miguelcordero191 | 2:3d8d52e9751c | 6 | |
| miguelcordero191 | 2:3d8d52e9751c | 7 | #define SPI_BITS 8 |
| miguelcordero191 | 2:3d8d52e9751c | 8 | #define SPI_MODE 0 |
| miguelcordero191 | 2:3d8d52e9751c | 9 | #define SPI_FREQ 10000 |
| miguelcordero191 | 2:3d8d52e9751c | 10 | |
| miguelcordero191 | 3:f0e6c145b075 | 11 | #define DDS_CMD_RESET 0X10 |
| miguelcordero191 | 3:f0e6c145b075 | 12 | #define DDS_CMD_ENABLE_RF 0x11 |
| miguelcordero191 | 3:f0e6c145b075 | 13 | #define DDS_CMD_MULTIPLIER 0X12 |
| miguelcordero191 | 3:f0e6c145b075 | 14 | #define DDS_CMD_MODE 0x13 |
| miguelcordero191 | 3:f0e6c145b075 | 15 | #define DDS_CMD_FREQUENCY1 0X14 |
| miguelcordero191 | 3:f0e6c145b075 | 16 | #define DDS_CMD_FREQUENCY2 0x15 |
| miguelcordero191 | 3:f0e6c145b075 | 17 | #define DDS_CMD_PHASE1 0X16 |
| miguelcordero191 | 3:f0e6c145b075 | 18 | #define DDS_CMD_PHASE2 0x17 |
| miguelcordero191 | 3:f0e6c145b075 | 19 | #define DDS_CMD_AMPLITUDEI 0X18 |
| miguelcordero191 | 3:f0e6c145b075 | 20 | #define DDS_CMD_AMPLITUDEQ 0x19 |
| miguelcordero191 | 3:f0e6c145b075 | 21 | #define DDS_CMD_READ 0x8000 |
| miguelcordero191 | 2:3d8d52e9751c | 22 | |
| miguelcordero191 | 2:3d8d52e9751c | 23 | class DDS{ |
| miguelcordero191 | 2:3d8d52e9751c | 24 | private: |
| miguelcordero191 | 2:3d8d52e9751c | 25 | float frequency; // Work frequency in MHz |
| miguelcordero191 | 2:3d8d52e9751c | 26 | char cr_multiplier; // Multiplier 4- 20 |
| miguelcordero191 | 2:3d8d52e9751c | 27 | char cr_mode; // Single, FSK, Ramped FSK, Chirp, BPSK |
| miguelcordero191 | 2:3d8d52e9751c | 28 | bool cr_qdac_pwdn; // Q DAC power down enable: 0 -> disable |
| miguelcordero191 | 2:3d8d52e9751c | 29 | bool cr_ioupdclk; // IO Update clock enable: 0 -> input |
| miguelcordero191 | 2:3d8d52e9751c | 30 | bool cr_inv_sinc; // Inverse sinc filter enable: 0 -> enable |
| miguelcordero191 | 2:3d8d52e9751c | 31 | bool cr_osk_en; // Enable AM: 0 -> disabled |
| miguelcordero191 | 2:3d8d52e9751c | 32 | bool cr_osk_int; // ext/int output shaped control: 0 -> external |
| miguelcordero191 | 2:3d8d52e9751c | 33 | bool cr_msb_lsb; // msb/lsb bit first: 0 -> MSB |
| miguelcordero191 | 2:3d8d52e9751c | 34 | bool cr_sdo; // SDO pin active: 0 -> inactive |
| miguelcordero191 | 2:3d8d52e9751c | 35 | |
| miguelcordero191 | 2:3d8d52e9751c | 36 | SPI *spi_device; |
| miguelcordero191 | 2:3d8d52e9751c | 37 | //DDS I/O |
| miguelcordero191 | 2:3d8d52e9751c | 38 | DigitalOut *dds_mreset; |
| miguelcordero191 | 2:3d8d52e9751c | 39 | DigitalOut *dds_outramp; |
| miguelcordero191 | 2:3d8d52e9751c | 40 | DigitalOut *dds_sp_mode; |
| miguelcordero191 | 2:3d8d52e9751c | 41 | DigitalOut *dds_cs; |
| miguelcordero191 | 2:3d8d52e9751c | 42 | DigitalOut *dds_io_reset; |
| miguelcordero191 | 2:3d8d52e9751c | 43 | DigitalInOut *dds_updclk; |
| miguelcordero191 | 2:3d8d52e9751c | 44 | |
| miguelcordero191 | 2:3d8d52e9751c | 45 | char frequency1[6]; |
| miguelcordero191 | 2:3d8d52e9751c | 46 | char frequency2[6]; |
| miguelcordero191 | 2:3d8d52e9751c | 47 | char phase1[2]; |
| miguelcordero191 | 2:3d8d52e9751c | 48 | char phase2[2]; |
| miguelcordero191 | 2:3d8d52e9751c | 49 | char amplitudeI[2]; |
| miguelcordero191 | 2:3d8d52e9751c | 50 | char amplitudeQ[2]; |
| miguelcordero191 | 2:3d8d52e9751c | 51 | bool rf_enabled; |
| miguelcordero191 | 2:3d8d52e9751c | 52 | |
| miguelcordero191 | 2:3d8d52e9751c | 53 | char* cmd_answer; |
| miguelcordero191 | 2:3d8d52e9751c | 54 | unsigned long cmd_answer_len; |
| miguelcordero191 | 2:3d8d52e9751c | 55 | |
| miguelcordero191 | 2:3d8d52e9751c | 56 | int __writeData(char addr, char ndata, const char* data); |
| miguelcordero191 | 2:3d8d52e9751c | 57 | char* __readData(char addr, char ndata); |
| miguelcordero191 | 2:3d8d52e9751c | 58 | int __writeDataAndVerify(char addr, char ndata, const char* wr_spi_data, SerialDriver *screen=NULL); |
| miguelcordero191 | 2:3d8d52e9751c | 59 | char* __getControlRegister(); |
| miguelcordero191 | 2:3d8d52e9751c | 60 | int __writeControlRegister(); |
| miguelcordero191 | 2:3d8d52e9751c | 61 | |
| miguelcordero191 | 2:3d8d52e9751c | 62 | public: |
| miguelcordero191 | 2:3d8d52e9751c | 63 | bool isConfig; |
| miguelcordero191 | 2:3d8d52e9751c | 64 | |
| miguelcordero191 | 2:3d8d52e9751c | 65 | DDS(SPI *spi_dev, DigitalOut *mreset, DigitalOut *outramp, DigitalOut *spmode, DigitalOut *cs, DigitalOut *ioreset, DigitalInOut *updclk); |
| miguelcordero191 | 2:3d8d52e9751c | 66 | int init(); |
| miguelcordero191 | 2:3d8d52e9751c | 67 | int reset(); |
| miguelcordero191 | 2:3d8d52e9751c | 68 | int scanIOUpdate(); |
| miguelcordero191 | 2:3d8d52e9751c | 69 | int find(); |
| miguelcordero191 | 2:3d8d52e9751c | 70 | char* rdMode(); |
| miguelcordero191 | 2:3d8d52e9751c | 71 | char* rdMultiplier(); |
| miguelcordero191 | 2:3d8d52e9751c | 72 | char* rdPhase1(); |
| miguelcordero191 | 2:3d8d52e9751c | 73 | char* rdPhase2(); |
| miguelcordero191 | 2:3d8d52e9751c | 74 | char* rdFrequency1(); |
| miguelcordero191 | 2:3d8d52e9751c | 75 | char* rdFrequency2(); |
| miguelcordero191 | 2:3d8d52e9751c | 76 | char* rdAmplitudeI(); |
| miguelcordero191 | 2:3d8d52e9751c | 77 | char* rdAmplitudeQ(); |
| miguelcordero191 | 4:de495ce256b8 | 78 | int isRFEnabled(); |
| miguelcordero191 | 2:3d8d52e9751c | 79 | int wrMode(char mode); |
| miguelcordero191 | 2:3d8d52e9751c | 80 | int wrMultiplier(char multiplier, float clock); |
| miguelcordero191 | 2:3d8d52e9751c | 81 | int wrPhase1(char* phase, SerialDriver *screen=NULL); |
| miguelcordero191 | 2:3d8d52e9751c | 82 | int wrPhase2(char* phase, SerialDriver *screen=NULL); |
| miguelcordero191 | 2:3d8d52e9751c | 83 | int wrFrequency1(char* freq, SerialDriver *screen=NULL); |
| miguelcordero191 | 2:3d8d52e9751c | 84 | int wrFrequency2(char* freq, SerialDriver *screen=NULL); |
| miguelcordero191 | 2:3d8d52e9751c | 85 | int wrAmplitudeI(char* amplitude, SerialDriver *screen=NULL); |
| miguelcordero191 | 2:3d8d52e9751c | 86 | int wrAmplitudeQ(char* amplitude, SerialDriver *screen=NULL); |
| miguelcordero191 | 2:3d8d52e9751c | 87 | int enableRF(); |
| miguelcordero191 | 2:3d8d52e9751c | 88 | int disableRF(); |
| miguelcordero191 | 2:3d8d52e9751c | 89 | int defaultSettings(SerialDriver *screen=NULL); |
| miguelcordero191 | 2:3d8d52e9751c | 90 | char* setCommand(unsigned short cmd, char* payload, unsigned long payload_len); |
| miguelcordero191 | 2:3d8d52e9751c | 91 | char* getCmdAnswer(); |
| miguelcordero191 | 2:3d8d52e9751c | 92 | unsigned long getCmdAnswerLen(); |
| miguelcordero191 | 2:3d8d52e9751c | 93 | int setAllDevice(char* payload, SerialDriver *screen=NULL); |
| miguelcordero191 | 4:de495ce256b8 | 94 | bool wasInitialized(); |
| miguelcordero191 | 2:3d8d52e9751c | 95 | |
| miguelcordero191 | 4:de495ce256b8 | 96 | }; |
| miguelcordero191 | 4:de495ce256b8 | 97 | |
| miguelcordero191 | 4:de495ce256b8 | 98 | #endif |
