I'm using the AD5933 with a custom AFE. I don't use AD5933's frequency sweep feature, I only do single freq measurement.
Since I want to measure impedance from 10Hz up to 100kHz, I need to adapt the MCLK. Instead of defining MCLK ranges as suggested in UG-364 , I opted for an adaptive strategy where the best MCLK is generated on the fly by an external clock generator for each frequency. The idea behind this strategy is to ensure that the MCLK is always an integer multiple of the excitatory frequency. The MCLK is calculated on the fly by the following formula
MCLK = OutFreq * 16 * 1024 / NbPeriods
Where OutFreq is the excitatory frequency and NbPeriods is the number of periods the DFT is feeded with. Note that in practice the applied MCLK is not exact because of rounding errors and limited resolution of the clock generator. This error is of max +/- 500Hz.
The results of a log spaced frequency sweep from 10Hz to 100kHz of a resistor are shown in the attached picture (amplitude and phase). The overall plot looks as expected, but there are some artifacts around the 1kHz range. I have found that those artifacts depend on the value of NbPeriods. High value of NbPeriods tend to decrease artifacts in the 1kHz range but increase artifacts in the lower freq range whereas low value of NbPeriods tend to increase artifacts in the 1kHz range but decrease artifacts in the lower freq range.
Has anyone an explanation for this phenomena ? Has it to do with the DDS harmonics that are MCLK dependent and in this case OutFreq dependent ? Do you see any problem in my adaptive MCLK approach ?