PIC32MX270F256B-50I/SP (HARMONY)

  PIC32MX270F256B-50I/SPでは、最大システムクロックが50MHzです。なお、PICにファームウェアを書き込んでいる間、UART出力から、おかしなシグナルが出てきます。いまのところPIC自身の問題で、12、14、18番ピンが異常と考えています。PICにファームウェアを書き込んでいる間、12番ピンは約1V、14番ピンは約3V、18番ピンは0-3Vのパルス列が出ています。ピンをアナログ、デジタルIN、デジタルOUTに変えても異常状態は同じです。Silicon Revision A2でも修正されていません。これらのピンの使用は慎重に。PICにファームウェアを書き込んでしまった後は、正常に稼働します。


PIC32MX270F256B-50I/SPを用いたテスト回路

  回路図と実際の回路を以下に示します。回路は、ユニバーサル基板(Takasu IC-701-72)上で組んでいます。コンデンサーは、すべてチップ型のもので、基板裏面に半田づけしています。また,水晶発振子(Xtal)には20MHzのものを用いています。PIC内部では50MHzがシステムクロックとなるよう設定しています。

裏面拡大図(コンデンサー配置) <=ここをクリック


回路動作確認

  PIC用のファームウェアをコンパイルするために MPLAB X IDE v4.20をインストールした後、MPLAB XC32/32++ Compiler v2.10をインストールしておきます。 さらに、MPLAB Harmony Integrated Software Framework v2.06をインストールし、そのあと、MPLAB Harmony Confugulator(MHC)をプラグインとして、MPLAB X IDEに組み込みます。組み込み方法は、MPLAB Harmonyをインストールした時に、最後に表示されます。Webを検索をすれば、日本語での解説もありますので、そちらを参考にしてください。

まず、作成した回路がきちんと働いているかどうかを確かめます。ファームウェアMX270_wait.zipをPICに書き込み、実行します。

1.ピンヘッダJP1にはファームウェア書き込み器(たとえばICD3)を接続します。また、3.3Vの電源も接続します。

2.MX270_wait.zipを解凍して出てくるMX270_waitフォルダーをmicrochip\harmony\2_06\appsフォルダーの中に入れます。

3.MPLAB X を立ち上げ、MX270_waitフォルダーの中にあるプロジェクトを読み込みます(MPLAB XのメニューからFile->Open Project...を選択)。

4.Projectsウィンドウにおいて、MX270_waitと書かれた箇所をマウスで右クリックして、サブメニューを出します。そのサブメニューのSet as Main Projectという項目がありますので、それを選択します。MX270_waitが太文字になったことを確認します。

5.Projectsウィンドウにおいて、MX270_waitと書かれた箇所をマウスで右クリックして、サブメニューを出します。そのサブメニューの一番下にPropertiesという項目がありますので、それを選択します。Project Propertiesウィンドウが現れるので、Hardware Toolとして、お使いの書き込み器(プログラマー)を指定します。私はIDC3を使用しています。OKボタンを押します。

6.ファームウェアを走らせるために、MPLAB X のツールバーからRun Main Projectアイコン()をマウスでクリックします。ビルド(コンパイルとリンク)を行ったのち、ファームウェアをPICに書き込み、実行するまで自動で行ってくれます。 ファームウェアを走らせると、約1秒周期のパルス( 3.3V, 0V, 3.3V, ...) がPICの14番ピン(RB5ピン)から出力されますので、テスターで、このピンの電圧を測定してください。もし、パルスが出ていなければ回路に問題がありますので、回路を再チェックしてください。 app.cのAPP_Tasks(void)関数の中身をみれば、何をしているのかが簡単に分かると思います。

なお、水晶発振子に20MHzとは異なるものを使用するときには、まず、MPLAB XのメニューからTools->Embedded->MPLAB X Harmony Configurator(プラグインとして組み込まれたものです)を選択します。Open Configurationウィンドウが現れるので、OKボタンを押すと、現在設定されているConfiguratorが表示されます。MPLAB X Harmony Clock Configuratorタブを開いてクロック設定を適当に行います。設定が終わったら、MPLAB X Harmony Configuratorタブを開いて、Generate Codeボタンを押します。設定内容を保存するかどうか聞いてきますので、Saveボタンを押して、現在の設定を保存します。File Generationウィンドウが現れるので、Generateボタン()を押します。Harmony Configuratorは良く使いますので、遊び感覚で、いろいろと設定を変えてみると良いと思います。



MHC環境

