Because of the Thanksgiving holiday in the U.S., TI E2E™ design support forum responses may be delayed from November 25 through December 2. Thank you for your patience.

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2340R5: CC2340R5 Errata Revision D ADC_09

Part Number: CC2340R5

Tool/software:

Dear Expert,

I care about the temperature accuracy a lot with a huge product number, CC2340 inside.

After reading the CC2340R5 Errata Revision D ADC_09 part carefully, I'm afraid I have to ask you a question.

Suppose int32_t TempDiodeGetTemp(void) from SDK file tempdiode.c is used to get the temperature, in the worst case what's the deviation of temperature in centigrade?

Please forgive to ask this, it's really complicated formula to figure this out for me.

Thank you in advance

  • Hi Jay,

    Can you clarify "deviation of temperature"?

    The accuracy of the of the ADC temperature diode is +/- 3 C if that's what you're asking.

    Best regards,

    Bun

  • Hi Bun Kuch,

    Thank you for the reply.

    "deviation of temperature":

    From CC2340R5 Errata Revision D ADC_09, " The magnitude of the jump is 64 LSBs higher or lower than the expected ADC output when ADC is used in 12-bit resolution setting."  

    Suppose "64 LSBs jump"  doesn't happen, after calling TempDiodeGetTemp and caculating, we get 20 centigrade

    If  "64 LSBs jump" happens, what could be the temperature we get?

    "The accuracy of the of the ADC temperature diode is +/- 3 C if that's what you're asking."

    I knew this from the CC2340R5 datasheet pdf.

    Another 2 questions

    From CC2340R5 Errata Revision D ADC_09, 

    The error rate can be reduced to 1 error in 80 billion ADC conversions by setting ADC.DEBUG1:CTRL[10:9] bits high.

    Q2)  This can be done by ?

    HWREG(ADC_BASE + ADC_O_DEBUG1) |= 0x600;

    Q3)  Every time we measure the temperature, ADC.DEBUG1:CTRL[10:9] bits should be set high before calling TempDiodeGetTemp(), right?

  • Hi Jay,

    1. A 64 LSB jump would implied +/- 2.27C variation, which is calculated by taking the temperate range from -40 to 105 C giving us 145.

    145/(2^12), where 12 is the number of bits in the ADC giving us 0.035C per quantized step. 0.035C * 64 LSB = 2.27C

    2. I'll have to refer to our software engineer to help answer this question

    3. same as #2

    Best regards,

    Bun

  • Hello Jay,

    2)

    Just to confirm:
    ADC_BASE is 0x40050000 

    ADC_0_DEBUG1 is 0x00000E20

    I am a little unsure where we got 0x600 as the "high" value, any extra context here?

    3) It seems like this setting is set once. 

    Thanks,
    Alex F

  • Hi Alex,

    Thank you for the reply.

    2) why 0x600 is used? It's from the CC2340R5 Errata Revision D ADC_09 part 

    The error rate can be reduced to 1 error in 80 billion ADC conversions by setting ADC.DEBUG1:CTRL[10:9] bits high.

    I supposed “hight” means the bit9 and bit10 should be 1. so the value is 0x600.  

    Is this correct?

    3) In my application, between two temperature measurements, MCU would enter deep deep sleep mode.

    So Every time before temperature measurement, ADC.DEBUG1:CTRL[10:9]  should be set, right?

  • Hi Bun,

    Thank you for the reply.

    1) For the hardware part, I think it's clear. But I'd like to ask further for the software part.

    In function int32_t TempDiodeGetTemp(void), for every temperature measurement, TempDiodeGetTemp(void) would read 12-bit ADC 10 times, 2 dummy read, 4 for high side of the diode(afterwards, get an average value) and 4 for low side of the diode(afterwards, get an average value) . 

    If the best case for ADC is +/-2.27 Centigrade, Could I expect the variation from the application side is +/-2.27/4 ?

    If you could help find a SDK engineer for this question, that'll be good.

    Thank you

    Jay

  • Hello Jay,

    2) why 0x600 is used? It's from the CC2340R5 Errata Revision D ADC_09 part 

    -Thank you for the clarification, this makes sense now, and I also got 0x600, your HWREG write here should work! 

    So Every time before temperature measurement, ADC.DEBUG1:CTRL[10:9]  should be set, right?

    -Lets try it like this for the first test, as long as the device does not completely reset the value should stick, but there should be no harm in setting (or checking) every time. 

    If the best case for ADC is +/-2.27 Centigrade, Could I expect the variation from the application side is +/-2.27/4 ?

    -As you stated I may need to reach out to the team that developed this function, however we would have 4 measurements with a +/- 2.27 variation for each individual measurement I assume. 

    Thanks,
    Alex F

  • -As you stated I may need to reach out to the team that developed this function, however we would have 4 measurements with a +/- 2.27 variation for each individual measurement I assume. 

    Thank you for helping. Looking forward to the further information.

  • Hello Jay,

    I have reached out to the internal team for more information about this function in regard to your question! Currently awaiting feedback.

    Thanks,
    Alex F

  • Hello Jay,

    I have been connected with the Indvidual familiar with the function, currently still awaiting their response to your question. 

    Thanks,
    Alex F

  • Hello Jay,

    As an update the internal is looking into your question, seems like a second order polynomial correction is applied software wise to this function, going to get the data-set measurements next.

    Thanks,
    Alex 

  • Hi Alex,

    Sorry for pushing, could I ask if there're updates for this question?

    Thanks

    Jay

  • Hi Alex,

    Could I ask if any updates?

    Best regards

    Jay

  • Hello Jay,

    Sorry for the delay, I have reached back out to the team to see if we can get that data to you. 

    Thanks,
    Alex F