Arduino Due

(아두이노 두에 정품)

개요

  • 아두이노 두에 보드는 Atmel SAM3X8E ARM Cortex-M3 CPU (datasheet) 기반의 마이크로컨트롤러 보드입니다. 32비트 ARM 코어 마이크로컨트롤러를 기반으로 한 아두이노 보드로는 첫번째 보드입니다. 54개의 디지털 입출력핀(그중 12개는 PWM출력으로 사용가능)과 12개의 아날로그 입력, 4개의 UART(하드웨어 시리얼 포트임), 84Mhz 클럭, USB OTG, 2개의 DAC, 2개의 TWI, 파워잭, SPI헤더, JTAG 헤더, 리셋버튼, erase버튼을 지원합니다.

    경고: 다른 아두이노 보드와는 다르게 아두이노 우에 보드는 3.3V로 동작합니다. 만약 I/O핀에 5V를 인가한다면 보드가 손상 받을 수 있습니다.

  • 보드는 마이크로컨트롤러를 지원하기 위해 필요한 모든것을 가지고 있습니다. USB케이블을 컴퓨터에 연결하여 꼽고 바로 시작하여 보십시오. 아두이노 두에는 3.3V로 동작하고 1.0 아두이노 핀아웃을 지원하는 모든 쉴드와 호환이 됩니다.

    두에는 1.0 핀아웃을 따르고 있습니다.

    • TWI: AREF핀 근처의 SDA 및 SCL 핀
    • IOREF 핀은 사용하는 쉴드가 보드에서 제공되는 전압을 확인하고 적절하게 설정할수 있게 하여 줍니다. 두에와 같이 3.3V로 동작하는 보드와 5V로 동작하는 AVR기반의 보드에 쉴드를 사용함에 있어 사용됩니다.
    • 사용하지 않는 핀은 향후 기능확장을 위해 예약되어 있는 핀임

    아두이노 두에 전용 포럼: dedicated forum

스펙

  • Microcontroller AT91SAM3X8E
    Operating Voltage 3.3V
    Input Voltage (recommended) 7-12V
    Input Voltage (limits) 6-20V
    Digital I/O Pins 54 (of which 12 provide PWM output)
    Analog Input Pins 12
    Analog Outputs Pins 2 (DAC)
    Total DC Output Current on all I/O lines 130 mA
    DC Current for 3.3V Pin 800 mA
    DC Current for 5V Pin 800 mA
    Flash Memory 512 KB all available for the user applications
    SRAM 96 KB (two banks: 64KB and 32KB)
    Clock Speed 84 MHz

ARM 코어 특징

  • 아두이노 두에는 32비트 ARM코어를 장착하여 8비트 MCU를 성능에 있어 압도합니다.

    • 32비트 코어사용으로 싱글 CPU클럭에 4바이트 넓이의 연산이 가능.(자세한 정보는 int type page참조).
    • 84Mhz CPU클럭
    • 96 KByte SRAM.
    • 사용자 코드용 512 KByte 플래쉬 메모리
    • DMA controller 지원으로 메모리 연산관련 CPU부하를 줄여줌

회로도 및 리퍼런스 디자인

전원

아두이노 두에는 USB 혹은 외부 전원을 통해 전원공급이 가능하며 전원 소스는 자동으로 선택이 됩니다.

외부 전원은 DC어댑터나 배터리로 가능합니다. 사용가능한 어댑터는 중심이 양극인 플러그이며 지금이 2.1mm이여야 합니다. 배터리의 경우 전원커넥터의 Gnd와 Vin핀에 배터리의 음극와 양극을 연결하여야 합니다.

추천 사용전압은 7V~12V입니다. 보드는 외부전원 6V~20V를 사용할 수 있지만, 7V미만의 전압을 공급할 경우 5V핀이 5V이하로 내려갈 수 있어 보드가 불안정하여 질수 있으며, 12V 이상으로 전압을 공급할 경우, 전압 레귤레이터에 부하가 걸려 보드가 손상될 수 있습니다.

