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.

MSP430F5438A: safe operation of ADC at low voltage

Part Number: MSP430F5438A

Hi Everyone,

I am reviewing my application for safe operation at low voltage. It is on a MSP430F5438A.

I have the following configuration:

  • SVS/SVM High and Low - disabled
  • ADC12 measuring Vbatt using external resistor pair (fet switched) with Avcc as the reference

I want to make sure the voltage is sufficient to the msp430 for writing to the internal flash to avoid corruption.

How should I ensure that I only use the ADC12 when the voltage is greater than or equal to 2.2V as per the datasheet if I am using the ADC12 to measure the battery?

I have been looking at the SVS High to solve this problem - is that the right approach? I see I could pick the Reset Release to say 2.3V (typ - SVSMHRRL_3) to ensure when the msp430 wakes up from lpm the ADC12 reading can be trusted. In terms of the reset level, the highest 2.18V (typ) would still allow the ADC12 to operate at of specification (min 2.10V) - SVSHRVL_3.

In my application I think I have a way out of this, and this I choose not to stay awake for extended periods of time when the battery is less than 3V. This effectively means that I can rely on reset release. However, the device I am making can also be powered from a cable - and if the battery was flat (less than 2.2V) when the cable is removed, how could I determine whether I should run or not - reset and see if once again if Reset Release allows MSP430 to boot-up?

Writing this has helped me think about this - maybe the SVM High side flag would be set to indicate the voltage is lower than the reset release?

Hopefully this makes sense to someone who can help me straighten out my thinking.

Edit: If this thinking is looking okay, is SVSMHRRL_3 and SVSHRVL_3 valid - as I found my msp430 only worked with SVSHRVL_1... and also when the SVS holds the device in reset (above BOR) does it consume more current? I was seeing a 1mA.

Best Regards,James

  • Hello James,

    You can setup the SVM to give you an interrupt when it crosses the SVM thresholds. That way you can stop operations that are not valid while you are losing power (such as ADC or Flash Writing). The SVM is a monitor that allows you to get these interrupts. It works similarly to the SVS levels, but instead of just resetting your device, it give you an interrupt as you are going down (in voltage). Please also note that different SVS/SVM voltages are only available at certain VCORE levels. Please see the Power Management Module and Supply Voltage Supervisor Chapter in the User Guide for more information.
  • Hi Jace,

    Thanks for your confirmation of the approach - I have seen a lot of applications and I am bit surprised they don't make more use of the SVS and SVM.

    Q1 I have found that my msp430 boots up at 1.6V to 1.8V - which I know is less than the operating range min of 1.8V. Is the msp430 guaranteed to execute code correctly? Is it just peripherals that might not meet spec?

    My question is related to my 2 nd,

    Q2. I am using lpm4.5 in my application. My understanding is this disables SVS and SVM - is that correct? If so, is this done automatically and on exit is it restored? I think it is, effectively because on POR SVS and SVM high and low are enabled by default. But in relationship to Q1, if voltage is less than 1.8V can I rely on my code to safely configure SVS/SVM to the threshold I am interested in?

    Many thanks,

    James

  • James,

    There is some hysteresis on the SVS depending on process variation, that could cause part to startup a little before 1.8V. the CPU should not start executing code until it crosses the 1.8V threshold completely.

    Yes, SVS/SVM is turned off in LPMX.5 modes. This is ok though as to get out of LPMx.5 you basically reset the part, so SVS/SVM settings get set to default as the part comes back up. Then you go through your main loop again and get set to your application specifications.

    Make sense?
  • Did the above resolve your issue?

**Attention** This is a public forum