
Preliminary Technical Data
EVAL-AD5934EB
Rev. PrC | Page 17 of 32
Public Function phase_sweep (ByVal img As Double, ByVal real As Double) As Double
Dim theta As Double
Dim pi As Double
pi = 3.141592654
If ((real > 0) And (img > 0)) Then
theta = Atn(img / real) ' theta = arctan (imaginary part/real part)
phase2 = (theta * 180) / pi 'convert from radians to degrees
ElseIf ((real > 0) And (img < 0)) Then
theta = Atn(img / real) '4th quadrant theta = minus angle
phase2 = ((theta * 180) / pi ) +360
ElseIf ((real < 0) And (img < 0)) Then
theta = -pi + Atn(img / real) '3rd quadrant theta img/real is positive
phase2 = (theta * 180) / pi
ElseIf ((real < 0) And (img > 0)) Then
theta = pi + Atn(img / real) '2nd quadrant img/real is neg
phase2 = (theta * 180) / pi
End If
End Function
‘-----------------------------------------------------------------------------------------------------------
Private Sub Sweep ()
’ the main sweep routine
‘This routine coordinates a frequency sweep using a mid point gain factor (see datasheet).
'The gain factor at the mid-point is determined from the real and imaginary contents returned at this mid
‘point frequency and the calibration impedance.
'The bits of the status register are polled to determine when valid data is available and when the sweep is
‘complete.
'-----------------------------------------------------------------------------------------------------------
IndexArray = 0 'initialize counter variable.
Increment = NumberIncr 1 'number of increments in the sweep.
Frequency = StartFrequency 'the sweep starts from here.
‘------------------------- PROGRAM 30K Hz to the START FREQUENCY register ---------------------------------
DDSRefClockFrequency = 16E6 ‘Assuming a 16M Hz clock connected to MCLK
StartFrequency = 30E3 ‘frequency sweep starts at 30K Hz
TempStartFrequency = (StartFrequency / (DDSRefClockFrequency / 16)) * 2^27 ‘dial up code for the DDS
TempStartFrequency = Int(TempStartFrequency) ‘30K Hz = 3D70A3 hex
StartFrequencybyte0 = 163 ‘163 DECIMAL = A3 HEX
StartFrequencybyte1 = 112 ‘112 DECIMAL = 70 HEX
StartFrequencybyte2 = 61 ‘3D DECIMAL = 61 HEX
'Write in data to Start frequency register
WritetToPart &H84, StartFrequencybyte0 '84 hex lsb
WritetToPart &H83, StartFrequencybyte1 '83 hex
WritetToPart &H82, StartFrequencybyte2 '82 hex
‘--------------------------------- PROGRAM the NUMBER OF INCREMENTS register ------------------------------
‘The sweep is going to have 150 points 150 DECIMAL = 96 hex
'Write in data to Number Increments register
WritetToPart &H89, 96 ‘lsb
WritetToPart &H88, 00 ‘msb
‘--------------------------------- PROGRAM the FREQUENCY INCREMENT register ------------------------------
‘The sweep is going to have a frequency increment of 10Hz between successive points in the sweep
DDSRefClockFrequency = 16E6 ‘Assuming a 16M Hz clock connected to MCLK
FrequencyIncrements = 10 ‘frequency increment of 10Hz
TempStartFrequency = (FrequencyIncrements / (DDSRefClockFrequency / 16)) * 2^27 ‘dial up code for the DDS
TempStartFrequency = Int(TempStartFrequency) ’10 Hz = 335 decimal = 00053E hex
FrequencyIncrementbyt0 = 42 ‘1342 decimal = 53E hex