ADucM360 EVM 보드 제작 - 24bit 정밀 ADC 포함 MCU



Cortex 코어의 대세 속에서 아날로그디바이스사도 Cortex-M3코어 MCU ADucM36x를 출시 했다.

아날로그가 강점인 Analog Device사의 특징을 살려 24bit ADC를 내장한 MCU이다.


ADC특징으로 3.9 kSPS, 24-bit, 0.1% 정밀 레퍼런스를 포함하고 있다. 그리고 12bit (NPN mode for 4mA to 20mA)  DAC가 있다.

 24bit ADC를 내장한 MCU 중에는 가장 성능이 좋지 않을까 생각된다.


다만 아쉬운점은 MCU클럭 속도가 16Mhz라 속도가 필요 할때는 한계가 있다는 것이다.





ADucM360 EVM 보드 회로도 










ADucM360 블록도

블록도를 보면 24bit ADC가 독립적으로 2채널이 있고 버퍼 및 게인과 필터 까지 아날로그 측면에서는 완벽해 보인다.






ADucM360 EVM 보드는 표준화 핀맵을 이용하기 위해 SM-Type EVM 형태로 제작했다.









[ADuc7061 EVM] 24bit ADC 테스트

[AnalogDevice]/ADuc7K | 2012.11.17 16:32
Posted by nexp

[ADuc7061 EVM] 24bit ADC 테스트

ADuc7061에는 24bit ADC가 내장되어 있고 아날로그 파트에 있어 여러가지 옵션 설정을 쉽게 할수 있는 장점이 많다.

 

 

ADuc7061 ADC24 블록도

 

 

 

Aduc7601 ADC24 초기화 코드  

  
 // Configure ADC0 for continuous conversions, 1Khz, AIN0 in Single-ended mode
 ADCMSKI = BIT0; // Enable ADC0 result ready interrupt source
   ADCFLT = 0x7; // Chop off, 1Khz samping rate, SF = 7. No averaging
   ADCMDE = BIT0 + BIT7; // Continuous Conversion mode, Normal mode, 4Mhz clock source to ADC.
   ADC0CON = BIT1 +
     BIT6 +   // AIN0 selected in Single ended mode
     BIT10 +   // Unipolar ADC output
     BIT15;  // Gain = 1, Buffer on. Also, Int reference,
       
 ADCCFG = 0;
 IRQEN = BIT10; // Enable ADC interrupts   

 

  

 

 

 

 

 

 

 

 

Aduc7061 24bit ADC테스트 동영상

 

 

 

ADUC7061 테스트용 PC프로그램

 

 

 

ADuc7061 ADC인터럽트 처리코드

24bit ADC를 가진 MSP430AFE 와 비교 했을때 24bit ADC결과 레지스터가 32bit로 되어 있기 때문에 속도나 처리하는데 있어 상당히 편리하다.

