FEZ Cerb40

  1. ここを参考にして Microsoft Visual Studio 2010あるいは2012をインストールします。
  2. 2012の場合は.Net Micro Framework 4.3(RTM)が入っていないと4.2も対応できないようです。
  3. Microsoft .NET Micro Framework 4.2 QFE2 SDKをインストールします。
  4. NETMF and Gadgeteer Package 2014 R1をインストールします。
  5. C:\Program Files (x86)\GHI Electronics\GHI OSHW NETMF v4.2 SDK\FEZ Cerb Family\Firmware\STM_DFU.zipを解凍し、DfuSe_Demo_V3.0.2_Setup.exeを実行します。もし、パソコンのCPUがAMDの64bit版だったらDfuSe_Demo_V3.0.2_Setup_amd64.exeを実行します。
  6. Microsoft Visual Studio 2013 の場合は、official的には開発不可能ですが、MicroFrameworkSDK_vs2013_experimental.msiを入れると使えるようになります。これは.Net Micro Framework 4.3(RTM)の代替なので、これがインストールされている場合はアンインストールしてからインストールします。
これで準備が整いました。

FEZ Cerb40でLEDチカチカまでやってみる
FEZ Cerb40は、購入してすぐにUSBケーブルを繋ぐと動作チェック用のLEDがチカチカするという甘いものではありません。USBケーブルを繋いでも何も起きません。
理由1
まず、USBからCPUへの電源は繋がっていません。ですから、当然何も起こりません。当たり前です。
USBケーブルからの電源をFEZ Cerb40に電源を繋ぐには、右側のIC2と印刷してある場所に、LM1117という3.3Vの三端子レギュレータを半田付けする必要があります。これを使わないで外部から3.3Vを入力させるには右下の3.3Vと印刷されている場所に入れます。今回は手持ちの3.3Vの三端子レギュレータにはLM1117が無かったので別の物を外部で作りここに入れることにします。幸い、右上のUSBと書いてある端子はUSBケーブルからの5V電源です。これを外部で3.3Vの三端子レギュレータに繋いで右下の端子に繋ぐことにします。
 ところが電源を供給しても何も起こりません。
理由2
USBを認識するブートが入っていないからです。ブートを書き込むには左下から4番目のLODR端子を電源投入時にHigh(3.3V)にする必要があります。
3.3Vの三端子レギュレータとブート書き込みスイッチを付けたところです。
LOADは黄色の線でスイッチに行っています。
スイッチを押しながら、USBコネクタを接続し、STDFUTesterを実行します。STDFUTesterはスタート→STMicroelectronicsの中にあります。実体は「C:\Program Files (x86)\STMicroelectronics\Software\DfuSe\BIN」の中にあります。
正常にブート書き込み状態になっていると「Devices:」のところに「STM Device DFU Mode」が表示されます。ここで、「Protocol」タブをクリックします。

こんなふうに表示されます。

OperationのところのEraseを選びます。

Goをクリックし、消去します。消去が終了するとその下にSuccessが表示されます。

書き込むブートファイルを選択するために「Load DFU file」をクリックします。

C:\Program Files (x86)\GHI Electronics\GHI OSHW NETMF v4.2 SDK\FEZ Cerb Family\Firmwareの中にある「TinyBooter_4_x_x_x.dfu」を選択します。

Operationのダウンロードを選択して、Goをクリックします。これで書き込みが開始されます。書き込みが終了したらSTDFUTesterを終了します。
FEZ Cerb40をリセットするために一度USBケーブルを抜いて再度入れます。

スタート→Microsoft .NET Micro Framework 4.2→Tools→MFDeploy.exeを実行します。
DeviceのところでUSBを選択します。

すると「Cerb-Family_Gadgetter」が表示されます。

Image Fileを送るので、ファイルを選択するためにBrowseをクリックします。

C:\Program Files (x86)\GHI Electronics\GHI OSHW NETMF v4.2 SDK\FEZ Cerb Family\Firmware\Non Ethernetのところにある、2つのファイルを選択し開くをクリックします。

Deployをクリックします。

終了すると、左のように表示されます。

正しく書き込まれたかチェックしてみます。Target→Device Capabilitiesを選びます。

次のように表示され。一番上の行が4.2.0.0になっているのを確認します。

Visual Studioを走らせてから「新しいプロジェクト」をクリックします。
ここでは、2012 professional を用いています。

Visual C# → Micro Framework → Console Application を選びます
場所を指定して、名前をここではLEDにしました。
ソリューションのディレクトリを作成にチェックしておくといいかもしれません。(任意)
ソリューションエクスプローラーのProgram.csの中身を下記のプログラムに書き換えます。

なんらかの理由でUSBが認識しなくなったときは、これを参考にしてください。

PC0に繋いだLEDをチカチカ
using System;
using System.Threading;         // Thread.Sleep使用のため追加
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;  // OutputPort使用のため追加、参照設定にも追加
using GHI.OSHW.Hardware;        // FEZCerberus使用のため追加、参照設定にも追加

namespace LED
{
    public class Program
    {
        public static void Main()
        {
            OutputPort LED1 = new OutputPort(FEZCerberus.Pin.PC0, false);
            int count = 0;
            while (true)
            {
                Debug.Print("Hello " + count++);
                LED1.Write(true);
                Thread.Sleep(500);
                LED1.Write(false);
                Thread.Sleep(500);
            }
        }
    }
}
 1 クラスライブラリ
 2 の設定
 3 
 4 
 5 FEZ Cerb40専用クラス
 6 
 7 
 8 
 9