다음은 전원 핀에 대한 설명입니다:

  • VIN. 외부 전원 소스를 사용할 경우 입력 전압핀입니다
  • 5V. 이 핀은 보드상의 레귤레이터에서 생성된 5V를 출력합니다. 보드에 전원을 공급하는 방법은 DC 파워잭(7-12V)을 통해 공급하는 방법, USB 커넥터(5V)를 통해 공급하는 방법, 아니면 VIN핀(7-12V)를 통해 공급하는 방법이 있습니다. 5V핀이나 3.3V핀을 통해 전원을 공급하면 보드를 망가 트릴 수 있습니다
  • 3.3V. 보드상의 레귤레이터를 통해 3.3V 전압을 출력하는 핀으로, 최대 전류는 800mA입니다. 그리고 이 레귤레이터는 SAM3X 마이크로컨트롤러에 전원을 공급합니다.
  • GND. 그라운드 핀
  • IOREF. 이 핀은 보드상의 MCU가 동작하는 전압에 대한 리퍼런스를 제공합니다. 적절하게 설정된 아두이노 쉴드는 IOREF 핀 전압을 읽을 수 있기때문에 읽힌 전압에 따라 적절한 전원소스를 선택하거나 3.3v나 5v를 사용하기 위해 voltage translator를 활성화 시킬 수 있습니다.

 

메모리

  • SAM3X 는 코드를 저장할 수 있는 512 KB (2 blocks of 256 KB)의 플래쉬 메모리를 가지고 있습니다. 부트로더는 공장에서 미리 심겨지며 ROM메모리의 특정영역에 저장이 됩니다. 사용가능한 SRAM은 96KB(두개의 인접한 64KB, 32KB 뱅크)입니다. 모든 사용가능한 메모리(Flash, RAM, ROM)은 직접적으로 어드레싱이 가능합니다.

  • 보드상의 erase버튼으로 SAM3X의 플래쉬 메모리를 삭제하는 것이 가능합니다. 삭제버튼을 누르면 MCU에 올려진 스케치가 지워집니다. 전원이 켜진상태에서 보드의 erase버튼을 수초가 누르면 됩니다.

입출력

  • Digital I/O: pin 0 ~ 53
    54개의 디지털 핀은 pinMode(), digitalWrite(), digitalRead() 함수를 이용하여 입출력으로 사용이 가능합니다. 핀은 3.3v에서 동작하며 각각의 핀은 핀에 따라 3mA 혹은 15mA의 전류를 제공하거나, 6mA 혹은 9mA의 전류를 받아 들이는 것이 가능합니다. 또 각핀은 100kohm의 내부 풀업저항을 가지고 있습니다. 몇몇 핀은 아래와 같은 특별한 기능을 가지고 있습니다.
    • Serial: 0 (RX) and 1 (TX)
    • Serial 1: 19 (RX) and 18 (TX)
    • Serial 2: 17 (RX) and 16 (TX)
    • Serial 3: 15 (RX) and 14 (TX)
      3.3V 레벨의 TTL시리얼 데이터를 주고(TX) 받기(RX)위해 사용됨. PIN 0과 1은 Atmega16U2 USB-to-TTL 시리얼 칩의 해당 핀에 연결됨
  • PWM: Pins 2 ~ 13
    analogWrite() 함수를 이용하여 8비트 PWM 출력을 제공합니다. PWM의 분해능은 analogWriteResolution() 함수를 이용하여 변경이 가능합니다.
  • SPI: SPI header (아두이노 보드의 ICSP header)
    이 핀들은 SPI library를 이용하여 SPI통신을 제공합니다. SPI핀은 6핀 헤더를 통해 나와 있으며 우노, 레오나르도, Mega2560과 물리적으로 호환되는 핀입니다. SPI헤더는 다른 SPI장치와 통신하기 위하여 사용이 되며 SAM3X를 프로그래밍하기 위하여 사용되지 않습니다. 두에의 SPI는 고급기능을 가지고 있는데 다음 링크를 참고 하십시오. Extended SPI methods for Due.
  • CAN: CANRX and CANTX
    이 핀들은 CAN통신 프로토콜을 지원합니다만 아두이노 API가 아직 지원하지는 않습니다.
  • "L" LED: 13
    핀 13번에 연결된 빌트인 LED가 있어 13번핀이 HIGH일경우 LED가 ON 상태가 되게 되며 LED의 밝기를 조절할 수가 있는데 13번핀이 PWM 출력이기 때문입니다.
  • TWI 1: 20 (SDA) and 21 (SCL)
  • TWI 2: SDA1 and SCL1.
    Wire library를 통하여 TWI 통신을 지원합니다.
  • Analog Input: pin A0 ~ A11
    아두이노 두에는 12비트 분해능의 12개의 아날로그 입력을 가지고 있습니다. 디폴트로는 다른 보드와의 호환성을 위해 10비트 분해능으로 설정이 되어 있습니다만 analogReadResolution () 함수를 통해 ADC의 분해능을 변경할 수 있습니다. 두에의 아날로그 입력 핀은 그라운드에서 3.3V까지 측정이 가능합니다. 3.3V이상을 두에의 핀에 공급하면 SAM3X 칩이 손상을 받게 됩니다. analogReference() 함수는 두에에서는 무시 됩니다.