まず、
フォルダーmicrochip\harmony\2_06\bsp\config
ファイルmicrochip\harmony\2_06\framework\system\clk\config
ファイルmicrochip\harmony\2_06\utilities\mhc\config\PIC32MX270F256B.hconfig
のバックアップを取っておきます。

  次にconfig206.zipを解凍すると、config206フォルダーの中に、bspフォルダーとframeworkフォルダーとutilitiesフォルダーが出てきますので、これら3つのフォルダーをmicrochip\harmony\2_06フォルダーの中に上書きします。これで、PIC32MX270F256B-50I/SPを用いたテスト回路用のMHC環境が整います。

  ところで、bspは「board support packages」の略です。Microchip社で販売しているPICボードにおいて、3つの発光ダイオードと3個のスイッチをPICのどのピンに割り当てているかを、microchip\harmony\2_06\bspフォルダーの中で決めています。今回は、以下のピン配置としました。なお、SWITCH_1、SWITCH_2、SWITCH_3ともに弱くプルアップするよう、設定しています。

PIC32MX270F256B-50I/SPを用いたテスト回路用のbsp環境の使い方の1例を説明します。PIC32MX270F256Bを用いる設定で、新しいプロジェクトを作ります。すると、Harmony Configuratorが立ち上がるので、BSP Configurationを展開して、Use BSP?チェックボックッスをチェックします。すると、Select BSP To Use For PIC32MX270F064B Device という名のドロップダウン・ボックスが現れます。そこで、以下の図のように、USB BSP?にチェックを入れます。

ここで、Harmony Pin Diagramタブを選択してピン配置を確認すると良いと思います。 ところで、以下のファームウェアでは、このようなピン配置をすでに選択していますので、これも確認すると良いと思います。


Harmony Configuratorでは、カスタムボード(自分で開発した基板)を登録することができます。まずは下図を見てください。

このダイアログは、新しいファームウェアを作成する際に、2番目に出てくるものです。このダイアログの中のTarget Boardのコンボ・ボックスを開くと、1 YTS PIC32MX Boardと出てきます。これを選択すると、自動的に使用するPICが以下の図のようにPIC32MX270F256Bと指定されます。テスト回路に最小限必要な設定も自動的に行ってくれますので大変便利です。config206.zipを解凍して出てくる、config206\utilities\mhc\config\targetboards\yts_pic32mx .xmlの中身を適当なテキストエディッタで見ると参考になると思います。



HIDマウス

  マウスを模倣(emulation)します。具体的にはマウスカーソルがディスプレイ上で円を描きます。 PICに書き込むファームウェアはmouse.zipです。mouse.zipを解凍して出てくるmouseフォルダーをmicrochip\harmony\2_06\appsフォルダーの中に入れます。このファームウェアは、microchip\harmony\2_06\apps\usb\device\hid_mouseを参考にして、Harmony Configulator で最初から作成したものです。

1.ファームウェアをPICに書き込み、実行します。

2.PIC基板とPCをUSBケーブルで接続すると、パーソナル・コンピュータのディスプレイ上で、マウスカーソルが円を描きます。

3.SWITCH_1(26番ピン)をGNDに落とすたびに、マウスが動いたり、止まったりします。


HIDキーボード

  キーボードを模倣(emulation)します。PICに書き込むファームウェアはkeyboard.zipです。keyboard.zipを解凍して出てくるkeyboardフォルダーをmicrochip\harmony\2_06\appsフォルダーの中に入れます。このファームウェアは、microchip\harmony\2_06\apps\usb\device\hid_keyboardを参考にして、Harmony Configulator で最初から作成したものです。

1.ファームウェアをPICに書き込みます。

2.適当なエディッターソフトウェア(秀丸、ノートブック、ワードなど)を起動させます。

3.PIC基板とPCをUSBケーブルで接続します。

4.SWITCH_1(26番ピン)をGNDに落とすたびに、b、c・・・・・とタイプされて行きます。

5.このファームウェアでは、キーボードについている3つのLED(Num Lock、Caps Lock、Scroll Lock)のうち、前者2つに対応しています。パーソナル・コンピュータに接続されているキーボードで、Caps Lockの設定・解除で、PIC基板のLED_1ピン(2番ピン)がHになったり、Lになったりします。また、Num Lockの設定・解除で、PIC基板のLED_2ピン(3番ピン)がHになったり、Lになったりします。


一般的HID

  一般的(Generic)HIDでPICとパーソナル・コンピュータの間でデータを交換します。PICに書き込むファームウェアはhid_basic.zipです。hid_basic.zipを解凍して出てくるhid_basicフォルダーをmicrochip\harmony\2_06\appsフォルダーの中に入れます。このファームウェアは、microchip\harmony\2_06\apps\usb\device\hid_basicを参考にして、Harmony  Configulator で最初から作成したものです。特に、app.cの中のAPP_Tasks(void)関数の中のcase APP_STATE_MAIN_TASK:文の中身を変えています。

