Achieving maximum ADC conversion rate

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Achieving maximum ADC conversion rate

Jump to solution
880 Views
shrutikharwandi
Contributor I

Hello,

I'm using Kinetis Design Studio 3.0.0 for the controller MK02FN128VFM10. I'm using 16 bit differential configuration for ADC for  my project.

As mentioned in the datasheet, with no hardware averaging, maximum ADC conversion rate of 461 KSamples per second can be attained. But in my case, with this specification I'm getting 90 KSamples per second.

So how to achieve the maximum ADC conversion rate?

Also, in the datasheet, 'To use the maximum ADC conversion clock frequency, CFG2[ADHSC] must be set and CFG1[ADLPC] must be clear.' is mentioned. These settings are already done, so according to it maximum ADC conversion clock frequency is in operation.

How to tackle with  this issue? Please help.

Reply awaited.

Labels (1)
0 Kudos
1 Solution
777 Views
rastislav_pavlanin
NXP Employee
NXP Employee

Hi,

yes, it is pretty simple. If the bus is 40MHz then just look at the ADC clock divider (ADIV) and ADC input clock (ADICLK) then ADCCLK = ADICLK/ADIV.

NOTE: if 40MHz bus lcok is selected, and ADC input lock is BUSCLK then you will not get the best conversion speed, as for maximum speed ADCCLK need to be 12MHz. The is not integer divider for 40MHz which will results in 12MHz.

regards

R. 

View solution in original post

0 Kudos
4 Replies
777 Views
rastislav_pavlanin
NXP Employee
NXP Employee

Hello,

there are not enough of information in your message.

BUS clk?

ADC clk?

SFCAdder = 5 cycles of ADCCLK + 5 BUSCLK

averaging = disabled (1 average number factor)

high speed mode = enabled (2 cycles ADCCLK)

converison mode = 16 bits and differencial mode = enabled (34 cycles ADCCLK base conversion time BCT)

sample time = shortest (0 cycles of ADCCLK)

pastedImage_6.png

If I will consider peripheral bus clock BUSCLK = 48MHz divided by 4 to get ADCCLK = 12MHz then:

ConversionTime = 5*(1/12000000)+5*(1/48000000)+1*(34+0+2)*(1/12000000)=~3.52us -> ~284kSamples

What you can see in datasheet is the value of single-ended channel.

However, consider that with such configuration the resulting accuracy will be lower. i do not recommend to measure a signals with higher external impedance. This should be minimazes as possible. The based way is supply the ADC input from OA output (follower circuit). 

regards

R.

0 Kudos
777 Views
shrutikharwandi
Contributor I

Hi,

My bus clock is 40 MHz.

ADC clock is what I want to figure out.

0 Kudos
778 Views
rastislav_pavlanin
NXP Employee
NXP Employee

Hi,

yes, it is pretty simple. If the bus is 40MHz then just look at the ADC clock divider (ADIV) and ADC input clock (ADICLK) then ADCCLK = ADICLK/ADIV.

NOTE: if 40MHz bus lcok is selected, and ADC input lock is BUSCLK then you will not get the best conversion speed, as for maximum speed ADCCLK need to be 12MHz. The is not integer divider for 40MHz which will results in 12MHz.

regards

R. 

0 Kudos
777 Views
shrutikharwandi
Contributor I

Thanks a lot :smileyhappy:

0 Kudos