GettingStarted
How to Update the firmware about CMSIS-DAP¶
Preparation
Download firmware from this URI and extract zipped file.
- Latest version
grpeach_8mb_20150601.bin- support the binary files of size greater than 512 kilobytes.
- Old versions
- grpeach_8mb_20150318.bin
- support drag-and-drop writing on OS X Yosemite.
- grpeach_8mb_20141217.bin
- Changed optimization.
- grpeach_8mb_20141211.bin
- It is not need to restart your terminal software after changing the the RZ/A1H's program.
- Improved the downloading speed.
- The communication clock is faster.
- Improved the downloading sequence.
- grpeach_8mb_20141209.bin
- When downloading program of GR-PEACH, block erase command is used instead of chip erase command.
- It does not need to reconnect USB cable between PC and GR-PEACH before RZ/A1H's program updating.
- USB serial communication is
notwork well when Reset button is pushed after updating the RZ/A1H's program.- After you change the RZ/A1H's program, restart your terminal software.
- grpeach_8mb_20141127.bin
- Limitation: USB serial communication is not work well when Reset button is pushed after updating the RZ/A1H's program.
- This firmware is written in current GR-PEACH.
- grpeach_8mb_20141112.bin
- Limitation: It needs to reconnect USB cable between PC and GR-PEACH before RZ/A1H's program updating.
- grpeach_8mb_20150318.bin
- Connect GR-PEACH and PC
Close the JP2 and connect USB cable when you proceed to update the firmware. - After the connection, PC will mount GR-PEACH as mass storage drive that name is 「CRP DISABLED」.
If PC will mount GR-PEACH as "mbed", you failed JP2 close.
In this case, re-try previous item.
When GR-PEACH connected as "CRP DISABLED", it can open the JP2 during firmware updating. - For Mac user : Refer here
Open the folder and delete the Firmware.bin.
- Copy the downloaded file to this drive.
- When copy is finished, disconnect between GR-PEACH and PC.
- Reconnect GR-PEACH and PC.
- If you find mass storage drive that volume name is "mbed", firmware update is finished.
Install the USB serial communication driver¶
For Windows(R) user:
- Connect GR-PEACH and PC.
- After the mount GR-PEACH as "MBED" volume label, install this driver.
Add compiler for GR-PEACH¶
- The root folder of GR-PEACH mass storage drive includes "mbed.htm" .
- This file jumps to the site of GR-PEACH when double clicked.
- You can use mbed compiler for GR-PEACH after click at "Add to your compiler" button.
Let's blink LED¶
- Then launch the development environment from Compiler button.
- Select the mbed_blinky from "Import" button.
- Get the source code to click "Import" button.
- Create binary file to click the "Compile" button.
- When compile is finished, binary file is downloaded using browser function.
Copy this file to mbed drive.
For Window user: drag and drop.
For Mac user : Refer here - When GR-PEACH's reset button is pushed or reconnect USB cable, the program runs.
Blink LED smoothly¶
- Modify the source code of main.cpp in the Let's blink LED.
- And compile this program and run on the GR-PEACH.
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; } } }
Use A/D converter¶
- Modify the source code of main.cpp in the Let's blink LED.
- And compile this program and run on the GR-PEACH.
A/D conversion uses A0 and A1 of Arduino pinout
#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); } }
Use Serial Peripheral Interface(SPI)¶
- Modify the source code of main.cpp in the Let's blink LED.
- And compile this program and run on the GR-PEACH.
SPI communication uses from D10 to D13 of Arduino pinout
#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); } }
Use I2C¶
- Modify the source code of main.cpp in the Let's blink LED.
- And compile this program and run on the GR-PEACH.
I2C communication uses SDA and SCL on Arduino pinout
#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); }
Use microSD¶
- Modify the source code of main.cpp in the Let's blink LED.
- Select the root directory of this project, then click the "Import this library" on the right of SD file system.
- During importing, the dialog appears.
**DO NOT CHECK the "Update all libraries to the latest version".**
- And compile this program and run on the GR-PEACH.
microSD control using SPI interface.
#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); } }
Use Ethernet¶
- Modify the source code of main.cpp in the Let's blink LED.
- And compile this program and run on the GR-PEACH.
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; }
- Click the "Import" button.
- Select "mbed-rtos" and "EthernetInterface" from library tag, then click "Import!".
- During importing, the dialog appears.
**DO NOT CHECK the "Update all libraries to the latest version".**
- And compile this program and download on the GR-PEACH.
- Set the IP address of your PC to "192.168.100.100".
- Connect between GR-PEACH and your PC using LAN cable.
- Reset GR-PEACH.
Then GR-PEACH outputs follows message.
TCPCllient waiting for server IP and port... TCPClient IP Address is 192.168.100.2
8. Run the ping command from your PC to GR-PEACH.
PING 192.168.100.2