1.ファームウェアをPICに書き込みます。

2.PIC基板とPCをUSBケーブルで接続します。

3. パーソナル・コンピュータ用のアプリケーション・ソフトウェア(Visual Studio 2017)は、hid_basic\utilities2017フォルダーの中に入っています。VCフォルダーは[Visual C++用]で、CLRフォルダーは[Visual C++/CLI用]で、CSフォルダーは[C#用]です。hid_basic\utilities2017フォルダーの中にある実行ファイル(VC.exeかCLR.exeかCS.exe)を実行すると、2つのエディットボックスと送信ボタンを持つダイアログ(対話)・ウィンドウが現れます。 例えば上のボックスに123と入れて、送信ボタンをクリックすると、下のボックスに223と現れれば、正常に動作しています。送信された文字列のうち、第1番目の文字だけが変わったもの(アスキーコードで1足されたもの)が、下のボックスに現れるはずです。


USB(CDC)

  PIC基板をCDC(Communication Device Class)機器として、パーソナル・コンピュータと接続し、PIC基板とPCの間でデータのやり取りを行います。PCからCDC機器としたPIC基板を見ると、PCはPIC基板をまるでRS232C機器であると認識します。したがって、PC上でRS232C機器と通信を行うための”Tera Term”なるアプリケーション・ソフトウェア(ウェブで検索ください。フリーソフトです。)を利用するだけで、PCからPIC基板を制御できるようになります。このファームウェアは、microchip\harmony\2_06\apps\usb\device\cdc_com_port_singleを参考にして、Harmony  Configulator で最初から作成したものです。

1.PICに書き込むファームウェアはcdc_com.zipです。cdc_com.zipを解凍して出てくるcdc_comフォルダーをmicrochip\harmony\2_06\appsフォルダーの中に入れます。

2.cdc_comフォルダー中のcdc_installerフォルダーのなかに、CDCのインストーラ「USBDriverInstaller.exe」がありますので、これを実行してCDC用のデバイストライバーをインストールします。

3.ファームウェアをPICに書き込み、実行します(PIC基板がCDC機器になります)。

4.PIC基板とPCをUSBケーブルで接続します。

5.PC上でTera Termを起動して、メニューから”設定->シリアルポート”を選択すると、シリアルポート設定画面が以下の様に現れるので、ボーレートを57600 bps、データビットを8ビット、 パリティはなし, ストップビットを1、フロー・コントロールはなし、と設定してください。 設定が終わったら、シリアルポート設定画面を閉じ、メニューから”設定->設定の保存”を選択して、シリアルポート設定内容をファイルに保存しておくと、次回の接続時には、自動的に保存した設定内容が反映されます。

5.キーボードから適当なキーを押下すると、押したキーに対するアスキーコードに1を足したものが、Tera Termの画面に現れるはずです。たとえば、”a”なるキーを押下すると、”b”がTera Termの画面に現れるはずです。

6.また、SWITCH_1(26番ピン)をGNDに落とすたびに、「PUSH BUTTON PRESSED」とタイプされます。

なお、PIC基板をPCの別のUSBコネクタに接続するとCOM番号が変わってしまいます。これを避けるためには、PICのファームウェアの中でシリアル番号をつける必要があります。シリアル番号の付け方は、CDC_serialnumber.txtを参照してください。

ところで、PICのファームウェアで、受信したデータのバイト数は、app.cファイルの中のAPP_USBDeviceCDCEventHandler関数の中のケース文case USB_DEVICE_CDC_EVENT_READ_COMPLETE:の中にあるeventDataRead->lengthが所有しています。


HID+HID(2インターフェース複合HIDデバイス)

1.PICに書き込むファームウェアはMX270_HID_HID.zipです。MX270_HID_HID.zipを解凍して出てくるMX270_HID_HIDフォルダーをmicrochip\harmony\2_06\appsフォルダーの中に入れます。

2.ファームウェアをPICに書き込みます。

4.PIC基板とPCをUSBケーブルで接続します。

5.パーソナル・コンピュータ用のアプリケーション・ソフトウェアはapps\MX270_HID_HID\utilitiesフォルダーの中にあります。VCフォルダーは[Visual C++用]で、CLRフォルダーは[Visual C++/CLI用]で、CSフォルダーは[C#用]です。apps\MX270_HID_HID\utilitiesフォルダーの中にある実行ファイル(VC.exeかCLR.exeかCS.exe)を実行すると、2つのエディット・ボックスと2つのボタンを持ったダイアログ・ウィンドウが現れます。上のエディット・ボックスに適当な文字列を入れて、ボタンのどちらかを押すと、下のエディット・ボックスに文字列が現れます。入力した文字列の最初の文字だけが変化します。たとえば、上のエディット・ボックスに“123” と入れて、"INT1"ボタンを押すと、下のエディット・ボックスに“223”が現れます。入力した文字列の最初の文字にアスキーコードで1を足したものが、‘2’ = ‘1’ +1となって、下のエディット・ボックスに現れる文字列の最初の文字となります。文字列の他の部分はそのままPICを経由してPCへと返ってきます。もし、"INT2"ボタンを押すと、下のエディット・ボックスに“323”が現れます。入力した文字列の最初の文字にアスキーコードで2を足したものが、‘3’ = ‘1’ +2となって、下のエディット・ボックスに現れる文字列の最初の文字となります。

なお、もしも、一般的HIDやHID+マウス・プロジェクトを過去に使用していた時には、使用していたドライバーをUSBDeview(Webで検索してください)で、前もってアンインストールしておく必要があります(同じPIDとVIDを使用しているため)。


HID+マウス(2インターフェース複合HIDデバイス)

  1つのPICの中に、互いに独立なHID1つとHIDマウス1つを実現し、パーソナル・コンピュータとの間でデータを交換します。

1.PICに書き込むファームウェアはMX270_HID_MOUSE.zipです。MX270_HID_MOUSE.zipを解凍して出てくるMX270_HID_MOUSEフォルダーをmicrochip\harmony\2_06\appsフォルダーの中に入れます。

2.ファームウェアをPICに書き込みます。

4.PIC基板とPCをUSBケーブルで接続します。

5.パーソナル・コンピュータ用のアプリケーション・ソフトウェアはapps\MX270_HID_MOUSE.zip\utilitiesフォルダーの中にあります。VCフォルダーは[Visual C++用]で、CLRフォルダーは[Visual C++/CLI用]で、CSフォルダーは[C#用]です。apps\MX270_HID_MOUSE\utilitiesフォルダーの中にある実行ファイル(VC.exeかCLR.exeかCS.exe)を実行すると、2つのエディット・ボックスと2つのボタンを持ったダイアログ・ウィンドウが現れます。上のエディット・ボックスに“123” と入れて、"INT1"ボタンを押すと(INT2ボタンは意味がありません)、下のエディット・ボックスに“223”が現れます。入力した文字列の最初の文字にアスキーコードで1を足したものが、‘2’ = ‘1’ +1となって、下のエディット・ボックスに現れる文字列の最初の文字となります。 また、上のエディット・ボックスに'y'から始まる文字列を入れ、"INT1"ボタンを押すとマウスカーソルが右に50だけ移動します。

なお、もしも、一般的HIDやHID+HIDプロジェクトを過去に使用していた時には、使用していたドライバーをUSBDeview(Webで検索してください)で、前もってアンインストールしておく必要があります(同じPIDとVIDを使用しているため)。


USBオーディオスピーカー

  MPLAB Harmony Integrated Software Framework v2.06には、「\microchip\harmony\v2_06\apps\audio\usb_speaker」というUSBオーディオスピーカーを模擬するサンプル・ファームウェアがあります。ただ、このファームウェアは、USBケーブルを通して送られてくるパルス符号変調(PCM:Pluse Code Modulation)信号をDAC(デジタルアナログコンバーター)を通してアナログ音信号に変換して出力しています。

  ここでは、USBオーディオスピーカーをもっと手軽に試すために、PCM信号をパルス幅変調(PWM:pulse width modulation)して、これをローパスフィルターを通してアナログ音信号に変換して出力しました。DACは不要になります。ファームウェアはaudio_speakerMX32.zipです。

回路

  パルス幅変調(PWM:pulse width modulation)された音楽信号はPICの6番ピン(右信号)と11番ピン(左信号)から出力されるので、復調のため、これらのピンにローパスフィルターを下図のように接続します。カットオフ周波数は約1600Hzとなります。ローパスフィルターのコンデンサーの両端から音楽信号をとりだし、ヘッドホーン(アンプが必要になるかも知れません)やスピーカー付きのアンプに接続します。常識でしょうが、コンデンサーのアース端はヘッドホーンのアースに接続することに気をつけてください。

使用方法

1.audio_speakerMX32.zipを解凍して出てくるaudio_speakerMX32フォルダーを\microchip\harmony\v2_06\appsフォルダーの中にいれます。

2.XC32でコンパイルして、PICにファームウェアを書き込みます。

3.PIC回路をパーソナル・コンピューターとUSBケーブルで接続します。

4.パーソナル・コンピューター上で、たとえばWindows Media Playerで音楽を再生すれば、ヘッドホーンやアンプのスピーカーから音楽が流れます。高音はひずみますが、USBオーディオスピーカーが模擬できているということを確かめるには十分です。


戻る