45 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // Author: https://github.com/MajicDesigns/MD_AD9833
 | |
| #pragma once
 | |
| 
 | |
| /** @}*/
 | |
| 
 | |
| // AD9833 Control Register bit definitions
 | |
| #define AD_B28 13	  ///< B28 = 1 allows a complete word to be loaded into a frequency register in
 | |
| 					  ///< two consecutive writes. When B28 = 0, the 28-bit frequency register
 | |
| 					  ///< operates as two 14-bit registers.
 | |
| #define AD_HLB 12	  ///< Control bit allows the user to continuously load the MSBs or LSBs of a
 | |
| 					  ///< frequency register while ignoring the remaining 14 bits. HLB is used
 | |
| 					  ///< in conjunction with B28; when B28 = 1, this control bit is ignored.
 | |
| #define AD_FSELECT 11 ///< Defines whether the FREQ0 register or the FREQ1 register is used in
 | |
| 					  ///< the phase accumulator.
 | |
| #define AD_PSELECT 10 ///< Defines whether the PHASE0 register or the PHASE1 register data is
 | |
| 					  ///< added to the output of the phase accumulator.
 | |
| #define AD_RESET 8	  ///< Reset = 1 resets internal registers to 0, which corresponds to an
 | |
| 					  ///< analog output of midscale. Reset = 0 disables reset.
 | |
| #define AD_SLEEP1 7	  ///< When SLEEP1 = 1, the internal MCLK clock is disabled, and the DAC output
 | |
| 					  ///< remains at its present value. When SLEEP1 = 0, MCLK is enabled.
 | |
| #define AD_SLEEP12 6  ///< SLEEP12 = 1 powers down the on-chip DAC. SLEEP12 = 0 implies that
 | |
| 					  ///< the DAC is active.
 | |
| #define AD_OPBITEN 5  ///< When OPBITEN = 1, the output of the DAC is no longer available at the
 | |
| 					  ///< VOUT pin, replaced by MSB (or MSB/2) of the DAC. When OPBITEN = 0, the
 | |
| 					  ///< DAC is connected to VOUT.
 | |
| #define AD_DIV2 3	  ///< When DIV2 = 1, the MSB of the DAC data is passed to the VOUT pin. When
 | |
| 					  ///< DIV2 = 0, the MSB/2 of the DAC data is output at the VOUT pin.
 | |
| #define AD_MODE 1	  ///< When MODE = 1, the SIN ROM is bypassed, resulting in a triangle output
 | |
| 					  ///< from the DAC. When MODE = 0, the SIN ROM is used which results in a
 | |
| 					  ///< sinusoidal signal at the output.
 | |
| 
 | |
| // AD9833 Frequency and Phase register bit definitions
 | |
| #define AD_FREQ1 15 ///< Select frequency 1 register
 | |
| #define AD_FREQ0 14 ///< Select frequency 0 register
 | |
| #define AD_PHASE 13 ///< Select the phase register
 | |
| 
 | |
| // AD9833 Freq and Phase register address identifiers
 | |
| #define SEL_FREQ0 (1 << AD_FREQ0)
 | |
| #define SEL_FREQ1 (1 << AD_FREQ1)
 | |
| #define SEL_PHASE0 (1 << AD_FREQ0 | 1 << AD_FREQ1 | 0 << AD_PHASE)
 | |
| #define SEL_PHASE1 (1 << AD_FREQ0 | 1 << AD_FREQ1 | 1 << AD_PHASE)
 | |
| 
 | |
| // AD9833 frequency and phase calculation macros
 | |
| #define AD_2POW28 (1ULL << 28) ///< Used when calculating output frequency
 |