PIC32MX270F256B-50I/SPでBluetoothドングルを制御し、OSがWindows10(64ビット Professonal Ver.22H2)のパーソナル・コンピュータとHIDプロファイルBR/EDR接続しました。
PIC32MX270F256B-50I/SPは、28ピンで、大きなメモリー容量(プログラムメモリーが256KBでデータメモリーが64KB)を持っているので、メモリーを必要とするHARMONY環境でも使用できます。ただ、PICにファームウェアを書き込んでいる間だけ、UART出力から、おかしなシグナルが出てきます。いまのところPIC自身の問題で、12、14、18番ピンが異常と考えています。PICにファームウェアを書き込んでいる間、12番ピンは約1V、14番ピンは約3V、18番ピンは0-3Vのパルス列が出ています。ピンをアナログ、デジタルIN、デジタルOUTに変えても異常状態は同じです。これらのピンの使用は慎重に。Silicon Revision A2でも修正されていません。PICにファームウェアを書き込んでしまった後は、正常に稼働します。
目次
回路図と実際の回路を以下に示します。以下、この回路を「PIC回路」と呼ぶことにします。
回路図に中のピンヘッドJP2には、必要に応じて、「USB シリアル変換器」を接続します。デバック情報などをTera Termでモニターするために使用します。ファームウェアのデバックをしない場合には、このアダプタを作成する必要はありません。念のため、回路を以下に示します。
「USB シリアル変換器」の左側に、4ピンのピンヘッドがありますが、上から1,2,3,4番ピンと呼ぶことにします。「PIC回路」のピンヘッドJP2も1番ピンから4番ピンまであります。両ピンヘッドの1,2,4番ピンどうしを、それぞれ接続します。3番ピンはどこにも配線されていませんので、接続する必要はありません。
また、「USB シリアル変換器」の右側にUSBジャックがありますが、USBケーブルでPCと接続します。そして、PC側でTera Termを起動すると、その画面上にデバック情報を表示できるようになります。ボーレートは115200、データは8ビット、パリティなし、ストップビット1、フロー制御はなしです。
1.MPLAB Code Configurator(Harmony)の導入の節に従ってtestなるプロジェクトを作成します(以前に作成してあれば作成する必要はありません)。作成し終わったらプロジェクト削除してもかまいません。というのは、当面必要となるHarmony Frameworkパッケージがダウンロードできたからです。
2.MHC環境を整えます。Harmony Frameworkのパッケージを保存しておくためのフォルダーの場所を確認しておきます。私の場合はC:\Users\yts\Harmony3です。このフォルダーHarmony3の中にあるbsp、usbの2つのフォルダーをバックアップを取っておきます。
6.setup311.zipをダウンロードして解凍して得られるbsp、usbの2つのフォルダーをHarmony3フォルダーの中で上書きします。これで、MHC環境が整います。
注意:以下のファームウェアを使用する前に、必ずMHC環境を(1度だけ)整える必要があります。
ファームウェアは、Bluetooth1903.zip(Windows10用)です。解凍して出てきたフォルダーをHarmonyProjectsフォルダー(私の場合は、C:\Users\yts\HarmonyProjects)の中にいれます。デバック情報を出力する場合は、app.cの中にある//#define DEBUG_MODEのコメント//を消してください。
接続方法は、PIC24FJ64GB002 (Bluetooth LE)の章に書いてある通りです。最初の接続は、PIC回路にて、タクトスイッチ(SW1)を押しながら、電源を入れます。ドングルのLEDが青く光るまでタクトスイッチを押し続けます。 その後、パーソナル・コンピュータから接続します。接続が完了すると、LED(D1)が点灯します。時によって、接続に時間が掛かります。2回目以降の接続は、タクトスイッチ(SW1)を離したまま、PIC回路の電源を入れるだけです。
パーソナル・コンピュータ用のアプリケーション・ソフトウェア(Visual Studio 2017)は、これも以前と同じですが、utilities2017B.zipを解凍すると得られます。VCフォルダーは[Visual C++用]で、CLRフォルダーは[Visual C++/CLI用]で、CSフォルダーは[C#用]です。PIC回路をパーソナル・コンピュータと接続したあと、それぞれのフォルダーの中にある実行ファイル(VC.exeかCLR.exeかCS.exe)を実行します。すると、2つのエディット・ボックスと1個の送信ボタンを持つダイアログ(対話)・ウィンドウが現れます。 例えば上のエディット・ボックスに123と入れて、送信ボタンをクリックすると、下のエディット・ボックスに223と現れれば、正常に動作しています。送信された文字列のうち、第1番目の文字だけが変わったもの(アスキーコードで1足されたもの)が、現れるはずです。
なお、Bluetooth1903は、Harmony3\usb_apps_host\apps\cdc_basicを元に開発しました。
HarmonyのMHC環境を整える必要があります。Bluetoothドングルは、Host Genericで制御します。ところが、Harmonyには、まだHost Genericに関するMHC環境がありません。そこで、Host Generic用のMHC環境を作成しました(上記のsetup311.zip)。Harmonyでのアプリケーション開発は、MHC環境にとても強く依存しています。両者を切り離すことはできません。MHC環境が整っていなければ、たとえ、ファームウェアが開発できたとしても、それに新たな機能(入出力機能やADC機能等)を追加することは不可能です。
Host Generic用のMHC環境を使用するには、MPLAB Xを実行してMCCを起動します。MCCプラグイン・メインウィンドウが表示されたら、そのDevice Resourcesエリアにて、Libraries項目を下図のように展開すると、GEN Client Driverと書かれた項目が現れます。これをダブルクリックすると、同名のバーナーが、Project Graphウィンドウの中に表示されます。これで、Host Generic用のMHC環境が選択されます。
最後に、CDC Hostを理解するためには、まずusb_host_cdc.cを理解するとこから始めるとよいと思います。
戻る