I want to plot the phase vs frequency plot using the sweep signal.

My sweep signal looks like this: every cycle is of 1sec which is made up of 1msec sine burst + remaining zero volts. So, in 1st second, I am sending 1ms of 1KHz burst + 0.999sec of zero volts. In 2nd second, I am sending 1ms of 2KHz burst + 0.999sec of zero volts............in 100th second, 1ms of 100KHz burst + 0.999sec of zero volts.

I am sweeping from 1Khz to 100KHz with sampling frequency = 500K S/s.

I made phase vs freq plot using cross correlation function between RC filtered signal and original signal. You can see the image attached. I am using cross - correlation to find the phase difference between the received signal (from the RC circuit) and original signal. I am getting accurate results for lower frequencies but bad results for higher frequencies.

Also, I made amplitude vs frequency graph using fft and got good result. But this is not the exact result. You can see the image attached.

My questions are:

1) Is bad results for phase estimation is due to the less sampling frequency? I mean, for 50KHz, the sampling freq 500K S/s is enough but for 100KHz may be it is not enough.

2) Which is better method to estimate phase difference between original and RC filtered signal? FFT or corss-correlation?

3) Can I estimate the amplitude Vs freq plot using cross-correlation? How can I estimate the amplitude of the signal from the cross-correlation data?

It looks like at least some of the irregularity in the phase plot at high frequencies is due to noise as the amplitude of your signal goes down. Yes, a sampling rate only 5 times higher than the signal is probably causing problems in this context, but unless you're already compensating for the delay of the zero-order hold effect of your DAC (and not getting it quite right) then the measured phase is deviating the wrong way for a sampling-rate related problem.

If you have enough processing resources, I would suggest that you keep your tone going for longer. Also, if you ever intend to measure things with a high Q-factor, the length of time you keep the tone on needs to be at least on the order of 1/(bandwidth). You might want to run your tone for the whole second, and if you have processor constraints, keep the last bit of it.