LPC11U35 QSB USB CDC(VCom)

USBを使ってシリアルポート通信を行います。
DSC00623

サンプルプログラムは以下サイトからダウンロードできます。
http://www.lpcware.com/content/nxpfile/sample-code-bundle-lpc11uxx-peripherals-using-lpcxpresso
USB_ROM_CDCのサンプルソフトは、QSBのサンプルと同じです。他のサンプルも試したいのでダウンロードしておきます。WindowsのCDCドライバはQSBのサンプルについているものを使用しました。上記URLからダウンロードした中には、Windwosのドライバは入っていません。IDEは、LPCXpresso v6.1.0_164を使用しました。新しくWorkspaceを作成し、ダウンロードしたLPC11Uxx LPCXpresso Examples.zipをインポートします。USB_ROM_CDCを改造します。まず、MPU SettingsをLPC11U35/401に設定します。また、USB ISPで書き込むのでbinファイルを生成する設定にします。Post-build stepsでarm-none-eabi-objcopy -O binary “${BuildArtifactFileName}” “${BuildArtifactFileBaseName}.bin” ; の前にある#を削除してbinファイルとチェックサム生成が行われるようにします。これでまず、一度buildし書き込みます。RESETするとドライバの要求があるのでQSBのサンプルにあるものを指定します。
CDCDriver

デバイスマネージャでポートの確認をします。LPC11Uxx USB Vcom portとして認識されています。DM

とりあえず、ループバックに改造します。サンプルは、USARTとUSBのブリッジサンプルなので、まずこれをやめます。main.cにある#define UART_BRIDGE 1の宣言を削除します。これでブリッジはしなくなります。このままでは、繋いでも何も送信が返ってきません。
ErrorCode_t VCOM_bulk_out_hdlr(USBD_HANDLE_T hUsb, void* data, uint32_t event)関数を修正します。
受信イベントでサンプルは、受信しても送信バッファに何入れません。
if (pVcom->rxlen == 0) {
pVcom->rxlen = pUsbApi->hw->ReadEP(hUsb, USB_CDC_EP_BULK_OUT, pVcom->rxBuf);
    pVcom->txlen = pVcom->rxlen;
    memcpy(pVcom->txBuf, pVcom->rxBuf, pVcom->rxlen);
pVcom->send_fn(pVcom);
pVcom->rxlen = 0;
}
受信長を送信長にコピーし受信バッファを送信バッファにコピーします。これでループバックします。ハイパーターミナルで動作確認とれました。

http://www.embeddedartists.com/products/boards/lpc11u35_qsb.php
http://akizukidenshi.com/catalog/g/gM-06948/


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

© 2014 Spineedge Corporation.