3.ESP-WROOM-02 ( ESP8266 )のSDカードライブラリのSPIプロトコル解析準備
では、Arduino IDE の ESP8266ボードのSDカードライブラリの挙動を見るための準備をします。
3-1: 準備するもの
●ESPr Developer スイッチサイエンス製 ( ESP-WROOM-02 開発ボード)
●SparkFun マイクロSDカードスロット・ピッチ変換基板
SparkFun マイクロSDカードスロット・ピッチ変換基板
●micro SD カード
何でもよいのですが、当方で動作確認できたmicro SD カードは以下のものです。
●両端ロングピンヘッダ
秋月電子通商さんで売っています。
http://akizukidenshi.com/catalog/g/gC-09056/
これは後で述べますが、プローブの代わりにブレッドボードへ挿すために、メス側のQIコネクタをオスに変換するために使います。
●ブレッドボード
皆さんご存知かと思いますが、お勧めのブレッドボードがあります。
サンハヤト製ニューブレッドボード 【SAD-101】
これは下図の様にESPr Developer をセットしても両端に2列分の空きができるんです。
写真では手前側だけに見えますが、反対側も2列空いています。
ロジアナ測定やオシロ測定ではこれは有り難いですね。
●その他、ジャンパーワイヤー、USBケーブル等
3-2: ロジックアナライザ LAP-C を接続する
まず、本体側に付属の8対のカラーQIコネクタコードと黒の2対のQIコネクタコードを下図の様に差し込みます。
この色の順番はお馴染みの抵抗器のカラーコード順ですね。
次に、反対側のQIコネクタはメスなので、ブレッドボード上に挿すにはオスに変換してやります。
上記でも述べましたが、両端ロングピンヘッダ が便利です。
両方が長めの特殊なピンヘッダで、こんなものです。
これを1つずつニッパで切ってもいいですし、まとめて使ってもいいと思います。
こんな感じに先端に付けるとオス端子になります。
そうしたら、まず、ESPr Developer と SparkFun のmicro SD カードスロットを下図のように接続します。
ロジアナのA1番コードが赤なので、今回は電源VCC を黒色にします。
次に、ロジックアナライザー LAP-C のプローブコードと色を合わせて接続し、余ったコードは他のGPIOにも参考程度に接続します。
・茶 SCK
・赤 CS
・オレンジ DO
・黄色 DI
・緑 GPIO #16
・青 GPIO #4
・紫 GPIO #5
・灰色 GPIO #2
写真ではこんな感じです。
3-3: Arduino IDE の設定とESP8266ボードのインストール
Arduino IDE と ESP8266ボードは予め設定しておいてください。
その方法は以下の記事を参考にしてください。
Arduino IDE に Staging(Stable)版ESP8266 ボードをインストールする方法
3-4: SDカード読み書きサンプルスケッチを入力、コンパイル、書き込み
ESP8266専用のSDカードライブラリを使ったサンプルスケッチがありますので、それをちょっと改良したものが以下のスケッチです。
まず、これをIDEに入力してみてください。
【ソースコード】 (※無保証 ※PCの場合、ダブルクリックすればコード全体を選択できます)
#include <SPI.h> #include <SD.h> char testFile[10] = "/test.txt"; File myFile; void setup() { Serial.begin(115200); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } Serial.print("Initializing SD card..."); if (!SD.begin(15)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); if(SD.remove(testFile)){ //※remove関数の引数はポインタにするとエラーになるので、必ず固定長配列宣言すること。 Serial.println("Removed test.txt"); }else{ Serial.println("Not removed test.txt"); } myFile = SD.open(testFile, FILE_WRITE); if (myFile) { Serial.print("Writing to test.txt..."); // delay(5000); myFile.println("testing 1, 2, 3."); myFile.close(); Serial.println("done."); } else { Serial.println("error opening test.txt"); } myFile = SD.open(testFile); if (myFile) { Serial.println("test.txt: read wait----------"); delay(5000); while (myFile.available()) { Serial.write(myFile.read()); } myFile.close(); } else { Serial.println("error opening test.txt"); } } void loop() { // nothing happens after setup }
これの43行目の”test.txt: read wait———-” という文字がシリアルモニタで出現したら5秒間プログラムがストップするので、そこでロジックアナライザ LAP-C を手動で走らせてトリガーを待つようにするというプログラムです。
とりあえず、micro SD カードを読み込んで、DO端子(MISO) から出力される信号を解析してみます。
4.LAP-C Standard アプリケーションの SPI プロトコル設定
では、先ほどインストールしたZEROPLUS LAP-C Standardアプリの設定をしてみます。
なお、ここで紹介するのは SPI インターフェースプロトコルの場合です。
まず、本体とWindows 10 パソコンとを初めて接続するとドライバーの認識に少々時間がかかります。
認識し終わったら、LAP-C_Standard アプリを起動します。
下図のようにA0~A7までをShiftキーを押しながら複数選択して、下図の様なところを右クリックして、「信号線をバスにまとめる」をクリック
Bus にまとめると下図の様になりますので、Bus の横の空白を右クリックして、その中の「バス特性」をクリックします。
バス特性ウィンドウが出たら、下図の様にプロトコルアナライザを選択して、
ZEROPLUS LA SPI MODULE を選択します。
選択終ったら確定をクリックします。
(このプロトコルの中には MIDI や S/PDIF やDMX , AES/EBU , HDMI まで解析できるみたいです。こりゃ、スゴイですねぇ・・・。いつか使ってみたいです。)
そうすると、下図の様にBus 1 の中に
A0 —> SCLK
A1 —> SS ( CS )
A2 —> DATA
と自動的に設定されます。
後で変更できますが、今回はこのまま使います。
DATA は今回はSPI のMISO ( Master In Slave Out )に接続します。
SDカード側はDO ( Data Out )端子ですね。
それを確認したら、下図の様に空白のところを再び右クリックします。
するとバス特性ウィンドウが開きますので、「パラメータ構成」をクリックします。
すると下図のようなウィンドウになるので、Data Format タブを選択して、Activate をチェックし、ASCII を選択します。
こうすることによって、アナライザでテキスト文字を送受信したかどうかがチェックできます。
これは便利ですね。
次に下図の様にサンプリング設定をします。
するとサンプリング設定ウィンドウが開きますので、内部クロックは最速の100MHzにして、RAMサイズは16k にします。
圧縮モードでデータ圧縮にチェックを入れることによって、長めのデータを記録することができて便利です。記録が32k でもこのデータ圧縮を入れると、かなり長時間のログが取れる、とっても優れものの機能です。これを初めて使ったときはこの値段でスゴイと思いましたので、お勧めの機能です。
終ったら確定をクリックします。
次に大切な設定として、下図の様にSS信号のところのトリガ形式を設定します。
SS ( CS )ピン(チップセレクト)信号はSPIの場合はHighレベルからLowレベルに変化した時にそのチップが有効になりますので、これを利用してトリガをかけて測定開始にします。
また、トリガ位置は10%にしておくと見やすいと思います。
LAP-C_Standard アプリのSPIプロトコル解析設定はとりあえず以上です。
では、次に実際に解析をしてみましょう。
コメント