Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Which data about gain and offfset errors is stored in 0x10000024 address in nRF51822 rev 1 and 2 and where the document with this information can be downloaded from?

Hi, everyone,
We develope the BLE project on nRF51822 tool that uses the ADC.
But the read measures are different from IC to IC.
At the link devzone.nordicsemi.com/.../how-to-calibrate-the-nrf51-adc-to-correct-offset-and-gain-error we had found the required information about the offset and gain errors data that exists in 0x10000024 address of memory, but according to this link it is actual for revision 3 only.
Due this reason I have some questions:

1. Which data in this case exists in the memory 0x10000024 address on the chips from revision 1 and 2? Is this data neutral (offset_error == gain_error == 0) or before implimenting it the chip's revision must be checked?
2. The information about offset and gain errors we couldn't find neigher in "nRF1822_PS_v3.3.pdf" nor in "nRF51_RM_v3.0.pdf" files. Even in "NRF_FICR_Type" struct that exists in "nrf51.h" file this region of the FICR memory is defined as reserved. Where can be found the manual pdf file whith full infomration about gain and ofset errors in addition to this link in internet?

Thanks forward for paying attention.

Parents
  • Hello,

    The FICR is an internal register, so you will not be able to change anything there.

    What range do you see on your measurements? Are the values significantly different between each device? What are you measuring on? Some external device? Do you use two different pins for GND and V+ on the voltage you are measureing, or only the V+? See the snippet below from nrf_drv_saadc.h

     


    /**
    * @brief Macro for setting @ref nrf_saadc_channel_config_t to default settings
    * in single ended mode.
    *
    * @param PIN_P Analog input.
    */
    #define NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(PIN_P) \
    { \
    .resistor_p = NRF_SAADC_RESISTOR_DISABLED, \
    .resistor_n = NRF_SAADC_RESISTOR_DISABLED, \
    .gain = NRF_SAADC_GAIN1_6, \
    .reference = NRF_SAADC_REFERENCE_INTERNAL, \
    .acq_time = NRF_SAADC_ACQTIME_10US, \
    .mode = NRF_SAADC_MODE_SINGLE_ENDED, \
    .burst = NRF_SAADC_BURST_DISABLED, \
    .pin_p = (nrf_saadc_input_t)(PIN_P), \
    .pin_n = NRF_SAADC_INPUT_DISABLED \
    }

     

     

    Best regards,

    Edvin

Reply
  • Hello,

    The FICR is an internal register, so you will not be able to change anything there.

    What range do you see on your measurements? Are the values significantly different between each device? What are you measuring on? Some external device? Do you use two different pins for GND and V+ on the voltage you are measureing, or only the V+? See the snippet below from nrf_drv_saadc.h

     


    /**
    * @brief Macro for setting @ref nrf_saadc_channel_config_t to default settings
    * in single ended mode.
    *
    * @param PIN_P Analog input.
    */
    #define NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(PIN_P) \
    { \
    .resistor_p = NRF_SAADC_RESISTOR_DISABLED, \
    .resistor_n = NRF_SAADC_RESISTOR_DISABLED, \
    .gain = NRF_SAADC_GAIN1_6, \
    .reference = NRF_SAADC_REFERENCE_INTERNAL, \
    .acq_time = NRF_SAADC_ACQTIME_10US, \
    .mode = NRF_SAADC_MODE_SINGLE_ENDED, \
    .burst = NRF_SAADC_BURST_DISABLED, \
    .pin_p = (nrf_saadc_input_t)(PIN_P), \
    .pin_n = NRF_SAADC_INPUT_DISABLED \
    }

     

     

    Best regards,

    Edvin

Children
No Data
Related