Maximum possible SAADC differential voltage between AN0 and AN1 pins

Hi! I want to measure voltage from a small inductor connected differentially to AN0 (Vp potential to GND) and AN1 (Vn potential to GND) directly. And I'm thinking to properly scale its voltage down externally by resistors (if needed)!

My power supply of NRF5340 is VDD=1.8V. I have configured SAADC to use its internal Vref=0.6V and SAADC Gain=1/6, so I can expect I can measure as follows:

Vdiff = Vp - Vn = 1.8 - (-1.8) = +3.6V

Vdiff = Vp - Vn = -1.8 - 1.8 = -3.6V

So the maximum voltage peak-to-peak I can measure looks like to be Vpp=3.6V.

Am I right in my interpretation?

PS1: I assume in SAADC differential mode the Vp/Vn potential can be negative compared to ground!

PS2: None of the AN0 and AN1 is grounded!

  • Differential mode works as you expect; however neither Vp nor Vn can go below Gnd or above VDD and if they do the internal schottky clamp diodes will clamp Vp/Vn at +300mV above VDD or -300mV below GND (approx values). In practice the SAADC will work if Vp or Vn goes (say) to -100mV, but even though it sort of works that is outside specification of the nRF52. A simple solution is to use external FET (analogue) switches to periodically connect a flying capacitor to R and then diconnect from R and connect that capacitor to Vp and Vnor Vp and GND.

  • Here's an example of using a Flying Capacitor - Simplest single-phase, single SAADC Input. Can use two inputs and also multiple phase but this works pretty well and save the extra analogue input.

    SPDT Switch, must be Break-before-Make; select one with both single-supply and negative input voltage capability, example max4765.pdf or higher input voltage MAX20327.pdf

    // Flying Capacitor - Simplest single-phase, single SAADC Input
    //
    //                                            +----------------------------------------------+
    //                                            |                 nRF52832                     |
    //                           +------#---------0---< PWM                                      |
    //                           |      |         |                                              |
    //                           |      |         |    VDD                                       |
    //                           |      |         |   --#--                                      |
    //                           |      |         |     |                                        |
    //                           |      |         |     |   Option                               |
    //                           |      |         |     +-|   160k                               |
    //                           |      |         |       |<- High                               |
    //                           |      |         |     +-|   Bias                               |
    //                           ~      |         |     |                                        |
    //     +------#----------- 0   0--------------O-----#------------#------#--> P0.nn SAADC     |
    //     |      |             \       |         |     |   Option   |      |    Ref = Int       |
    //     |      |              \      |         |     +-|   160k  +++     |                    |
    //     |      |              0      |         |       |<- Low   | |   -----                  |
    //     @     +++             |      |         |     +-|   Bias  | |   -----                  |
    //     @     | |           -----    |         |     |           +++     | 2.5pF              |
    //     @     | |           -----    |         |     |            |1M0   |                    |
    //     @     +++             | C    |         |   =====        =====  =====                  |
    //     | L    | R            0      |         |    ===          ===    ===                   |
    //     |      |              /      |         |     =            =      =                    |
    //     |      |             /       |         |                                              |
    //     +------#------------0   0--------------0-----+    <== Gnd or use 2nd SAADC Input      |
    //                           ~      |         |     |                                        |
    //                           |      |         |   =====                                      |
    //                           +------+         |    ===                                       |
    //                                            |     =                                        |
    //                                            +----------------------------------------------+

  • Thank you so much for your recommendations! I'll consider what you are sharing for the new design of the device.

  • I was hoping that when a pin is mux-ed to the SAADC in differential mode it will be directly routed to SAADC with no TVS protection but obviously this is not the case. Thanks again!

Related