Arduino Zero(M0 Pro)ボードの概要(内容説明)

〔arduino M0(Zero) の使い方に戻る〕


前回は「Arduino Zeroのファースト・インプレッション」と題して第一印象を書きました、
ここでは、Arduino Zero Pro (R3)について簡単な内容の説明(メモ)を書きます。
尚、この記事は、Arduino IDE 1.5.8.3での内容となります。
※ 2015/03/31日現在、IDEは[1.7.0](ARDUINO.ORG)へ変更になっています。 *1)
※ 2015/06/04日現在、IDEは[1.7.4](ARDUINO.ORG)へ変更になっています。 *2)
  それと"Arduino Zero Pro"は"Arduino M0 Pro"と名前が変更になっています。
(このページは機能などが判り次第随時更新します)

arduinoZeroPro概要
・マイクロコントローラ:Atmel ATSAMD21G18A
(ARM Cortex M0+)48ピンLQFP
・オンボードデバッガ:Atmel A06−0736 EDBG(USBシリアル変換兼用)
・フラッシュメモリ:256kB(ブートローダー4kBを含む)
・SRAM:32kB
・クロック周波数:48MHz(内蔵クロック)
・動作電圧:3.3V
・USB端子はマイクロBコネクターで接続する

※ 写真で10-13番端子がSPIとなっていますが、間違いです。

ピンの一覧
※ このピンの割り付け表は"Arduino Zero:Arduino.cc"とでは少し異なる様です。


電源

外部入力電源端子には4.3V〜5.5Vの5V電源を繋ぎます、癖で9V四角電池を繋ぎそうになります。
  内部基板動作は3.3Vです、I/O接続に注意しましょう。

・ Vin端子からは外部入力電源端子の電源がそのまま出て来ます、又はVin端子から5Vを供給可能
  です。

・ 3.3V端子は、「A 3.3 volt supply generated by the on-board regulator.
  Maximum current draw is 50 mA.」 って書いて有るが50mAまで流せるって事ぉ?、
  何だか少ないなぁ、500mAの間違いじゃ〜ねぇ?

・ ボードには、自動的に利用可能な電力源を検出し、次の優先順位に応じて使用するか選択します。
  1.外部入力電源(Vinも含む)
  2.Programming portのUSB
  3.Native portのUSB

I/O

・ 3.3Vで最大出力電流は7mA(因みに、"Uno"の場合は40mAほど)です。

・ pinMode(PIN,INPUT_PULLUP) ; を指定してもプルアップしない。
  (SDA/SCLピンはINPUT_PULLUPを指定してもしなくても、ボードでプルアップされている)

・ 割り込みは、attachInterrupt( )関数を使用するが全てのポートで使用可能です、
  但し、同時に使用出来ないポートが有ります。(ってか同じ割込み番号が発生する)

0番と1番のデジタル入出力が逆になっています。
  "C:\Program Files\arduino-1.5.8.3\hardware\arduino\samd\variants\arduino_zero\variant.cpp"の
  ファイルの111行目と112行目を入換えれば正常になりますがぁ....
  { PORTA, 11, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel,.........},
  { PORTA, 10, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel,.........},
  こんな感じ、でもこの手のファイルはあんまりいじりたくないのです、なので"ARDUINO.ORG"さん
  早く変更して下さい。  IDE[1.7.0]にて直りました。 *1)

LED

・ [ON]がPOWERのLEDだがEDBGが出力している

・ [L-LED]がデジタル13番と繋がっています。

・ [DEBUG-LED]は"PC"と"Programming port"でシリアル通信を行えば点滅します。

・ [TX-LED]/[RX-LED]はMCUのピンに繋がっているだけなので、自由に汎用で使えそう。
  (但し、digitalWrite(30/31,LOW);を出力して点灯します。おそらく"シンク電流"でしょう)
  (TX-LEDはリセットボタンを押した時と、"Native port"からスケッチを書込んだ時に点滅します)

Programming port

・ このポートでEDBGを使ったデバッグが可能な様です。
  (でも、デバッグツールは何を使うのでしょう?)
  (PS. "Atmel Studio"でデバッグする記事はこちらで追記しました。 20015/06/13)

・このUSB端子からスケッチを書き込む事を推奨しています。

・このUSB端子からシリアル通信を行う場合は、Serial 5.begin( )関数で動作させます。
  (ArduinoIDEのシリアル画面を開くと"Uno"ではボードがリセットされたが、"Zero"はリセットされず)
  (なので、上手く表示されない等の時は、リセットボタンを押して見ましょう) *2)

