MAX10 & Arduino SPI通信 (3)通信テスト

前回の続きです。

なんとかArduinoとFPGAを組み合わせたSPI通信が出来るようになりました。

動作内容


レジスタは前回と変わらずですが一応載せておきます。

  • レジスタアドレス一覧

0x00:LED_Rレジスタ 0~7bit (輝度:0~255)
0x01:LED_Gレジスタ 0~7bit (輝度:0~255)
0x02:LED_Bレジスタ 0~7bit (輝度:0~255)
0x08:ドットマトリクス制御 bit0 HIGH でON
0x10:ドットマトリクス1列目0~7bit

0x17:ドットマトリクス8列目0~7bit

3色LEDはそれぞれ0x00で消灯、0x01から最大輝度0xFFまでの設定。

ドットマトリクスの制御レジスタがON中でも各列の書き換えは可。
SPIの速度的に常にONでもいい気がしますが。

接続図については、基本的に過去に行ったArduino nanoのSPI通信のスレーブがMAX10になっただけなのと、MAX10側はユーザー自らがPIOを選択出来るためMAX10-FBと違うFPGAボードを使用した際にピンを間違えないようにと思い省略します。

プログラミングをする


と言ってもArduinoは前回のプログラムを追加、修正したものですけれど。

一個一個アドレスとデータを打ち込むのが面倒なのでいくつかパターンを用意しました。

以下、コマンド

“0001”:3色LEDをRed=>Green=>Blueの順で点灯させる。
“0002”:3色LEDをRed=>Green=>Blueの順で徐々に明るさを上げ/下げする。
“0003”:ドットマトリクスを網状に5秒間点灯させる。
“0004”:ドットマトリクスを網状に点灯させ一定間隔で反転させる。

簡単なものですが0002と0004は連続で書き込むので、書き換え失敗が色違いやドット抜けなどで簡単に分かるのでSPIの試験としてはいいと思います。

プログラムは別記事にArduinoとFPGAのものを用意しました。
FPGA側は色々設定する項目が沢山ありますがプログラムソースのみとしています。

動作確認


Arduinoの起動時のシリアルモニタはこんな感じです。

2018-02-07

で、コマンド実行は動画にして撮ってみました。

MAX10からの配線が多いですが、メインの制御がArduinoだとすれば使用ピン数がSPIの4本のみですからかなり削減できますね。

余裕がありましたら、SPIモジュールの書き込みを1アドレスのみでなく続けて複数のアドレスを書き換えられるようにしたいところです。そうすれば速度の向上が出来そうです。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中