分享讨论——MSP430AFE253的SD24采集程序调试

2019-07-21 20:48发布

如题,这个主要是介绍其最主要的24位的ad采集的程序的,我把程序的粘贴出来的,大家学习并加以讨论的啦,,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
chuntian2016
1楼-- · 2019-07-22 01:08
这个单路差分信号的数据采集的,,
A SD24 interrupt occurs whenever a conversion has completed. Test by applying a voltage to channel 2 (A2.0+, A2.0-) and setting a breakpoint at the line indicated below.
Run program until it reaches the breakpoint, then use the debugger's watch window to view the conversion results. Conversion results are stored in the array, "results".
//  ACLK = n/a, MCLK = SMCLK = DCO =  ~ 1.1MHz
//  //* For Minimum Vcc required for SD24 module - see datasheet        *//
//  //* 100nF cap btw Vref and AVss is recommended when using 1.2V ref *//
chuntian2016
2楼-- · 2019-07-22 05:13
这个是硬件连接示意图的

//
//                MSP430AFE25x
//                 -----------------
//             /||              XIN|-
//              | |                 |
//              --|RST          XOUT|-
//            |                 |
// Vin+ -->|A2.0+        |
//  Vin- -->|A2.0-         |
//            |                 |
//            |         VREF |---+
//            |                 |   |
//            |                 |  -+- 100nF
//            |                 |  -+-
//            |                 |   |
//            |         AVss |---+
//            |                 |
chuntian2016
3楼-- · 2019-07-22 07:19
好了,直接分享程序代码的了
#include <msp430afe253.h>

#define   Num_of_Results   8

/* Arrays to store SD24 conversion results */
/* NOTE: arrays need to be global to       */
/*       prevent removal by compiler       */
unsigned int results[Num_of_Results];

void main(void)
{
  volatile unsigned int i;                  // Use volatile to prevent removal
                                            // by compiler optimization

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  SD24CTL = SD24REFON + SD24SSEL0;          // 1.2V ref, SMCLK
  SD24INCTL2 |= SD24INTDLY0;                // Interrupt on 3rd sample
  SD24CCTL2 |= SD24IE ;                     // Enable interrupt
  for (i = 0; i < 0x3600; i++);             // Delay for 1.2V ref startup
  
  SD24CCTL2 |= SD24SC;                      // Set bit to start conversion
  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0 w/ interrupts

}

#pragma vector=SD24_VECTOR
__interrupt void SD24AISR(void)
{
  static unsigned int index = 0;

  switch (SD24IV)
  {
    case 2:                                   // SD24MEM Overflow
      break;
    case 4:                                   // SD24MEM0 IFG
      break;
    case 6:                                   // SD24MEM1 IFG
      break;
    case 8:                                   // SD24MEM2 IFG
      results[index] = SD24MEM2;              // Save CH2 results (clears IFG)
      if (++index == Num_of_Results)
      {
        index = 0;                            // SET BREAKPOINT HERE
      }
      break;
  }
}
chuntian2016
4楼-- · 2019-07-22 12:20
 精彩回答 2  元偷偷看……
dirtwillfly
5楼-- · 2019-07-22 15:32

一周热门 更多>