GettingStarted_JPN
CMSIS-DAP ファームウェアの更新¶
事前準備
以下のファイルをダウンロードして、適当なフォルダに展開します。
- 最新版
grpeach_8mb_20150601.bin- 512Kバイト以上のサイズのバイナリファイルに対応しました
- 旧版
- grpeach_8mb_20150318.bin
- OS X Yosemite上でもドラッグ&ドロップでプログラム書き込みができるようになりました
- grpeach_8mb_20141217.bin
- 最適化方法を見直し、書き込みを高速化ました
- grpeach_8mb_20141211.bin
- ターミナルの再起動が不要になりました
- 書き込み速度を向上させました
- 通信クロック高速化
- 書き込みシーケンスの改善
- grpeach_8mb_20141209.bin
- GR-PEACHのプログラム書き込み開始時にチップイレースをしていましたが、必要な箇所だけブロックイレースを行うように変更しました
- 2回目書き込みに失敗する問題を修正しました
- 上記対応後シリアル出力されない場合がある問題の修正しました
- GR-PEACHのプログラムを書き換えた後はターミナルソフトの再起動を行ってください。
- grpeach_8mb_20141127.bin
- 制限: RZ/A1Hのプログラム書き換えたのち、RSTボタンを押すとUSBシリアルが正常に動かないことがあります。
- 配布時はこちらのファームウエアが書き込まれています。
- grpeach_8mb_20141112.bin
- 制限: RZ/A1Hのプログラム書き換え前に一度GR-PEACHを抜き差ししてください。
- grpeach_8mb_20150318.bin
- GR-PEACHをPCに接続します。
書き換えを行うときはJP2をショートさせた状態で接続させてください。
- 「CRP DISABLED」という名前のマスストレージドライブがマウントされます。
「mbed」という名前のマスストレージドライブがマウントされた場合は、JP2のショートが失敗しています。
再度1.を実施してください。
また書き換えを行っている場合、JP2のショートを解除してもかまいません。
- Macの場合、こちらのスクリプトを用いて書き換えてください。手順3,4を行います。
Windowsの場合、フォルダーを開いてファイルを表示し、中に含まれているFirmware.binを削除します。
- ドライブに<ファイル名>をコピーします。
- コピーが終わったらUSBケーブルを外します。
- 再度PCとGR-PEACHを接続し、「MBED」という名前のマスストレージドライブが
見つかれば、ファームウェアの更新完了です。
USBシリアルドライバのインストール¶
Windowsご利用の方は、GR-PEACHをUSBに挿入して「MBED」ドライブが見えている状態でUSBシリアルドライバをインストールします。
GR-PEACHをターゲットとして登録する¶
- GR-PEACHを接続し、「mbed.htm」を開くと、GR-PEACHのサイトに行きます。
- GR-PEACHのサイトの右側の「Add to your compiler」をクリックし、開発環境に登録します。
LEDをチカチカさせよう¶
- ページ右上にある、"Compiler"ボタンをクリックし、開発環境を立ち上げます。
- mbed_blinkyをimportします。
Import programmbed_blinky
The example program for mbed pin-compatible platforms
- 「Update all libraries to the latest version」にチェックを入れ、「import」します。
- Compileボタンをクリックしてコンパイルを行います。
- コンパイルが終了すると、バイナリファイルがダウンロードされます。
これをmbedのマスストレージドライブへコピーしてください。
・ドラッグ&ドロップを行ってください。
- GR-PEACHのリセットボタンを押すか、USBケーブルを挿し直すことで、プログラムが実行されます。
LEDを滑らかに光らせよう¶
- LEDをチカチカさせようのmain.cppを以下のように書き換え、コンパイルし、実行します。
LED PWM
#include "mbed.h" PwmOut led(LED_RED); int main() { float crt = 1.0, delta = 0.04; led.period_ms(2); // 500Hz while (true) { led.write(crt); wait_ms(50); crt = crt + delta; if (crt > 1.0) { crt = 1.0; delta = -delta; } else if (crt < 0) { crt = 0; delta = -delta; } } }
A/Dコンバータを使おう¶
- LEDをチカチカさせようのmain.cppを以下を参考に書き換え、コンパイルし、実行します。
Arduino A0,A1のA/D変換
#include "mbed.h" DigitalOut myled(LED1); AnalogIn ain0(A0); AnalogIn ain1(A1); int main() { myled = 1; while(1) { myled = !myled; printf("ain0 = %8.3f, ain1 = %8.3f\n", ain0.read(), ain1.read()); wait(1); } }
SPIを使おう¶
- LEDをチカチカさせようのmain.cppを以下を参考に書き換え、コンパイルし、実行します。
Arduino D10-D13を用いたSPI通信
#include "mbed.h" SPI spi(D11, D12, D13); // mosi, miso, sclk DigitalOut cs(D10); int main() { int data = 0; int res = 0; for(int i = 0; i < 30; i++) { cs = 0; res = spi.write(data++); cs = 1; wait_ms(0.001); } }
I2Cを使おう¶
- LEDをチカチカさせようのmain.cppを以下を参考に書き換えます。
- 必要に応じて、I2C信号をプルアップします。プルアップはジャンパをショートすることによって行うことができます。
対応するジャンパはPlatformを参照ください。
ジャンパの位置はこちらを参照ください。 - コンパイルし、実行します。
Arduino SDA,SCLを用いたI2C通信
#include "mbed.h" #define SIZE (10) #define ADDR (0x90) I2C i2c(I2C_SDA, I2C_SCL); int main() { char buf[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; char res[SIZE]; i2c.write(ADDR, buf, SIZE); i2c.read(ADDR, res, SIZE); }
micro-SDを使おう¶
- LEDをチカチカさせようのmain.cppを以下を参考に書き換えます。
- プロジェクトのルートディレクトリを選択し、SDファイルシステムの右側の「Import this library」をクリックします。
- 途中でダイアログが表示されますので、決して「Update all libraries to the latest version」にチェックを「入れないで」ください。
- コンパイルし、実行します。
SPI通信を用いたmicroSD制御
#include "mbed.h" #include "SDFileSystem.h" SDFileSystem sd(P8_5, P8_6, P8_3, P8_4, "sd"); namespace { const char *sd_file_path = "/sd/out.txt"; const int DATA_SIZE = 256; } int main() { uint8_t data_written[DATA_SIZE] = { 0 }; bool result = true; // Fill data_written buffer with random data // Write these data into the file { FILE *f = fopen(sd_file_path, "w"); printf("SD: Writing ... "); for (int i = 0; i < DATA_SIZE; i++) { data_written[i] = rand() % 0XFF; fprintf(f, "%c", data_written[i]); } printf("[OK]\r\n"); fclose(f); } // Read back the data from the file and store them in data_read { FILE *f = fopen(sd_file_path, "r"); printf("SD: Reading data ... "); for (int i = 0; i < DATA_SIZE; i++) { uint8_t data = fgetc(f); if (data != data_written[i]) { result = false; break; } } printf("[%s]\r\n", result ? "OK" : "FAIL"); fclose(f); } }
イーサネットを使おう¶
- LEDをチカチカさせようのmain.cppを以下を参考に書き換えます。
ehterのサンプルコード
#include "mbed.h" #include "EthernetInterface.h" struct s_ip_address { int ip_1; int ip_2; int ip_3; int ip_4; }; int main() { char buffer[256] = {0}; s_ip_address ip_addr = {0, 0, 0, 0}; int port = 0; printf("TCPCllient waiting for server IP and port...\r\n"); EthernetInterface eth; eth.init("192.168.100.2", "255.255.255.0", "192.167.101.3"); eth.connect(); printf("TCPClient IP Address is %s\r\n", eth.getIPAddress()); sprintf(buffer, "%d.%d.%d.%d", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4); TCPSocketConnection socket; while (socket.connect(buffer, port) < 0) { printf("TCPCllient unable to connect to %s:%d\r\n", buffer, port); wait(1); } while ( true ) { wait(1); } socket.close(); eth.disconnect(); return 0; } // set mac address void mbed_mac_address(char *mac) { mac[0] = 0x00; mac[1] = 0x02; mac[2] = 0xF7; mac[3] = 0xF0; mac[4] = 0x00; mac[5] = 0x00; }
- Importボタンをクリックします。
- libraryタグから「mbed-rtos」と「EthernetInterface」を選択し、「Import!」をクリックします。
- 途中でダイアログが表示されますので、必ず「Update all libraries to the latest version」にチェックを入れてください。
- コンパイルします。
- GR-PEACHにプログラムをダウンロードします。
- PCのIPアドレスを192.168.100.100に設定します。
- GR-PEACHとPCをLANケーブルで接続します。
- GR-PEACHをリセットします。
シリアルで以下が出力されます。
TCPCllient waiting for server IP and port... TCPClient IP Address is 192.168.100.2
- PCからGR-PEACHに向け、PINGを発行します。
PING 192.168.100.2