Author Topic: RP2040 DNL errata  (Read 2095 times)

0 Members and 1 Guest are viewing this topic.

Offline profdc9Topic starter

  • Frequent Contributor
  • **
  • Posts: 332
  • Country: us
RP2040 DNL errata
« on: May 22, 2023, 03:29:36 am »
The RP2040 has a very high DNL (errata RP2040-E11) due to some error in the fabrication of the successive approximation capacitors.  Does anyone know if this has been fixed or will be fixed in a future version?

You can read about it here:

https://www.hackster.io/news/raspberry-pi-confirms-it-is-investigating-a-flaw-in-the-raspberry-pi-pico-rp2040-adc-95c393b55dfb
https://electronics.stackexchange.com/questions/613537/how-is-this-peak-dnl-error-in-rp2040-adc-realised-in-actual-use

 

Offline hubi

  • Regular Contributor
  • *
  • Posts: 57
  • Country: us
Re: RP2040 DNL errata
« Reply #1 on: May 22, 2023, 06:15:00 am »
AFAIK, it has not been fixed. See this post on the pico forum from late 2021: https://forums.raspberrypi.com/viewtopic.php?t=323704. I have not seen anything since then about a fix, but maybe I missed it.

 

Offline SiliconWizard

  • Super Contributor
  • ***
  • Posts: 14925
  • Country: fr
Re: RP2040 DNL errata
« Reply #2 on: May 22, 2023, 06:42:41 am »
Chances are, at this point, people already using the RP2040 have found a workaround. I'm betting the RPi didn't expect this chip to become so "popular".

It may be better for them to release a new, improved variant rather than fix this one, in terms of cost and overall relevance. With the experience they gathered with this first MCU, I'm sure they can come up with something pretty interesting.

 

Offline rteodor

  • Regular Contributor
  • *
  • Posts: 139
  • Country: ro
Re: RP2040 DNL errata
« Reply #3 on: May 22, 2023, 07:18:07 am »
Chances are, at this point, people already using the RP2040 have found a workaround.

A look-up table maybe ?
 

Offline Kleinstein

  • Super Contributor
  • ***
  • Posts: 14502
  • Country: de
Re: RP2040 DNL errata
« Reply #4 on: May 22, 2023, 08:28:30 am »
No need for a lookup table. The "correction"  is relatively simple. So this can be done with relatively simple direct math.  If the result is 512, 1536, 2560 or 3584 add 4.  Otherwise if the 1024 valued bit is set for the ADC result + 512 add some 7 or 8 (8 is the easier case). With enough free memory the lookup table would still be viable.

However the problem with too large bins stays and can not really be solved. With a result of 512 , 1536, .... you are just in the bad spots of the ADC and digitally nothing can be done to correct te local error. One would need more like an analog solution of shifting the input signal instead. To some degree and with enough noise oversampling (ideally including the correction above) could also help. So for slow sensors would could work around.

With the described HW problem the ADC is just more of a 9 bit ADC than a 12 bit ADC. For quite some used this is still good enough and quite some application of the RP2040 don't even used the ADC at all. In the current state the RP2040 is not a good solution if you need a good ADC.
 
The following users thanked this post: SiliconWizard, rteodor


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf