前回の記事では、USBコネクタをつながないとBluetooth接続ができないという問題に気がつきましたが、実際に問題を調査してみるとあっさりと原因が判明しました。
Bluetooth接続ができないことは、WT32から接続メッセージが出力されてこないことからも確認できていたのですが、調べてみると受信割り込みがまったく発生していないことが判明。テスタで確認すると、そもそもWT32のVREGENA端子がアクティブになっていませんでした。VREGENAはWT32内部のレギュレータのイネーブル端子であり、これをアクティブにしないとWT32のデジタル部が動作しませんので、Bluetooth接続できなかったのも当然のことです。
VREGENAはSAM3SのPB5端子で制御していたのですが、原因はこの端子の初期化忘れでした。PB5は初期状態ではJTAGのTDO端子として動作しているため、PIOを操作したつもりでも実際には機能していなかったのです。PB4端子は、USBでホストと接続されたことを検出しようと思いUSBコネクタのVBUS検出に利用するつもりで配線してあります。同じようにこの端子も初期状態ではJTAGのTDI端子に割り当てられており、GPIO入力としては機能しません。USBでつないだ状態ではTDIがHとなりますが、それに影響されてTDOがHとなった結果VREGENAがアクティブになっていたようです。
SDWを使うことで必要の無くなったTDI/TDOをPIOとして使ったつもりだったのですが、その設定がちゃんとできていなかったわけです。この設定変更を追加して、ようやくとUSBケーブル無しでBluetoothも動作するようになりました。
ダイアル・ボタンのドライバも作成したので、ダイアルを廻すことで音量調節できますし、方向キーを左右に押すことで曲送りや、戻しもできます。かなり自分が妄想していたイメージに近づいてきた感じです。
Bluetooth接続ができないことは、WT32から接続メッセージが出力されてこないことからも確認できていたのですが、調べてみると受信割り込みがまったく発生していないことが判明。テスタで確認すると、そもそもWT32のVREGENA端子がアクティブになっていませんでした。VREGENAはWT32内部のレギュレータのイネーブル端子であり、これをアクティブにしないとWT32のデジタル部が動作しませんので、Bluetooth接続できなかったのも当然のことです。
VREGENAはSAM3SのPB5端子で制御していたのですが、原因はこの端子の初期化忘れでした。PB5は初期状態ではJTAGのTDO端子として動作しているため、PIOを操作したつもりでも実際には機能していなかったのです。PB4端子は、USBでホストと接続されたことを検出しようと思いUSBコネクタのVBUS検出に利用するつもりで配線してあります。同じようにこの端子も初期状態ではJTAGのTDI端子に割り当てられており、GPIO入力としては機能しません。USBでつないだ状態ではTDIがHとなりますが、それに影響されてTDOがHとなった結果VREGENAがアクティブになっていたようです。
SDWを使うことで必要の無くなったTDI/TDOをPIOとして使ったつもりだったのですが、その設定がちゃんとできていなかったわけです。この設定変更を追加して、ようやくとUSBケーブル無しでBluetoothも動作するようになりました。
ダイアル・ボタンのドライバも作成したので、ダイアルを廻すことで音量調節できますし、方向キーを左右に押すことで曲送りや、戻しもできます。かなり自分が妄想していたイメージに近づいてきた感じです。