AREF 핀은 저항 브릿지를 통해 SAM3X 아날로그 리퍼런스 핀으로 연결됩니다. AREF핀을 사용하기 위해서는 resistorBR1은 PCB에서 반드시 제거하여야 합니다.

  • DAC1 and DAC2
    analogWrite() 함수를 통해 이 핀들은 12비트 분해능의 아날로그 출력을 제공합니다. 이 핀들은 Audio library 를 사용하여 오디오 출력을 만드는데 사용할 수 있습니다.

보드상의 다른 핀들의 경우:

  • AREF
    아날로그 입력의 리퍼런스 전압. analogReference() 함수와 같이 사용.
  • Reset
    마이크로컨트롤러를 리셋시키기 위해 리셋 핀을 LOW로 만듬. 보통의 경우 쉴드에 리셋버튼을 추가하기 위해 사용됨.

     

통신

  • 아두이노 두에는 컴퓨터, 다른 아두이노 보드, 혹은 다른 마이크로컨트롤러, 폰, 카메라, 태블릿 등과 통신하기 위한 많은 기능을 제공합니다. SAM3X은 한개의 하드웨어 UART와 TTL(3.3v) 시리얼 통신을 위한 세개의 하드웨어 USART를 제공합니다.

  • 프로그래밍 포트는 ATmega16U2(이 칩은 PC에 가상 COM를 제공함)에 연결되어 있습니다. 16U2는 SAM3X의 하드웨어 UART에 또한 연결되어 있습니다. 시리얼 핀 RX0, TX0은 Atmega16U2를 통하여 Serial-to-USB 통신을 제공하여 보드를 프로그래밍 할 수 있게 합니다.
  • 아두이노 소프트웨어는 아두이노 보드에게 간단한 텍스트 데이터를 주고 받을 수 있는 시리얼 모니터 프로그램을 포함하고 있습니다. 데이터가 전송되면 보드상의 RX/TX LED가 깜빡일 것입니다.
  • SAM3X에는 USB포트가 연결되어 있어 USB를 통하여 시리얼 통신(CDC)을 가능하게 하며, 아두이노 두에가 USB 마우스나 키보드등을 에뮬레이트 할 수 있게 하여 줍니다. 이러한 기능을 이용하기 위해서는 다음의 링크를 참고하십시오. Mouse and Keyboard library reference pages.
  • USB포트는 USB호스트로 쓰일 수 있기 때문에 마우스, 키보드, 스마트폰과 같은 주변장치를 연결할 수 있습니다. 이러한 기능을 사용하기 위해서 다음의 링크를 참고 하십시오. USBHost reference pages.
  • SAM3X는 TWI와 SPI통신 역시 지원합니다. 아두이노 소프트웨어는 Wire library를 포함하고 있어 TWI버스의 사용을 간단하게 만들어 줍니다. 자세한 내용은 다음의 문서를 참고하십시오. documentation. SPI통신은 SPI library를 이용하세요.