__irq __arm void IRQ_Handler(void)
{
 unsigned long IRQSTATUS = 0;

 IRQSTATUS = IRQSTA;    // Read off IRQSTA register


 if ((IRQSTATUS & BIT10) == BIT10) //If ADC0 interrupt source
 {
    ulADC0Result = ADC0DAT; // Read ADC0 conversion result
 }

 

 

 

ADuc7061 24bit ADC테스트 예제코드

int main(void)
{
    unsigned int cnt = 0;
    SystemInit();
 
    Led1Init();

    //Serial Init
    DebugInit(BAUD_115200);
    DebugPrint("Aduc7061 EVM ADC Program.\r\n");

   
 ADC_Init();

    enable();
 while(1)
 {
  //UART Debug
  if(U0_IsGetByte())
  {
   switch(DebugGetByte())
   {
    case 'g':
                    DebugPrint("adc = %lu\r\n", ulADC0Result);
                    IRQEN |= BIT10;
                    Led1Off();
     break;
            }
        }
 }
}

 

 

 

 

[ADuc7061 EVM] 정밀 아날로그 마이크로 컨트롤러 보드 제작

 

 

 

ARM Core와 정밀 24bit ADC를 내장한 아날로그 디바이스사의 ADUC7061 EVM보드를 제작 했다. 가장 큰 특징은 24bit ADC, 14bit DAC,  On-chip precision reference (±10 ppm/°C)  와 같은 정밀한 아날로그 페리이다. 물론 가격은 다른 아날로그 MCU들에 비해 다소 비싸다.

 

 

ARM7코어에 소형임에도 UART, PWM, SPI, I2C등의 페리가 있다. FLASH가 32Kbyte 이기 때문에 IAR 무료 버전 컴파일러를 이용해서 컴파이 할 수 있고 UART를 이용하여 펌웨어를 다운로드 할 수 있어 개발환경 구축이 간단하다.

 

 

 

 

 

S-Type EVM 형태로 제작 했기 때문에 다양한 확장보드를 이용하여 테스트 해 볼수 있다. 

 

 

 

[ADuc7061 EVM] 핀맵

 

 

 

 

 

[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에 출력하는 예제를 테스트 했다.

 

[MSC1210-M EVM] 24bit ADC 내장 MCU M-Type 보드 제작



채널 24bit ADC를 내장한 TI사의 MSC121x 시리즈를 [M-Type EVM]으로 제작 했다. 표준 핀맵이라 다양한 기존 제작 했던 다양한 보드에 적용 가능하다. 



TI의 MSC1210, MSC1212, MSC1214 모두 적용 가능하도록 했다.



기존 [MSC1210 EVN] 와 달라진 점으로 시리얼 통신을 위해 CP2102을 직접 실장하지 않고 USB2UART모듈을 이용해 좀더 컴펙트 하고 재활용 가능하도록 했다. MSC1210은 시리얼로 다운로드 가능하므로 USB2UART모듈로 프로그램 할 수 있다.



[M-Type EVM] 핀맵이므로 다양한 확장 테스트 보드에 연결하여 테스트 가능하다.



MSC1210 과 TFT LCD를 연결하여 테스트




[MSC1210-M EVM] 회로도



정밀 레퍼런스 LM4040 (Precision Micropower Shunt Voltage Reference, 0.1% accuracy )





[MSC1210 EVM] rev2 회로 5V 측정 reference설정




5V (Vref) 측정을 위한 방법으로 두가지 방법이 있다.
외부 Ref전압을이용하는 방법과 내부 Ref를 이용하는 방법 두가지가 있다.

외부 Ref전압을 공급하는 방법
외부에 정밀 Ref전압을 공급해해서 측정. 외부 Ref회로가 필요하며 복잡해 지지만 정밀하게 측정할 수 있다.



내부 Ref전압을 이용하는 방법
내부에 2.5V ref가 있으므로 이를 이용하면 5V를 측정할 수 있다. 회로가 간단하고 편리하다.




MSC1210 보드 상의점퍼를 이용하여 Ref를 설정 할 수 있다.

[MSC121x EVM]- 타이머 제어 예제

[8051] | 2007.03.20 22:05
Posted by nexp

[MSC121x EVM]- 타이머 제어 예제

사용자 삽입 이미지






MSC1210 *1초마다 LED를 깜박이는 예제

//-----------------------------------------------------------------------------
// Main Funiction
//-----------------------------------------------------------------------------
void main(void)
{
 int led_flash = TRUE;
 
 //Initialize CPU
 SystemInit();

 //Timer0 Initialize
 InitTimer0();
 enable();
 while(1)
 {

  if(led_flash)
  {
   //50x100 = 500ms
   if(m_TimeTick50ms>100)
   {
    Led1Toggle();
    m_TimeTick50ms = 0;
   }
  }
 }
}
//-----------------------------------------------------------------------------

[MSC121x EVM] - ADC 테스트 프로그램

[8051] | 2007.03.18 22:04
Posted by nexp
[MSC121x EVM] - ADC 테스트 프로그램

사용자 삽입 이미지







[MSC121x EVM] - LED Test 예제

[8051] | 2007.03.18 21:53
Posted by nexp

[MSC121x EVM] -  LED Test 예제

사용자 삽입 이미지
 
 



[MSC1212  EVM] 보드의 LED는 P3.3에 연결되어 있고 0일때 Led On된다.

#define Led1On()                  (P3_3 = 0)
#define Led1Off()                  (P3_3 = 1)
#define Led1Toggle()             (P3_3 ^= 1)
 
void main(void)
{
     int led_flash = 1;
 
     //Initialize CPU
     SystemInit();
 
    Led1Init();
 
    while(1)
    {
         if(led_flash)
        {
           //Led Toggle
           Led1Toggle();

           P1 ^= 0xFF;
   
           //Delay
           Delay(300);
          }
    }
}

MSC1210 LED테스트 동영상

")//]]>

[MSC121x EVM] USB연결 - 펌웨어 다운로드

[8051] | 2007.03.18 09:47
Posted by nexp

[MSC121x EVM]USB연결 - 펌웨어 다운로드

사용자 삽입 이미지


MSC121x EVM (MSC1210, MSC1212)은 CP2101 USB칩을 탑제 하여 펌웨어를 다운로드 하거나 ADC값을 읽는등의 USB통신을 쉽게 할 수 있다.

CP1210 디바이스 드라이버

 

 
펌웨어 다운로드
디바이스 드라이버 설치 후 장치를 USB에 연결하면 COM포트가 할당된다.
장치관리자의 포트(COM 및 LPT)에서 확인할 수 있다. 내 PC에는 COM4에 할당 되었다.
 
 
 
J1(EA)핀을 이용하여 "다운로드"로 설정하고 리셋을 누른다.

TI에서 제공하는 다운로드 프로그램을 실행 시키고 다운로드 할 Hex파일을 설정한다.

TI_Downloader.zip




할당된 COM4를 설정하고 [OK] 버튼을 누르면 펌웨어를 다운로드 할 수 있다.

 

블로그 이미지

nexp

카테고리

분류 전체보기 (1560)
[MyProject] (48)
[TI] (75)
[NXP] (51)
[ST_MICRO] (129)
[FreeScale] (31)
[MSP430] (140)
[Microchip] (131)
Cortex-M (36)
[ATMEL] (29)
[AnalogDevice] (22)
[Embedded] (2)
ARM9 (24)
[AVR] (80)
[DSP] (111)
[8051] (21)
[MCU] (50)
[INTERFACE] (213)
[AppBoard] (23)
[ROBOT] (25)
[MODULE] (129)
[SENSOR] (41)
[DATA] (21)
[FPGA] (32)
[EVB] (1)
[Proramming] (38)
[MyLog] (6)
[IDEA] (0)
[Utility] (19)
[Book] (24)
취미생활 (4)
[Link] (2)