概要
これまでAtmel Studio / Microchip Studioでプロジェクトを作ってきたが、今後はMPLAB X IDE(以下MPLAB)が主流になるらしい。ということでMPLABでプロジェクトを作ってみた。
USB CDC サンプルアプリケーション
MPLABを開いてみた。初めてなのでOpen Sampleを実行してみよう。ちなみにUsers Guideは ここ にあった。

検索窓で SAM D21 USB CDC と入力するとそれらしいのが出てきた。”USB Device CDC COM Port Single Example (cdc_com_port_single) Example for SAM D21/DA1 Family” を選択。

すると結局MPLAB® DISCOVER というサイトに飛んで、そこからgithubのリポジトリ Microchip-MPLAB-Harmony/usb_apps_device: Harmony 3 USB Device application examples に来た。これをcloneしろということのようだ。
git clone https://github.com/Microchip-MPLAB-Harmony/usb_apps_device.git
MPLABの[File]-[Open Project]で usb_apps_device\apps\cdc_com_port_single\firmware\sam_d21_xpro.X を開く。

[Production]-[Build Project]を実行。

XC32がないと怒られたのでインストール。ダウンロードサイト からMPLAB XC32 Compilerをダウンロードしインストール。

BUILD
インストール完了後MPLABを再起動するとBuildができるようになった。
のボタンでもビルドできた。
PROGRAM
XPROボードのDEBUG USBポートとPCをUSBケーブルで接続して
をクリックすると、書き込むことができる。初回はTool選択が必要だったのでXPROのポートを選択した。

RUN
USBケーブルをTARGET USBポートに差し替えてTeraTermでCOMポートを開いてみた。COM4になっていた。


abcdefgと入力するとbcdefghと返ってきた。とりあえず動作しているようだ。また、SW0を押すとメッセージが表示された。

Hello, world!
さてソースコードを見てみる。cdc_com_port_single_sam_d21_xpro\Source Files\app.c の中のAPP_Tasks(void)のswitchの中。case APP_STATE_SCHEDULE_WRITEの中。下記のソースコードが文字列を出力している部分だ。
if(appData.isSwitchPressed)
{
/* If the switch was pressed, then send the switch prompt*/
appData.isSwitchPressed = false;
USB_DEVICE_CDC_Write(USB_DEVICE_CDC_INDEX_0,
&appData.writeTransferHandle, switchPromptUSB,
sizeof(switchPromptUSB),
USB_DEVICE_CDC_TRANSFER_FLAGS_DATA_COMPLETE);
}
else
{
/* Else echo each received character by adding 1 */
for(i = 0; i < appData.numBytesRead; i++)
{
if((appData.cdcReadBuffer[i] != 0x0A)
&& (appData.cdcReadBuffer[i] != 0x0D))
{
appData.cdcWriteBuffer[i] = appData.cdcReadBuffer[i] + 1;
}
}
USB_DEVICE_CDC_Write(USB_DEVICE_CDC_INDEX_0,
&appData.writeTransferHandle,
appData.cdcWriteBuffer, appData.numBytesRead,
USB_DEVICE_CDC_TRANSFER_FLAGS_DATA_COMPLETE);
}
break;
ということは、65行目の中身をHello, world!にすればボタンを押してメッセージが流れるようにできるわけだ。
uint8_t CACHE_ALIGN switchPromptUSB[] = "\r\nHello, world!";
ソースを書き換えてビルドしてDEBUG USBに接続してプログラム。TARGET USBに戻してSW0をプッシュ。

Hello, worldが、できた。
まとめ
今回はサンプルをビルドするまでだったが、MPLABを使った開発のさわりの部分がわかった。あとはソースをいじってアプリケーションを作っていくだけだ。他のサンプルもひととおり眺めてみよう。


コメント