프로그래밍

  • 아두이노 두에는 아두이노 소프트웨어(download)를 이용하여 프로그래밍 할 수 있습니다. 자세한 사항은 다음 링크를 참조하십시오. reference and tutorials.

    SAM3X에 스케치를 업로딩 하는 것은 AVR을 탑재한 아두이노 보드와는 다른데, 이는 재프로그래밍 이전에 플래쉬가 먼저 지워져야 하기 때문입니다. 칩에 업로드 하는 것은 SAM3X의 ROM에 의해 관리되는데 이는 칩의 플래쉬 메모리가 비워져 있을 때만 수행되게 됩니다.

    그림에서 보이는 두개의 USB포트를 보드를 프로그래밍 할때 사용할 수 있지만, 칩을 지우는 방법을 처리하는 방법때문에 프로그래밍 포트를 사용하기를 권장합니다.:

    • Programming port: 이 포트를 사용하기 위해서는 아두이노 IDE에서 Arduino Due(Programming Port)를 보드로 선택한뒤 아두이노 두에의 프로그래밍 포트에 연결합니다. 프로그래밍 포트는 16U2 칩을 USB-to-Serial 칩으로 사용하며, 이 칩은 SAM3X의 첫번째 UART(RX0, TX0)에 연결이 되어 있습니다. 16U2는 SAM3X의 리셋과 Erase에 연결된 두개의 핀을 가지고 있습니다. 1200bps로 프로그래밍 포트를 열었다가 닫으면 SAM3X칩을 지우는 "hard erase" 절차를 수행하기 시작하며, UART통신을 하기 전에 SAM3X의 Erase와 Reset핀을 활성화 합니다. 아두이노 두에 프로그래밍을 위해서 이 포트를 추천하는데 이는 Native port에서 할수 있는 "soft erase"보다 좀더 믿을 만 하기때문입니다.
    • Native port: 이 포트를 사용하기 위해서는 "Arduino Due(Native USB Port)를 아두이노 IDE에서 선택합니다. Native USB포트는 SAM3X에 다이렉트로 연결이 되어 있습니다. 두에의 Native USB port를 PC에 연결하고, 1200bps로 포트를 열었다 닫으면 "soft erase"절차를 시작합니다. 플래쉬 메모리가 지워지고 보드는 부트로더와 함께 다시 시작됩니다. 만약 MCU가 어떤 이유로 크래쉬되었다면 soft erase는 다시 수행되지 않으며 이럴 경우는 programming port를 이용하여 hard erase후에 프로그래밍을 해야합니다. 포트를 1200bps가 아닌 다른 보오드 레이트로 열거나 닫을때는 SAM3X가 리셋되지 않습니다.

    업로드를 위해 avrdude를 사용하는 아두이노 보드와는 다르게 두에는 bossac를 사용합니다.

    ATmega16U2 펌웨어 소스코드는 다음의 링크에서 확인할 수 있습니다. Arduino repository. 외장 프로그래머를 ISP헤더에 연결하여 사용(DFU 부트로더 덮어쓰기)할 수 있습니다. 좀더 자세한 정보는 다음 링크를 참조하세요 user-contributed tutorial

USB 과전류 보호

  • 아두이노 두에는 리셋가능한 폴리퓨즈를 가지고 있어 PC의 USB포트를 쇼트나 과전류환경에서 보호합니다. 대부분의 컴퓨터가 USB를 보호하기 위한 내부 매커니즘을 가지고 있지만, 이 퓨즈는 추가적인 보호막을 제공합니다. 만약 500mA이상 USB포트에 인가된다면 퓨즈는 과전류나 쇼트가 제거되기 전까지 자동으로 연결을 끊습니다.

물리적 특징

  • 아두이노 두에의 PCB크기는 각각 4와 2.1 인치입니다.