10 
11 
12 
13 PC0のオブジェクトを作る
14 
15 永久ループ
16 
17 デバックの表示
18 点灯
19 時間待ち
20 消灯
21 時間待ち


Visual Studio編
参照が足りないと左のように赤い波線が付きます。これはGHIに関するクラスライブラリを追加する必要があります。それには以下のようにします。

プロジェクトメニューをクリックし、一番下のLEDのプロパティを選びます。

アプリケーションを選び対象のフレームワークが「.NET Micro Framework 4.2」であることを確認します。異なっていた場合はこれに変更します。変更をした場合、ソリューションの再起動が必要になるでしょう。

ソリューションエクスプローラーの参照設定を右クリックすると左のようなメニューが出てきますから、参照の追加をクリックします。

GHI.OSHW.Hardwareを選び、クリックします。

.NET Micro Frameworkタブをクリックし、TransportでUSBを選びます。

すると左のように「Cerb-Family_Gadgeteer」がDeviceに出てきます。

ビルド、実行を行うには「実行」をクリックします

実行をクリックする前のウィンドウの下はこんな色になっています。

ビルドが成功し、プログラムの転送が開始されると左のような色になります。

転送が成功し、実行可能になるとこのようになります。

正常に実行するとLEDがチカチカします。

デバッグを停止させるには■をクリックします。

上記の説明では3.3Vの三端子レギュレータは外付けでしたが、本当は裏に取り付ける場所があります。 LM1117MPX-3.3と47μFのコンデンサを付けろということなのですが、手元にあったLT1117CST-3.3と10μFのコンデンサでお茶を濁しています。問題は無いと思います。

注意するところは、いくら外形が同じでも端子の意味が異なる場合です。この三端子レギュレータは、私が今までよく使ってきたものとはピン配置が異なっています。

電源回路を取り付けたCPUボードにすると当然ながらすっきりします。

内蔵カレンダーへの水晶発振子が接続されていないので、必要な場合にはQ2と書いてあるところに半田付けします。その場合、VBATに3V程度のバックアップ電池が必要になります。


ピン配置

左側のピン配列
Pin CPU Pin Alt-Function/Notes
P20PB5 SPI1 MOSI
P19PB6 I2C SCL
P18PB7 I2C SDA
P17LODR Used to force processor in loader mode for firmware update
P16PB8 CAN1 RX
P15VBAT Power internal RTC. Requires adding 32.768Khz crystal
P14PC12 SD CK
P13PD2 SD CMD/TBD
P12PB3 SPI1 SCK
P11PB9 CAN1 TX
P10PB4 SPI1 MISO
P09PC11 SD D3
P08PA14 JTAG SWD CLK
P07PC10 SD D2
P06PA6 Analog/TBD (Cpu.AnalogChannel.ANALOG_0)
P05PA7 PWM/TBD (Cpu.PWMChannel.PWM_1)
P04PA13 JTAG SWD SWDIO
P03PA8 PWM/TBD (Cpu.PWMChannel.PWM_3)
P02GND 接地
P013.3v In if no 3.3V is soldered and out if soldered.

右側のピン配列

Pin CPU Pin Alt-Function/Notes
P21REST Active low reset signal. Not 5V tolerant
P22PC0 Analog/TBD
P23PC1 Analog/TBD
P24PC2 Analog/TBD
P25PC3 Analog/TBD
P26PA0 UART2 CTS
P27PA1 UART2 RTS
P28PA2 UART2 TX
P29PA3 UART2 RX
P30PA4 Analog/DAC1/TBD **WARNING: NOT 5V TOLERANT**
P31PA5 Analog/DAC2/TBD **WARNING: NOT 5V TOLERANT**
P32PB10 UART3 TX
P33PB11 UART3 RX
P34PB14 USB HS DM
P35PB15 USB HS DP
P36PC6 PWM/UART1 TX (Cpu.PWMChannel.PWM_0)
P37PC7 PWM/UART1 RX (Cpu.PWMChannel.PWM_2)
P38PC8 SD D0
P39PC9 SD D1
P40USB This is the VBUS (power) coming from USB cable.
This is used internally only if added 3.3V regulator to the board.

RESET Pin は5V入力トレラントではありません。 直接5Vの信号に繋げてはいけません。3.3Vに変換してから繋げてください。そのためには、10kΩの抵抗でプルアップします。

他の全てのピンは二つのDACを除いて5V入力トレラントのIOです。

これらの GPIO ビンはFEZCerberus.Pinとして参照できます。例えば、 FEZCerberus.Pin.PC0 などです。

Analog Channels

アナログ入力と物理的なビンの対応表です。

Pin Channel Pin mapping
P06Cpu.AnalogChannel.ANALOG_0 FEZCerberus.Pin.PA6
P28Cpu.AnalogChannel.ANALOG_1 FEZCerberus.Pin.PA2
P29Cpu.AnalogChannel.ANALOG_2 FEZCerberus.Pin.PA3
P22Cpu.AnalogChannel.ANALOG_3 FEZCerberus.Pin.PC0
P23Cpu.AnalogChannel.ANALOG_4 FEZCerberus.Pin.PC1
P30Cpu.AnalogChannel.ANALOG_5 FEZCerberus.Pin.PA4
P24Cpu.AnalogChannel.ANALOG_6 FEZCerberus.Pin.PC2
P25Cpu.AnalogChannel.ANALOG_7 FEZCerberus.Pin.PC3