본문 바로가기

[MSP430]/MSP430_AFE

[MSP430AFE EVM] 24bit ADC테스트 - LCD에 ADC24 데이터 그래프 표시하기

[MSP430AFE EVM] 24bit ADC테스트 - LCD에 ADC24 데이터 그래프 표시하기

 

 

MSP430AFE2xx 의 가장 큰 특징은 24bit ADC를 내장하고 저전력, 저가격의 MCU이다.

ADC특징을 보면 아래와 같다.

 

Features of the SD24_A include
-Up to three 24-bit second-order ΣΔ ADC
- Differential inputs o Simultaneous sampling
- Oversampling of up to 1024
- Integrated Programmable Gain amplifier of gains up to 32
- Integrated temperature and voltage sensor
- Integrated accurate 1.2V ADC reference with 18ppm/ ºC

 

 

MSP430AFE253은 DIFF 3채널의 24bit ADC가 있다.

 

 

 

 

MSP430AFE2xx ADC24블록도

 

 

 

 

MSP430 ADC24 출력 포멧

24bit ADC 이지만 출력레지스터 SD24MEMx는 16비트 레지스트 이고 24bit를 읽기 위해서는 SD24CCTLx의 SD24LSBACC비트를 설정해 주어야 한다.

SD24LSBACC = 0 -> 상위 16비트

SD24LSBACC = 1 -> 하위 16비트

 

 

 

MSP430 AFE ADC24 초기화

    SD24CTL = SD24REFON+SD24SSEL0;            // 1.2V ref, SMCLK
    SD24CCTL0 |= SD24IE + SD24DF;            // CH0, enable interrupt

 

    for (i = 0; i < 0x3600; i++);             // Delay for 1.2V ref startup

 

 

 

ADC 인터럽트 처리 코드

24bit로 데이터 받으면 값이 좀 이상하다.(아무래도 오버샘플링으로 비트수를 늘이는것 같은데, 이부분은 좀더 들여다 봐야 할것 같다.)

우선 상위 16비트만을 이용해 처리하도록 했다.

 #pragma vector=SD24_VECTOR
__interrupt void SD24AISR(void)
{
  switch (SD24IV)
  {
  case 2:                                   // SD24MEM Overflow
    break;

 

  case 4:                                   // SD24MEM0 IFG

      //하위 16비트 데이터
      Sbi(SD24CCTL0, SD24LSBACC);
      adc_value = SD24MEM0;

 

      //상위 16비트 데이터

      Cbi(SD24CCTL0, SD24LSBACC);
      //adc_value = (SD24MEM0<<16) | adc_value;

      adc_value = (SD24MEM0);
    break;


  case 6: 


    break;
  case 8:                                   // SD24MEM2 IFG
                       // Save CH2 results (clears IFG)
    break;
  }

   __bic_SR_register_on_exit(LPM0_bits);    // Exit LPM0
}

 

 

 

 

 

MSP430AEF ADC24 테스트 동영상

24bit ADC A0, A1에 연결되 VR값을 TFT LCD에 출력하는 예제를 테스트 했다.

 

반응형