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.

questions on Sigma Delta ADC (SD16_A) operation

Other Parts Discussed in Thread: MSP430F4270, MSP430F47163

Hi, I am new to microprocessors and I am a little bit confused on conversion modes of SD16 module.

There are 5 analog differential input pairs on MSP430F4270. According to the document SLAU056F - msp430x+xxFamilyUserGuide.pdf, converted data is continuously being written to register SD16MEM. (See Fig Figure 27−7 on page 27-12). Now my question is,

-          are these values from continuous conversions written to the same memory? (So, after continous conversion is completed and SD16SC bit is cleared by software, if I read the memory, I will only have the latest conversion result.)

-          or, do I need to sum up all values converted during continuous conversion and calculate the arithmetic mean myself in the code? Or does it already do it?

-          I want to measure and display 3 different values. Is it possible to make synchronous conversions on different input pairs? Is there only one SD16Mem register? Or are there different registers for each input pair?

-          Is it possible to use PGA for each input pair? ( A0-A4 )

Any help is appreciated!

Thanks.

RestlessSoul.

  • Well, Sigma-Delta converter is a special kind of A/D converter. To explain it simply, it is a 1-bit converter where oversampling is heavily done and by this a resolution of 16-bits and more can be reached. If you search in the web for sigma delta converter tutorials you will find a lot of stuff.....

    In MSP430F4270 there is the SD16_A module. You find a detailed description about this module in the "MSP430x4xx Users' Guide".
    Each Channel is basically an own SD converter. Usually you will select a differential input for one channel and do the needed conversion. The OSR (OverSampling Ratio) defines how many 1-bit conversions should be used to get you "final" conversion result. Best way is to use interrupts to detect, when the conversion is completed.

    There are also code examples on the web that shows how to use the SD16_A module. On the product folder site (http://www.ti.com/product/msp430f4270) you find "MSP430F42x0 Code Examples (Rev. D) " . Download the zip file and you get several SD16_A code examples    ;o)

  • restlesssoul said:
    are these values from continuous conversions written to the same memory?


    Depends on the chip.
    Some MSPs have several independent SD16 units (e.g. the MSP430F47xxx devices). here each channel ahs its own conversion result register.
    On most MSPs, however, there is only one SD16. Sampling form multiple channels is done by analog multiplexing the inputs. So for the converter it makes no difference whether you use different or the same channel (except for the need to discard the first results after switching a channel).

    So after a continuous conversion is done, you'll have only the last result and all others are gone. You'll need to read the result after each individual conversion. (depending on the MSP, there may be hardware to help you, such as a DMA controller that can auto-transfer each result to a target ram area)

    restlesssoul said:
    or, do I need to sum up all values converted during continuous conversion and calculate the arithmetic mean myself in the code?

    Depends on what you want to get. If you need the RMS value from a sampled AC waveform, yes, you'll need to do it by your self.
    The SD16 will filter out (average) any AC signal that has a higher frequency than the sampling frequency divided by the oversampling ratio. That's inherent. But for everything else, the SD16 will give you 'snapshots' of the momentary voltage level on the input. No RMS calculations or whatever. (well, it would be useless for voice recording or similar things otherwise)

    restlesssoul said:
    Is it possible to make synchronous conversions on different input pairs

    Only if oyu use one of the MSPs with multiple SD16 modules. E.g. the MSP430F47163

     

  • Jens-Michael and Voyager,

    I really thank you for your quick and explanatory responses. You have enlightened most of the things that I could not figure out.

    So, I understand that since I am using F4270 with only one SD16_A, it is not possible to make 3 continuous conversions. (even if I use 3 different inputs, it will not be synchronous.) Since it has only one SD16Mem Register, I need to read the result after each conversion it performs on different inputs. 

    Thanks.

    RestlessSoul.

     

  • Just a quick correction on a typo I did on my previous post:

     I understand that since I am using F4270 with only one SD16_A, it is not possible to make 3 synchronous conversions. 

  • restlesssoul said:
     I understand that since I am using F4270 with only one SD16_A, it is not possible to make 3 synchronous conversions. 

    Yes, unfortunately that's true. Only the devices with more than one separate SD16 module can do this.
    BTW, the other ADCs, ADC10 and ADC12 have the same problem. But since they allow a much higher sample rate (at a reduced resolution of 12 or 10 bit) of up to 200kHz, and switching penalty for different channels, the time difference of sequential conversions might be negligible (depending on the application). Between the first and last result of a conversion triple, there are only 10µs.
    On the SD16 with 1024x oversampling, there are ~8 ms (including the requried discard of the first three samples after a channel switch). Best case (only 32x oversampling and only 1 dropped result in-between, which leads to only 14 bit resolution and significant crosstalk), it is still a delay of 128µs between first and last sample.