Native port

・ MCUに繋がっている、USBシリアルオーバー(CDC)通信が可能で、 USBマウス又はキーボードを
 エミュレートする事が可能です。

・ 周辺機器用のUSBホスト(OTG)として動作させる事が出来ます。

・ このポートからもプログラムの書き込みが出来るので行って見た、"Programming port"より断然早い
 でも推奨してないんだよね。

・ CDCクラス(SerialUSB)での通信はPCへの送信はOK。 *1)
 受信は連続バイトだと先頭の1バイトしか受付けない、"Zero"は1バイトずつ受信する仕様だろうか?
 (SerialUSBの詳細はこちらを参照ください。) *3)

・ HIDクラス(Keyboard/Mouse)はコンパイル(ExamplesSketch)はOKだが、動作しない。 *1)
 (HIDクラスの標準デバイスドライバが見当たらない、"GET_DESCRIPTOR"時にディスクリプタ情報を
  送信しているのだろうか?)

・ OTG機能はまだ動作させていない。
 (って言うかぁ、コンパイルエラー。これが一番使って見たかった機能なのにぃ(T_T) )

アナログ入出力

・ デジタル2〜13番までの端子からPWM出力(8ビット)が可能です。

・ アナログ入力はA0〜A5で可能、12ビット入力なのでanalogReadResolution(12);を使えば0-4096で
  読み込まれる様に変更出来ます。又、デジタル端子としては使用できない。

A0端子からはDAC出力(10ビット)が可能なので、analogWriteResolution(10)関数を使い解像度を
  変更出来ます。

・ 「By default the analog inputs measure from ground to 3.3volts, though is it possible to change
  the upper end of their range using the AREF pin and the analogReference() function.」
  って有るが、3.3V以上の5V等のリファレンスが可能って事かしら?

USART

・ デジタル端子の0番(RX)と1番(TX)で通信可能です、ハードウエア通信です。

・ この端子からシリアル通信を行う場合は、Serial.begin( )関数で動作させます。

I2C(TWI)

・ Wireライブラリ("Wire.h")を使用してサポートTWI(I2C)コミュニケーションを行う。

・ 端子は、デジタルソケット(IOH)のSDA/SCLを使う。
  (この端子は、ボード内部でプルアップ10KΩされているので、外部でI2C用プルアップはいらない)

SPI

・ 下図がICSP(SPI)のピン割り付け構成図です、ってこれはICSPではないよね。
  ICSPのピン構成
・ SPIライブラリ("SPI.h")を使用します。

  SSの宣言がSS=14となっているが、14番ピンはGNDです、注意ですね、
  ですので、SS(CS)ピンはデジタルI/Oの空きを利用しましょう。
  但し、使用するピンは下記の宣言が必要です。
      pinMode(CS,OUTPUT) ;
      digitalWrite(CS,HIGH) ;
  SPI_CLOCK_DIV2−SPI_CLOCK_DIV128の宣言が有りません、
  なのでSPI.setClockDivider(divider)関数のdivider数値は0以上で指定です、
  例えば、4と指定すると48MHz/4=12MHzのSPIクロック速度で設定されます。
  尚、SPI.setClockDivider( )を指定しない時のデフォルト速度は4MHzです。

その他

tone( )関数は使用出来ません。  IDE[1.7.4]にて直りました。 *2)

・ ソフトシリアル(SoftwareSerial)ライブラリは機能しません。

・ EEPROMライブラリは機能しません。
  メインメモリをEEPROM替わりに出来る、EEPROMエミュレーション(RWWEE:16KB)を行う為の
  NVMコントローラ(NVMCTRL)機能が有る様だが、何方かライブラリ化してくれないかしら?

ServoライブラリとSDライブラリはコンパイルエラーが出ます。
  まあ、"Zero Pro"なので自分で作れって所ですかね、さすがぁ"Pro"。
  IDE[1.7.4]にて直りました。 *2)

・ 32.768KHz Crystalが取り付けられているがぁ、どうやって使うのだろう?

・ "variant.cpp"の設定をいじればピンの割り付けが替えられそうな予感がするのだがぁ....



追記(*3) 2020/04/11
追記(*2) 2015/06/04
変更(*1) 2015/03/31


【きむ茶工房ガレージハウス】
Copyright (C) 2006-2020 Shigehiro Kimura All Rights Reserved.