MSP430G2553多路ADC问题

2019-03-24 12:05发布

想用MSP430G2553做一个多路ADC,至少8个不同的ADC同时工作,不知道直接接可以实现吗?还是要用多路开关?具体实现思路应该怎样?希望大大们说得详细点,谢谢! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
wstt
2019-03-25 21:50
  1. //******************************************************************************
  2. //  MSP430G2x33/G2x53 Demo - ADC10, DTC Sample A2-0, AVcc, Single Sequence, DCO
  3. //
  4. //  Description: Sample A3/A2/A1 as single sequence with reference to AVcc.
  5. //  Software sets ADC10SC to trigger sample sequence. In Mainloop MSP430 waits
  6. //  in LPM0 to save power until ADC10 conversion complete, ADC10_ISR(DTC) will
  7. //  force exit from any LPMx in Mainloop on reti. ADC10_ISR will force any LPMx
  8. //  exit. ADC10 internal oscillator times sample period (16x) and conversion
  9. //  (13x). DTC transfers conversion code to RAM 200h - 206h. P1.0 set at start
  10. //  of conversion burst, reset on completion.
  11. //
  12. //               MSP430G2x33/G2x53
  13. //            -----------------
  14. //        /||              XIN|-
  15. //         | |                 |
  16. //         --|RST          XOUT|-
  17. //           |                 |
  18. //       >---|P1.3/A3      P1.0|-->LED
  19. //       >---|P1.2/A2          |
  20. //       >---|P1.1/A1          |
  21. //
  22. //  D. Dang
  23. //  Texas Instruments Inc.
  24. //  December 2010
  25. //   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
  26. //******************************************************************************
  27. #include  "msp430g2553.h"

  28. void main(void)
  29. {
  30.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  31.   ADC10CTL1 = INCH_3 + CONSEQ_1;            // A3/A2/A1, single sequence
  32.   ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;
  33.   ADC10DTC1 = 0x03;                         // 3 conversions
  34.   ADC10AE0 |= 0x0E;                         // P1.3,2,1 ADC10 option select
  35.   P1DIR |= 0x01;                            // Set P1.0 output

  36.   for (;;)
  37.   {
  38.     ADC10CTL0 &= ~ENC;
  39.     while (ADC10CTL1 & BUSY);               // Wait if ADC10 core is active
  40.     ADC10SA = 0x200;                        // Data buffer start
  41.     P1OUT |= 0x01;                          // P1.0 = 1
  42.     ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
  43.     __bis_SR_register(CPUOFF + GIE);        // LPM0, ADC10_ISR will force exit
  44.     P1OUT &= ~0x01;                         // P1.0 = 0
  45.   }
  46. }

  47. // ADC10 interrupt service routine
  48. #pragma vector=ADC10_VECTOR
  49. __interrupt void ADC10_ISR(void)
  50. {
  51.   __bic_SR_register_on_exit(CPUOFF);        // Clear CPUOFF bit from 0(SR)
  52. }
复制代码

一周热门 更多>

相关问题

    相关文章