編集履歴一覧に戻る
AoiSayaのアイコン画像

AoiSaya が 2020年04月19日13時01分28秒 に編集

コメント無し

本文の変更

# はじめに

-

前回、チョットした回路を組むのにGreenPAKのSLG46826っていうデバイスが便利っていう記事を書きました。

+

前回、チョットした回路を組むのにGreenPAKのSLG46826が便利っていう記事を書きました。

https://elchika.com/article/6ddfba55-fa3e-436b-b603-69478b6b450d/ だけど、デザインファイル(設計データ)を焼くための開発ボードがちょっとお高い。 公式サイトでArduinoで焼く方法が紹介されてるけど、Arduinoを持ってないと使えない。M5StickCならもってるんだけどなぁという人はきっといるはず。

-

そこで、Arduino用のスケッチを改造してM5StickCで焼く方法を試してみたので紹介します。

+

そこで、Arduino用のスケッチを改造してM5StickCからI2Cで焼く方法を試してみたので紹介します。 本記事はピン番号の数え方、I2Cの基本的な知識およびM5StickCのC言語によるプログラミング知識がある方を対象としています。

# 用意するもの

-

## 部 - SLG46826V-DIP または SLG46826VかSLG46826G搭載の自作基板 - M5StickC - Grove 4ピンコネクタ - ジャンパーピン変換ケーブル(オスまたはメス) - ブレッドボード (変換ケーブルがオスの場合に必要)

+

## 部材一覧 1. SLG46826V-DIP または SLG46826VかSLG46826G搭載の自作基板 2. M5StickC 3. USB Type-Cケーブル(M5StickCの付属品) 4. Grove 4ピンコネクタ - ジャンパーピン変換ケーブルオスまたはメス) 5. ブレッドボード (変換ケーブルがオスの場合に必要) ![部材一式](https://camo.elchika.com/99b20901694ed2252ad8d682d0ba272bcbe22fa7/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30383562623466332d343530612d343164632d393963622d6164373366646533326230382f33383566376633312d306232622d343738362d386162372d393862356239316230343933/)

## ダウンロードするもの - 公式のArduino用スケッチ&ドキュメント https://www.dialog-semiconductor.com/sites/default/files/an-cm-255_slg468246_mtp_arduino_programming_example.zip

+

## M5StickCの開発環境 下記は検証に使用した環境です(ご参考) 1. dynabook T351/57CW 2. Windows 10 Pro 64bit (1909) 3. GreenPAK6 Designer(64bit) Version: 6.21 (Build 005) 4. Arduino Software (IDE) 1.8.12

# 接続方法

-

## SLG46826V-DIP (20pinDIP)の場合 - 変換ケーブルを使って、M5StickCとGreenPAKを繋ぎます。

-

- オスならブレッドボード経由で、メスなら直接DIPットにつなぎます。

+

- オスならブレッドボード経由で、メスなら直接DIPパッージにつなぎます。 - ●ぽっちが付いている端子が1番ピンです。(写真では左下)

-

M5StickCの端子 | SLG46826V-DIPの端子番号 | 機能

+

M5StickCの端子 | SLG46826V-DIPのピン番号 | 機能

:---: | :---: | :---: VOUT | 1 | VDD G33 | 8 | SCL G32 | 9 | SDA GND | 11 | GND

-

+

