63 lines
1.9 KiB
C
63 lines
1.9 KiB
C
|
|
#ifndef _DDS_H
|
||
|
|
#define _DDS_H
|
||
|
|
|
||
|
|
#include "spi.h"
|
||
|
|
#include "io.h"
|
||
|
|
|
||
|
|
#define TX_SYS_CLK 12000000 // 12MHZ
|
||
|
|
#define DDS_CLK TX_SYS_CLK
|
||
|
|
|
||
|
|
#define RAMP_300KHZ 6710886
|
||
|
|
|
||
|
|
#define FREQ_MAX_NUM 50 //Max number of frequencies allowed
|
||
|
|
#define FREQ_MIN 0
|
||
|
|
#define FREQ0_REG 0x4000 // Address of internal 9838 register
|
||
|
|
#define FRQ_CTRL_WORD1 0x2100 // Control register with Reset bit active
|
||
|
|
#define FRQ_CTRL_WORD2 0x2000 // Exit Reset Control Word
|
||
|
|
#define PHASE_RESET 0xC000 // PHASE Register 0 = 0;
|
||
|
|
|
||
|
|
#define RAMP_CTRL_WORD1 0x2102
|
||
|
|
#define RAMP_CTRL_WORD2 0x2002
|
||
|
|
#define RAMP_CTRL_WORD3 0x2002 // TODO Places wavegen in sleep mode
|
||
|
|
#define SLP_CTRL_WRD 0x2180 // Power down unused DDS
|
||
|
|
#define SLP_CTRL_WRD2 0x21C0
|
||
|
|
|
||
|
|
#define BCAST_MIN 3140
|
||
|
|
#define BCAST_MAX 200000
|
||
|
|
#define DUMMY_FRQ 250
|
||
|
|
#define MIN_BLOCK_FREQ 20000
|
||
|
|
#define MASK_15 0b00000000
|
||
|
|
#define MASK_58 0b00001000
|
||
|
|
#define MASK_144 0b00011000
|
||
|
|
#define CLK_MASK_BITS 0b11100111
|
||
|
|
#define MAX_LD_FREQ 10000
|
||
|
|
|
||
|
|
//FREQUENCY PACKING - from RX so it has extra fields
|
||
|
|
#define FREQ_PACK_MASK_FREQ 0x0007ffff //target frequency bits 0 - 18
|
||
|
|
#define FREQ_PACK_MASK_TYPE 0x00380000 //3-bit field for FREQ_TYPE_t. bits 19 - 21
|
||
|
|
#define FREQ_PACK_SHIFT_TYPE 19 //Frequency type shift
|
||
|
|
#define FREQ_PACK_MASK_ENABLED 0x80000000 //enabled mask
|
||
|
|
#define FREQ_PACK_SHIFT_ENABLED 31 //enabled shift bit 31
|
||
|
|
#define FREQ_PACK_MASK_INMENU 0x40000000 //inMenu mask
|
||
|
|
#define FREQ_PACK_SHIFT_INMENU 30 //inMenu shift bit 30
|
||
|
|
|
||
|
|
//Locate direction (LD)
|
||
|
|
#define FREQ_LD_MAX_FREQUENCY 10000 //LD runs at or below this frequency
|
||
|
|
#define FREQ_LD_SWITCH_POINT 1500 //At or below this freq, f2 is f1 * 2. above this f2 = f1 / 2
|
||
|
|
|
||
|
|
typedef struct
|
||
|
|
{
|
||
|
|
SPI_MODE_t mode;
|
||
|
|
|
||
|
|
uint32_t frequency;
|
||
|
|
|
||
|
|
// reset pin
|
||
|
|
gpio_pin_t resetPin;
|
||
|
|
|
||
|
|
} dds_t;
|
||
|
|
|
||
|
|
void dds_init(dds_t *dds, SPI_MODE_t mode, gpio_pin_t resetPin);
|
||
|
|
void dds_reset(dds_t *dds, bool reset);
|
||
|
|
void dds_sleep(dds_t *dds, bool sleep, bool disableDAC);
|
||
|
|
#endif
|