回路図
基板図
ダンピング抵抗はピンソケットを使って差し替えられるようにした。シールドを載せるとNucleoボード上のリセットボタンが押せなくなるので、シールド上にリセットボタンを付けた。
Master側からSlaveにリセットをかけられるようにResetボタンとは別にSlaveのReset端子につなぐGPIOを1本割り当てた。
配線図
UI Controller(SPI Master)Sequencer(SPI Slave)
SPI信号波形
ダンピング抵抗はすべて33Ωにして測定
MISO
ch1:MISO(ダンピング抵抗のSlave側) ch2:sck
ch1:MISO(ダンピング抵抗のMaster側) ch2:sck
MOSI
ch1:MOSI(ダンピング抵抗のSlave側) ch2:sck
CS
ch1:CS(ダンピング抵抗のSlave側) ch2:sck
Slave->Master Interrupt
ch1:Interupt(ダンピング抵抗のSlave側)
ch1:Interupt(ダンピング抵抗のMaster側)
メモ:
Masterの出力の近くにダンピング抵抗を入れてSCK、MOSI、CSは波形がきれいになったようだ。(参考「ベースマシン UI ControllerとSequencerのSPIの信号線にダンピング抵抗を入れてみる。のSPI信号の波形」
MISOとInterruptはSlaveからの出力なのでMasterの近くに抵抗を入れてもやはりあまり効果がない。Sequencer(Slave)の近くに抵抗を入れるのは少々難しそうなので、波形なまるのを覚悟のうえでもっと抵抗値をあげてみる?ケーブルを加工してダンピング抵抗を入れてみる?
まだときどきSlave->Masterの通信がうまくいかない。オシロスコープのプローブをあてておくと動作することが多い。ノイズや振動の影響で読み取りをミスってるのかなあ??プローブ内のCR類がたまたま、うまい具合に波形を整形してくれているのか。
ToDo:
UI Controller <-> Sequencer間のSPI通信の信頼性をあげる。
Sequencer→DCO、DCF、DCAのSPI信号を補強する(こちらも動作があやしい感じのときがある)。現状でもSlaveが3つあるので(CSがインアクティブの時はSlave側はHiZになってると思うが)余裕をもってドライブできるようにバッファICを入れてみる。
Sequencerのファームウェアを点検して休符時にブツブツ言うのを修正する。Durationが短いときにブツブツ言うようだ。←めんどくさい(TqT;
4x4キーパッドを使ってシーケンスの切り替えができるようにする。
やりたいことはいろいろあるが、安定して使えないと楽器として使えないので安定度を上げるのが最優先だ。
0 件のコメント:
コメントを投稿