![SLG46826V-DIPの場合](https://camo.elchika.com/f2f46ebd6020e72c3974eedd40b571ea9f672df8/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30383562623466332d343530612d343164632d393963622d6164373366646533326230382f34306564373063632d333538652d346238342d383465352d366233343261386432356438/)

## SLG46826V (20pin STQFN)の場合 - 変換ケーブルなどを使って、M5StickCとGreenPAKを繋ぎます。 - 自作基板でチップに別途電圧を与えている場合は、VDDはつながなくて構いません。 - VDD2は電圧を与えていてもオープンでも問題ありません。

-

M5StickCの端子 | SLG46826Vの端子番号 | 機能

+

M5StickCの端子 | SLG46826Vのピン番号 | 機能

:---: | :---: | :---: VOUT | 1 | VDD G33 | 8 | SCL G32 | 9 | SDA GND | 11 | GND ## SLG46826G (20pin TSSOP)の場合 - 変換ケーブルなどを使って、M5StickCとGreenPAKを繋ぎます。

-

- SLG46826GはSLG46826Vと端子番号が異なりますのでご注意ください。

+

- SLG46826GはSLG46826Vとピン番号が異なりますのでご注意ください。

- 自作基板でチップに別途電圧を与えている場合は、VDDはつながなくて構いません。 - VDD2は電圧を与えていてもオープンでも問題ありません。

-

M5STickCの端子 | SLG46826Gの端子番号 | 機能

+

M5STickCの端子 | SLG46826Gのピン番号 | 機能

:---: | :---: | :---: VOUT | 20 | VDD G33 | 13 | SCL G32 | 12 | SDA GND | 10 | GND # 基本スケッチ ダウンロードした`an-cm-255_slg468246_mtp_arduino_programming_example.zip`には、以下のファイルが含まれています。 ```:zipの中身 AN-CM-255 SLG46824_6 MTP Arduino Programming Example.pdf MTP_Programmer.ino SLG46824_6 MTP Arduino Programming Example.gp6 ``` 「MTP_Programmer.ino」をM5StickC用「GreenPAK_Burner.ino」に改造する方法を説明します。 # スケッチの修正方法 1. まず、「MTP_Programmer.ino」を「GreenPAK_Burner.ino」に名前を変えて保存します。

-

2. 次に、以下の差分を見ながら修正します。 ## includeファイルの修正 ```:MTP_Programmer.ino

+

2. 次に、以下の差分を見ながら修正(コピペ)します。 ## include文の変更 M5StickC用のインクルードファイルに差し替えます。 ```C++:MTP_Programmer.ino

#include <Wire.h> ```

-

```:GreenPAK_Burner.ino

+

```C++:GreenPAK_Burner.ino

#include <M5StickC.h> ``` ## 書き込むデータの記述方法の変更 M5Stickはメモリ容量に余裕があるので、データの差し替えが楽になる様に変更します。 データの差し替え方法は後で説明します。

-

```:MTP_Programmer.ino

+

```C++:MTP_Programmer.ino

// Store nvmData in PROGMEM to save on RAM const char nvmString0[] PROGMEM = "010E000000008E3F0300000000000000"; (中略) eepromString15 }; ```

-

```:GreenPAK_Burner.ino

+

```C++:GreenPAK_Burner.ino

// Store nvmData in PROGMEM to save on RAM const char nvmData[] PROGMEM ="\ "; // Store eepromData in PROGMEM to save on RAM const char eepromData[] PROGMEM ="\ "; ```

-

## setup関数の修正 ```:MTP_Programmer.ino

+

## setup()関数の修正 I2Cのピン指定、M5StickC用の画面表示などを加えます。I2Cは100kHzで動作させます。(動作が安定しやすい) ```C++:MTP_Programmer.ino

void setup() { Wire.begin(); // join i2c bus (address optional for master) Wire.setClock(400000); Serial.begin(115200); pinMode(VDD, OUTPUT); // This will be the GreenPAK's VDD digitalWrite(VDD, HIGH); delay(100); } ```

-

```:GreenPAK_Burner.ino

+

```C++:GreenPAK_Burner.ino

void setup() { M5.begin(); Wire.begin(32, 33); Wire.setClock(100000); Serial.begin(115200); M5.Lcd.setRotation(3); M5.Lcd.setCursor(0, 0, 4); M5.Lcd.print("GreenPAK\n"); M5.Lcd.print("Burner\n"); M5.Lcd.print("ver.0.1"); delay(100); } ```

-

## powercycle()に引数を追加 2ヶ所あるので、2ヶ所とも変更します。 ```:MTP_Programmer.ino

+

## powercycle()の呼び出しに引数を追加 2ヶ所あるので、2ヶ所とも引数を追加します。 ```C++:MTP_Programmer.ino

powercycle(); ```

-

```:GreenPAK_Burner.ino

+

```C++:GreenPAK_Burner.ino

powercycle(control_code); ```

-

## writeChip関数の変更 データのコピー方法を変更します。 ```:MTP_Programmer.ino

+

## writeChip()関数の変更 1. データのコピー方法を変更します。 ```C++:MTP_Programmer.ino

if (NVM_selected) { char * ptr = (char *) pgm_read_word (&nvmString[i]); strcpy_P(buffer, ptr); } else if (EEPROM_selected) { char * ptr = (char *) pgm_read_word (&eepromString[i]); strcpy_P(buffer, ptr); } ```

-

```:GreenPAK_Burner.ino

+

```C++:GreenPAK_Burner.ino

if (NVM_selected) { memcpy(buffer,&nvmData[i*43+9],32); } else if (EEPROM_selected) { memcpy(buffer,&eepromData[i*43+9],32); } ```

-

スレーブアドレスの上書き方法を修正します。

+

2. スレーブアドレスの上書き方法を修正します。

(元の記述ではピンによるスレーブアドレス指定が無効になってしまうため)

-

```:MTP_Programmer.ino

+

```C++:MTP_Programmer.ino

data_array[0xC][0xA] = slave_address; ```

-

```:GreenPAK_Burner.ino

+

```C++:GreenPAK_Burner.ino

data_array[0xC][0xA] = (data_array[0xC][0xA] & 0xF0) | slave_address; ```

-

## powercycle関数の変更

+

## powercycle()関数の変更

自作基板でも使えるようにソフトウェアリセットに変更します。

-

```:MTP_Programmer.ino

+

```C++:MTP_Programmer.ino

void powercycle() { Serial.println(F("Power Cycling!")); digitalWrite(VDD, LOW); delay(500); digitalWrite(VDD, HIGH); // Serial.println(F("Done Power Cycling!")); } ```

-

```:GreenPAK_Burner.ino

+

```C++:GreenPAK_Burner.ino

void powercycle(int code) { Serial.println(F("Power Cycling!")); // Software reset Wire.beginTransmission(code & 0x78); Wire.write(0xC8); Wire.write(0x02); Wire.endTransmission(); // Serial.println(F("Done Power Cycling!")); } ``` # 書き込むデータの準備 ## 回路設計

-

「GreenPAK Designer」を使って好きな回路を設計します。

+

「GreenPAK6 Designer」を使って好きな回路を設計します。

設計が終わったら、セーブしておきましょう。 (フロッピーディスクのアイコンを押すか、[File]-[Save]を選択) 以下の説明では、ダウンロード済みの`SLG46824_6 MTP Arduino Programming Example.gp6`を使って説明します。

-

1. 「SLG46824_6 MTP Arduino Programming Example.gp6」を「GreenPAK Designer」で開きます。

+

1. 「SLG46824_6 MTP Arduino Programming Example.gp6」を「GreenPAK6 Designer」で開きます。

もし、下記のようなダイアログボックスが表示されたら、[OK]を押してください。

-

「GreenPAK Designer」のアップデートに伴うものです設計ータには問題ありません。

+

「GreenPAK6 Designer」のアップデートに伴うものですのでザインには問題ありません。 ![キャプションを入力できます](https://camo.elchika.com/87f2acd0c36f11797b14bd31b0d92935d4dc2a01/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30383562623466332d343530612d343164632d393963622d6164373366646533326230382f36396430656630392d613030312d346636652d623065332d303965373337646664313061/)

-

## HEXデータの作成

-

### NVMデータ(ザインファイル)

+

手順を列挙します。 ### NVMデータ(設計ータ)

1. [File]-[Export]-[Export NVM]を選択 2. 保存ダイアログが開いたら、「ファイルの種類(T):」で「Intel HEX files (*.HEX)」を選択 3. 「ファイル名(N):」に好きな名前を入力 デフォルトでは*.gp6と同じ名前が表示されるので、変更しない場合はそのままでよい 4. 「保存(S)」をクリックして保存 ### EEPROMデータ

-

EEPROMデータがある場合は、EEPROMデータのHEXデータも作成します

+

EEPROMデータがある場合は、EEPROMデータのHEXデータも作成します

1. [File]-[Export]-[Export EEPROM]を選択 2. 保存ダイアログが開いたら、「ファイルの種類(T):」で「Intel HEX files (*.HEX)」を選択 3. 「ファイル名(N):」に好きな名前を入力

-

デフォルトでは*.gp6と同じ名前が表示されるので、設計データと重複しないようにする

+

デフォルトでは*.gp6と同じ名前が表示されるので、NVMデータと重複しないようにする

4. 「保存(S)」をクリックして保存 ## スクリプトへの埋め込み

-

1. 作成したHEXデータを好きなエディタで開 2. 上記で作成したスクリプト「GreenPAK_Burner.ino」中身をすべて張り付け張り付ける場所は、「設計データ」であれば、

+

1. 作成したHEXデータを好きなエディタで開きます。 2. 「NVMデータ」を上記で作成したスクリプト「GreenPAK_Burner.ino」の下記の行の間すべて張り付けます

```:GreenPAK_Burner.ino const char nvmData[] PROGMEM ="\ "; ```

-

の間に、「EEPROMデータ」あれば、

+

3. 「EEPROMデータ」あれば、上記で作成したスクリプト「GreenPAK_Burner.ino」の下記の行の間にすべて張り付けます。

```:GreenPAK_Burner.ino const char eepromData[] PROGMEM ="\ "; ```

-

の間に張り付ける。 3. 張り付けたデータのすべての行末に`\`を追加4. 最終的に下記のようになれば、OK

+

4. 張り付けたデータのすべての行末に`\`を追加しま5. 最終的に下記のようになれば、完成です

```:GreenPAK_Burner.ino const char nvmData[] PROGMEM ="\ :1000000000000000000000000000000000000000F0\ :1000100000000000000000000000000000000000E0\ :1000200000000000000000000000000000000000D0\ :10003000000000000000000000000000000000C4FC\ :100040003FFCC21FFC000000000000000000000098\ :1000500000000000000000000000000000000000A0\ :100060000030300030303030000030303000303080\ :100070000000000000000000000000000000000080\ :1000800000000000001422300C00000000000000FE\ :100090000000000000000000000000000000000060\ :1000A0000000002000010000000201000002000129\ :1000B0000000020100000200010000020100000235\ :1000C000000100000200010000000101000000002A\ :1000D0000000000000000000000000000000000020\ :1000E0000000000000000000000000000000000010\ :1000F000000000000000000000000000000000A55B\

-

:00000001FF";\

+

:00000001FF\ ";

``` # M5StickCへの書き込み ## コンパイル&書き込み

-

「GreenPAK_Burner.ino」を好きな環境でコンパイルしてM5StickCに書き込。 エラーなしで書き込めると、シリアルモニタに下記画面が表示され。 また、画面に「GreenPAK Burner ver.?.?」と表示され

+

「GreenPAK_Burner.ino」を好きなツールや環境でコンパイルしてM5StickCに書き込みます。 M5StickCに書き込前にシリアルモニタを開いておきます。 エラーなしで書き込めると、シリアルモニタに下記画面が表示されます。 また、M5StickCに「GreenPAK Burner ver.?.?」と表示されます![キャプションを入力できます](https://camo.elchika.com/41116dcbd359a254c7b7eac52369cf583f8e4be8/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30383562623466332d343530612d343164632d393963622d6164373366646533326230382f39393066353533362d363362352d346537362d386333352d373138383363306537646235/)

## 動作確認

-

GreenPAKつな、シリアルモニタで`p`[ENTER]」を打ち込んだときに書き画面のように「device 0x0? is present」と表示されれば準備完了もしdeviceが表示されない場合は、配線が間違っている可能性があります。また、M5StackCの電源を入れなおすとする場合あります。

+

GreenPAKつながった状態で、シリアルモニタで`p`[ENTER]」を打ち込んだときに下記画面のように「device 0x0? is present」と表示されれば正常です(`?`の部分は0~Fのいずれか)お疲れさまでした。 もしdeviceが表示されない場合は、M5StickCの電源を入れなおしてみてください。それでもかない場合は配線やプログラムを見直してください。 自基板の場合は、GreenPAKに電圧供給されているかも確認してみてください。GreenPAKの書き込みには2.5~5.5V、3mA以上が必要です。 ![キャプションを入力できます](https://camo.elchika.com/75112d780498370229ec3bc30b5f2b6bddaa0af1/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30383562623466332d343530612d343164632d393963622d6164373366646533326230382f39633665643864352d626234342d343965622d386563342d396562303462373864326264/)

# コマンド `MENU: r = read, e = erase, w = write, p = ping` と表示されているときにコマンドを受け付けます。 本稿の説明は、オリジナルのArduinoスケッチの使い方と同じです。 ## ping

-

デバイスを探します。 1. `p`[ENTER]を入力

+

I2Cデバイスを探します。 1. `p`[ENTER]を入力しま

2. I2Cデバイスが見つかった場合は、 ```:Ping Pinging!

-

device 0x0? is present

+

device 0x01 is present

```

-

と表示されて最初のMENUに戻?の部分は見つかったI2Cアドレスの上位4bit。

+

と表示されて最初のMENUに戻ります

+

`0x01`の部分はみつかったデバイスのI2Cアドレスの上位4bit(以下、上位アドレス)が表示されます。他のコマンドも同様です。 I2Cアドレスの下位3bitが0の時に反応するデバイスをスキャンするので、GreenPAK以外のデバイスのアドレスが表示される場合もあります。

## read

-

データを読みだして表示。 1. `r`[ENTER]を入力。 2. メッセージが表示されて入力待ちにな

+

データを読みだして表示しま。 1. `r`[ENTER]を入力しま。 2. メッセージが表示されて入力待ちになります

```:read例 MENU: r = read, e = erase, w = write, p = ping Reading chip! device 0x01 is present Submit slave address, 0-F: ```

-

3. 書き込むデバイの番号を入力して[ENTER]。上記例では`1`[ENTER]。止めたいときは、M5StickCの電源を入れなおす。 4. メッセージが表示されて入力待ちにな

+

3. 書き込むGreenPAKの上位アドレを入力して[ENTER]。上記例では`1`[ENTER]。止めたいときは、M5StickCの電源を入れなおします。 4. メッセージが表示されて入力待ちになります

```:read例 MENU: n = NVM, e = EEPROM: ```

-

5. NVMデータを読むときは`n`[ENTER]、EEPROMデータを読むときは`e`[ENTER]を入力 6. データ読み出しが実行されて最初のMENUに戻。 7. 一連の実行結果の例を示す。

+

5. NVMデータを読むときは`n`[ENTER]、EEPROMデータを読むときは`e`[ENTER]を入力します。 6. データ読み出しが実行されて最初のMENUに戻ります。 7. 一連の実行結果の例を示します。

```:read MENU: r = read, e = erase, w = write, p = ping Reading chip! device 0x01 is present Submit slave address, 0-F: 01 MENU: n = NVM, e = EEPROM: NVM 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000001 000000000000000000000000000000C4 3FFCC21FFC0000000000000000000000 00000000000000000000000000000000 00303000303030300000303030003030 00000000000000000000000000000000 00000000001422300C00000000000000 00000000000000000000000000000000 00000020000100000002010000020001 00000201000002000100000201000002 00010000020001000000010100000000 00000000000000000000000000000000 00000000000000000000000000000000 41140E2A251910101000B800000000A5 MENU: r = read, e = erase, w = write, p = ping ``` ## erace

-

データを消去。 1. `e`[ENTER]を入力。 2. メッセージが表示されて入力待ちにな

+

データを消去しま。 1. `e`[ENTER]を入力しま。 2. メッセージが表示されて入力待ちになります

```:erace例 MENU: r = read, e = erase, w = write, p = ping Erasing Chip! device 0x01 is present Submit slave address, 0-F: ```

-

3. データを消去するデバイの番号を入力して[ENTER]。上記例では`1`[ENTER]。止めたいときは、M5StickCの電源を入れなおす。 4. メッセージが表示されて入力待ちにな

+

3. データを消去するGreenPAKの上位アドレを入力して[ENTER]。上記例では`1`[ENTER]。止めたいときは、M5StickCの電源を入れなおします。 4. メッセージが表示されて入力待ちになります

```:erace例 MENU: n = NVM, e = EEPROM: ```

-

5. NVMデータを消すときは`n`[ENTER]、EEPROMデータを消すときは`e`[ENTER]を入力。 6. データ消去実行され最初のMENUに戻。 7. 一連の実行結果の例を示す。

+

5. NVMデータを消すときは`n`[ENTER]、EEPROMデータを消すときは`e`[ENTER]を入力しま。 6. データ消去後にGreenPAKリセットされ最初のMENUに戻ります。 7. 一連の実行結果の例を示します。

```:erace MENU: r = read, e = erase, w = write, p = ping Erasing Chip! device 0x01 is present Submit slave address, 0-F: 01 MENU: n = NVM, e = EEPROM: NVM Erasing page: 0x00 NVM ready Erasing page: 0x01 NVM ready Erasing page: 0x02 NVM ready Erasing page: 0x03 NVM ready Erasing page: 0x04 NVM ready Erasing page: 0x05 NVM ready Erasing page: 0x06 NVM ready Erasing page: 0x07 NVM ready Erasing page: 0x08 NVM ready Erasing page: 0x09 NVM ready Erasing page: 0x0A NVM ready Erasing page: 0x0B NVM ready Erasing page: 0x0C NVM ready Erasing page: 0x0D NVM ready Erasing page: 0x0E NVM ready Erasing page: 0x0F NVM ready Power Cycling! device 0x00 is present MENU: r = read, e = erase, w = write, p = ping ``` ## write

-

データを書き込

+

データを書き込み(焼き)ます

1. `w`[ENTER]を入力する。

-

2. メッセージが表示されて入力待ちにな

+

2. メッセージが表示されて入力待ちになります

```:write例 MENU: r = read, e = erase, w = write, p = ping Writing Chip! device 0x01 is present Submit slave address, 0-F: ```

-

3. データを書き込むデバイの番号を入力して[ENTER]。上記例では`1`[ENTER]。止めたいときは、M5StickCの電源を入れなおす。 4. メッセージが表示されて入力待ちにな

+

3. データを書き込むGreenPAKの上位アドレを入力して[ENTER]。上記例では`1`[ENTER]。止めたいときは、M5StickCの電源を入れなおします。 4. メッセージが表示されて入力待ちになります

```:write例 MENU: n = NVM, e = EEPROM: ```

-

5. NVMデータを消すときは`n`[ENTER]、EEPROMデータを消すときは`e`[ENTER]を入力。 6. 最初に`erace`が実行され。NVMデータを消した場合は再度入力待ちにな

+

5. NVMデータを消すときは`n`[ENTER]、EEPROMデータを消すときは`e`[ENTER]を入力しま。 6. 最初に`erace`が実行されます。NVMデータを消した場合は再度入力待ちになります

```:write例 Erasing page: 0x00 NVM ready Erasing page: 0x01 NVM ready Erasing page: 0x02 NVM ready Erasing page: 0x03 NVM ready Erasing page: 0x04 NVM ready Erasing page: 0x05 NVM ready Erasing page: 0x06 NVM ready Erasing page: 0x07 NVM ready Erasing page: 0x08 NVM ready Erasing page: 0x09 NVM ready Erasing page: 0x0A NVM ready Erasing page: 0x0B NVM ready Erasing page: 0x0C NVM ready Erasing page: 0x0D NVM ready Erasing page: 0x0E NVM ready Erasing page: 0x0F NVM ready Power Cycling! device 0x01 is present Control Code: 0x02 Enter new slave address 0-F: ```

-

7. 「GreenPAK Designer」上で設定したGreenPAKの「slave address」(Control codeレジスタ)を上書きでき番号を入力して[ENTER]。書き込む前と同じ値にするなら`1`[ENTER]。 8. 書き込みが実行された後に、'read'が自動的に実行され、最初のMENUに戻。 Verifyは実装されていないので、書き込みデータと'read'結果を目で確認する必要があ。 最後のデータはデバイス情報が読みだされるため、書き込みデータと一致しないが問題はない。 10. 一連の実行結果の例を示す。

+

7. 「GreenPAK6 Designer」上で設定したGreenPAKの「slave address」(Control codeレジスタ)を上書きできます新しく設定するGreenPAKの上位アドレスを入力して[ENTER]。書き込む前と同じ値にするなら`1`[ENTER]。 8. 書き込みが実行された後に、GreenPAKのリセットと'read'が自動的に実行され、最初のMENUに戻ります。 Verifyは実装されていないので、書き込みデータと'read'結果を目で確認する必要があります。 最後のデータはデバイス情報が読みだされるため、書き込みデータと一致しませんが問題はありません。 10. 一連の実行結果の例を示します。

```:write例 MENU: r = read, e = erase, w = write, p = ping Writing Chip! device 0x01 is present Submit slave address, 0-F: 01 MENU: n = NVM, e = EEPROM: NVM Erasing page: 0x00 NVM ready Erasing page: 0x01 NVM ready Erasing page: 0x02 NVM ready Erasing page: 0x03 NVM ready Erasing page: 0x04 NVM ready Erasing page: 0x05 NVM ready Erasing page: 0x06 NVM ready Erasing page: 0x07 NVM ready Erasing page: 0x08 NVM ready Erasing page: 0x09 NVM ready Erasing page: 0x0A NVM ready Erasing page: 0x0B NVM ready Erasing page: 0x0C NVM ready Erasing page: 0x0D NVM ready Erasing page: 0x0E NVM ready Erasing page: 0x0F NVM ready Power Cycling! device 0x01 is present Control Code: 0x02 Enter new slave address 0-F: 0x01 00 00000000000000000000000000000000 ack ready 01 00000000000000000000000000000000 ack ready 02 00000000000000000000000000000000 ack ready 03 000000000000000000000000000000C4 ack ready 04 3FFCC21FFC0000000000000000000000 ack ready 05 00000000000000000000000000000000 ack ready 06 00303000303030300000303030003030 ack ready 07 00000000000000000000000000000000 ack ready 08 00000000001422300C00000000000000 ack ready 09 00000000000000000000000000000000 ack ready 0A 00000020000100000002010000020001 ack ready 0B 00000201000002000100000201000002 ack ready 0C 00010000020001000000010100000000 ack ready 0D 00000000000000000000000000000000 ack ready 0E 00000000000000000000000000000000 ack ready 0F 000000000000000000000000000000A5 ack ready Power Cycling! device 0x01 is present 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 000000000000000000000000000000C4 3FFCC21FFC0000000000000000000000 00000000000000000000000000000000 00303000303030300000303030003030 00000000000000000000000000000000 00000000001422300C00000000000000 00000000000000000000000000000000 00000020000100000002010000020001 00000201000002000100000201000002 00010000020001000000010100000000 00000000000000000000000000000000 00000000000000000000000000000000 41140E2A251910101000B800000000A5 MENU: r = read, e = erase, w = write, p = ping ``` # 注意事項

-

本記事では、日本国著作権法第20条(同一性保持権)第2項第三号および第四号ならびに第32条(引用)第1項で認められている範囲内で、Dialog Semiconductor社公開しているArduinoスケッチを改変し、その方法を記載したつもりです。もしも同法の解釈に考え違いがあったと判明した場合、プログラムの改変部分もしくは他の部分を含め記事を修正する場合があります。 また、本記事はDialog Semiconductor社およびプログラムの権利者(以下、dialog社等)の所有する権利を侵害することを意図したものではありません。また、なんらdialog社等が関与するものではありません。本記事に関してdialog社等への問い合わせはお控えください。

+

本記事では、日本国著作権法で認められている範囲内で、Dialog Semiconductor社公開しているArduinoスケッチを改変して実験を行い、その方法を記載したつもりです。もしも同法の解釈に考え違いがあったと判明した場合もしくそれに関わらず、プログラムの改変部分もしくは他の部分を含め記事を修正する場合があります。 なお、本記事はDialog Semiconductor社およびプログラムの権利者(以下、Dialog社等)の所有する権利を侵害することを意図したものではありません。また、なんらDialog社等が関与するものではありません。本記事に関してDialog社等への問い合わせはお控えください。

# 免責事項 本記事の正確性については努力しておりますが、当方は利用者が当記事の情報を用いて行う一切の行為について何ら責任を負うものではありません。本記事の情報の利用、内容によって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ご自身の責任においてご利用いただきますようお願いいたします。 # 商標について 本記事に掲載されている商品またはサービスなどの名称は、各社の商標または登録商標です。 # Author

-

[GitHub/AoiSaya](https://github.com/AoiSaya) [Twitter ID @La_zlo](https://twitter.com/La_zlo)