You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
KED/ked/device_drivers/ad9833/ad9833.h

152 lines
2.6 KiB

#ifndef _AD9833_H_
#define _AD9833_H_
#include <stdint.h>
#include "spi.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
spi_ch_t *spiCH;
uint16_t ctrlReg;
} ad9833_t;
typedef enum{
INACTIVE = 0x0000,
DAC_POWERDOWN = 0x0040,
INTERNAL_CLK_DISSABLE = 0x0080,
DAC_AND_INT_CLK_DISSABLE = 0x00C0
}ad9833_sleepMode_t;
/**
* @brief
*
* @param device
* @param sleepMode
*/
void ad9833_init(
ad9833_t *device,
ad9833_sleepMode_t sleepMode,
uint16_t f0,
uint16_t f1,
uint16_t p0,
uint16_t p1);
/**
* @brief
*
* @param device
* @param fref
*/
void ad9833_setRefFrequency(
ad9833_t *device,
float fref);
/**
* @brief Reset Device
*
* The reset function resets appropriate internal registers to 0 to provide an
* analog output of midscale. Reset does not reset the phase, frequency, or
* control registers. When the AD9833 is powered up, the part should be reset.
* To reset the AD9833, set the reset bit to 1. To take the part out of reset,
* set the bit to 0. A signal appears at the DAC to output eight MCLK cycles
* after reset is set to 0.
*
* the latter was quoted from datasheet ad9833 Rev.D from Analog Devices
* @param device
*/
void ad9833_reset(
ad9833_t *device);
/**
* @brief Set different different sections in powerdown mode
*
* Different Sections can be put into powerdown to save power.
*
* The following modes can be set:
*
* No power-down = INACTIVE
* DAC powered down = DAC_POWERDOWN
* Internal clock disabled = INTERNAL_CLK_DISSABLE
* Both the DAC powered down = DAC_AND_INT_CLK_DISSABLE
* and the internal clock disabled
* @param device
* @param sleepMode
*/
void ad9833_setSleepMode(
ad9833_t *device,
ad9833_sleepMode_t sleepMode);
/**
* @brief
*
* @param device
*/
void ad9833_setOutputSinosoidal(
ad9833_t *device);
/**
* @brief
*
* @param device
*/
void ad9833_setOutputTrangle(
ad9833_t *device);
/**
* @brief
*
* @param device
*/
void ad9833_setOutputMSBofDACData(
ad9833_t *device);
/**
* @brief
*
* @param device
* @param f0
*/
void ad9833_setFrequency0(
ad9833_t *device,
uint16_t f0);
/**
* @brief
*
* @param device
* @param f1
*/
void ad9833_setFrequency1(
ad9833_t *device,
uint16_t f1);
/**
* @brief
*
* @param device
* @param p0
*/
void ad9833_setPhase0(
ad9833_t *device,
uint32_t p0);
/**
* @brief
*
* @param device
* @param p1
*/
void ad9833_setPhase1(
ad9833_t *device,
uint32_t p1);
#ifdef __cplusplus
}
#endif
#endif // _AD9833_H_