• 検索結果がありません。

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

N/A
N/A
Protected

Academic year: 2021

シェア "1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )"

Copied!
19
0
0

読み込み中.... (全文を見る)

全文

(1)

1 TrueSTUDIO 用 F4D_VCP の説明 V001 2014/07/05

USB の VCP(仮想 COM ポート)による非同期シリアル通信を行うプログラムです。

無料の試用版開発ツール Atollic TrueSTUDIO for ARM Lite で作成したプロジェクトです。 ビルド可能なプログラムのコードサイズが 32Kbyte 以内の制限があります。 プログラムの開始番地は 0x08000000 です。デバッグが可能です。

目次

1. USB の VCP(仮想 COM ポート)について ... 2 2. USB の VCP(仮想 COM ポート)による接続 ... 2 3. プログラム実行時の動作... 3 4. VCP 通信の動作確認 ... 4 4.1. アプリケーション Access_VCP のインストール ... 4 4.2. Access_VCP アプリケーションの起動 ... 6 4.3. COM ポートの選択 ... 7 4.4. 送信データのエコーバック ... 8 4.5. LD6(青)点灯コマンドのセット ... 9 5. プロジェクトの構成 ... 11 5.1. プロジェクト F4D_VCP の起動画面 ... 11 5.2. 追加したソース・フォルダとファイル... 11 6. 主なモジュールの説明 ... 13 6.1. ソース・フォルダ src 内のファイル ... 13 6.2. HandleTIM ... 14 6.3. UserPrograms ... 15 6.4. Communicate_VCP ... 17

(2)

2 1. USB の VCP(仮想 COM ポート)について

USB の VCP(仮想 COM ポート)は USB を非同期シリアル通信として使用するための USB のドライバです。

PC には VCP ドライバをインストールする必要があります。

USB の VCP(仮想 COM ポート)を使用するための VCP ドライバのインストールについては、「インストール」のページの [ 1.「 VCP(Virtual COM Port : 仮想 COM ポート)ドライバ」のインストール ] の部分をご覧ください。

2. USB の VCP(仮想 COM ポート)による接続

USB の VCP(仮想 COM ポート)による、PC と STM32F4 Discovery との接続は以下のようになります。

PC A

A

Mini B

Micro B USB ケーブル : A - MiniB : 電源供給 および ST-LINK のため

USB ケーブル : A - MicroB : VCP(仮想 COM ポート)による非同期シリアル通信のため

図2. USB ポート

(3)

3 3. プログラム実行時の動作 1) F4D_VCP プログラムを実行すると基板上の LED LD4(緑)が 1 秒点灯、2 秒消灯 で点滅します。 2) データを受信するとそのデータをそのまま送信します(エコーバック)。 3) 受信データが LED ON/OFF のコマンドであった場合、以下のように動作します。 番号 受信コマンド 動作 1 LD3 ON\0 LD3(橙)点灯 2 LD3 OFF\0 LD3(橙)消灯 3 LD5 ON\0 LD5(赤)点灯 4 LD5 OFF\0 LD5(赤)消灯 5 LD6 ON\0 LD6(青)点灯 6 LD6 OFF\0 LD6(青)消灯 表中の “\0” は 0x00 です。 次ページに続く

(4)

4 4. VCP 通信の動作確認

USB の VCP(仮想 COM ポート)用のアプリケーション Access_VCP を使用して、STM32F4 Discovery の送受信の確認、 および コマンド文字列を送信して基板上の LED の点灯/消灯を行います。 4.1. アプリケーション Access_VCP のインストール Access_VCP は りばいぶ が「飛石伝ひ」のページで提供している Windows7 PC 用のアプリケーションです。 Access_VCP_Install.zip をダウンロードして解凍すると、次ページのようにフォルダ Access_VCP_Install の下に インストールのためのファイルが格納されています。 setup.exe をダブルクリックすると次の警告のダイアログが開きます。 [インストール(I)] ボタンをクリックしてインストールしてください。 アプリケーションがインストールされて自動的に Access_VCP が実行されて次ページのフォームが表示されます。

(5)

5 アプリケーション Access_VCP のインストールはこれで終了です。

STM32F4 Discovery でプロジェクト STM32F4_VCP が実行されていて、PC と STM32F4 Discovery とが

USB ケーブル(A – MicroB)で VCP 接続されている場合、上記のように ”COM(シリアルポート)を検索しました。” と メッセージが表示されます。

(6)

6 4.2. Access_VCP アプリケーションの起動

まず、PC と STM32F4 Discovery の CN5 とを USB ケーブル(A – MicroB)で接続してください。

スタートメニューの { Access_VCP } をクリックするとアプリケーション Accsess_VCP が 起動して 次のフォームが表示されます。

(7)

7 4.3. COM ポートの選択

COM 選択の ComboBox で COM を選択します。

確認のメッセージが表示されるので、よい場合は [はい(Y)] ボタンをクリックします。

(8)

8

この例では、”COM3 に設定しました。” とメッセージが表示されています。 4.4. 送信データのエコーバック

送信データの TextBox に ASCII 文字列を入力して、[送信] ボタンをクリックすると、CPU 基板にデータが送信されます。 CPU 基板はデータを受信して、そのデータをそのまま PC に送信します。

このプログラムでは ASCII 文字のみ入力可能です。

PC が受信したデータは受信データの部分に表示されます。

上記の例では、送信データに “How are you?” と入力して [送信] ボタンをクリックした結果、エコーバックのデータが 受信データの欄に表示されています。

(9)

9 4.5. LD6(青)点灯コマンドのセット

LD6(青)の点灯コマンド “LD6 ON&00” とセットします。0x20 未満、0x7F 以上のコードは&xx の形で入力します。 &00 は 0x00 です。 <CR>の 0x0D なら&0D とします。&自体を入力する場合は &26 と入力してください。

[ 送信 ] ボタンをクリックしたとき送信データが送信されます。

受信データの部分にエコーバックされたデータ ”LD6 ON&00” が表示されています。

(10)

10 LD3(橙)、LD5(赤)に対しても同様に点灯/消灯を行うことができます。試してみてください。 プロジェクト F4D_VCP のコマンドに対する動作は以下の通りです。 Access_VCP の送信データ入力では “\0”(0x00) のデータは “&00” と入力してください。 F4D_VCP の受信コマンドに対する動作 番号 受信コマンド 動作 1 LD3 ON\0 LD3(橙)点灯 2 LD3 OFF\0 LD3(橙)消灯 3 LD5 ON\0 LD5(赤)点灯 4 LD5 OFF\0 LD5(赤)消灯 5 LD6 ON\0 LD6(青)点灯 6 LD6 OFF\0 LD6(青)消灯

(11)

11 5. プロジェクトの構成 5.1. プロジェクト F4D_VCP の起動画面 TrueSTUDIO で作成したプロジェクト F4D_VCP を開いた状態を以下に示します。 左側のプロジェクト・エクスプローラーの F4D_VCP を展開した状態です。 5.2. 追加したソース・フォルダとファイル 追加したソース・フォルダとファイルについて簡単に説明します。 1) Communicate_VCP (ソース・フォルダ) a) Communicate_VCP .h Communicate_VCP .c (ファイル) 接続相手との通信処理を記述しています。 データを受信して、受信データをそのまま送信します。(エコーバック) 受信データを判定して、LD3(橙)、LD5(赤)、LD6(青)の点灯/消灯を行います。 2) Driver_USB (ソース・フォルダ)

Driver_USB の下にフォルダ STM32_USB_Device_Library と STM32_USB_OTG_Driver があります。 STMicroelectronics 社が提供している USB のドライバです。

(12)

12 3) Handles (ソース・フォルダ) Peripheral の設定などを行っています。 a) HandleGPIO.h HandleGPIO.c (ファイル) GPIO 入出力の初期設定を記述しています。 b) HandleTIM.h HandleTIM.c (ファイル) タイマ割り込みを使用するために、タイマの初期設定を記述しています。 1mSec ごとにタイマ割り込みが発生するように設定しています。 4) UserPrograms (ソース・フォルダ) LED のための処理を記述しています。 a) UserPrograms.h UserPrograms.c (ファイル)

Status LED : LD4(緑) に使用している GPIO の初期設定と点滅処理を記述しています。 LD3(橙) 、LD5(赤)、LD6(青)に使用している GPIO の初期設定を記述しています。

5) VCP (ソース・フォルダ)

(13)

13 6. 主なモジュールの説明 6.1. ソース・フォルダ src 内のファイル ソース・フォルダ src 内のファイルでプログラムを追加した主なファイルについて簡単に説明します。 1) main.c a) main 関数 プログラムはここから開始します。主に初期化処理関数を呼び出しています。 int main(void) b) 使用するクロックの初期化 void RCC_Configuration(void); c) GPIO の初期化 void Init_GPIOs(void); 2) stm32f4xx_it.h stm32f4xx_it.c このファイルに割り込み処理を記述します。

(14)

14 6.2. HandleTIM

1) TIM13 と TIM14 の初期化

タイマ割り込みのために TIM13 と TIM14 を初期化してインターバルをセットします。 1mSec ごとに割り込みがかかるように設定しています。

以下の関数の引数に TIM13 または TIM14 用のパラメータを指定して TIM13 または TIM14 を初期化します。

//---// TIMxx初期化

//---//引数 :

// TIM_TypeDef *TIMxx : TIM選択

// uint32_t RCC_APB1Periph_TIMxx : specifies the APB1 peripheral to gates its clock. // uint16_t uint16_TIMxx_CCR1 : TiMxx CH1のインターバル

//---void InitializeTIMxx(TIM_TypeDef *TIMxx, uint32_t RCC_APB1Periph_TIMxx, uint16_t uint16_TIMxx_CCR1);

2) タイマ割り込み許可 以下の関数の引数に希望する TIMxx 用のパラメータを指定して割り込みを許可します。 //---// TIMxx割り込み許可 //---//引数 :

// uint32_t RCC_APB1Periph_TIMxx : specifies the APB1 peripheral to gates its clock. // uint8_t TIMxx_IRQn : STM32 specific Interrupt Numbers

(15)

15 6.3. UserPrograms

UserPrograms.h には LED に使用する GPIO に対する定義を記述してあります。

以下に、UaerPrograms.c に記述している関数の説明を記します。 1) LED に使用する GPIO の初期化(共通処理) GPIO番号とピン番号を指定して I/Oを初期化します。 //---// LEDポート初期化 //---//引数 :

// GPIO_TypeDef *GPIOx : GPIOポート指定 // uint16_t GPIO_Pin_x : GPIOピン指定

//---void InitializePortLED(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin_x);

2) LED の点滅処理(共通処理) GPIO番号とピン番号などを指定して 希望のLEDの点滅処理を行います。 //---// LED点滅 : 点灯/消灯 切り替え //---// 点灯/消灯 を切り替えると同時に 点灯時間/消灯時間 をセットする。 //---//引数 :

// GPIO_TypeDef *GPIOx : GPIOポート指定 // uint16_t GPIO_Pin_x : GPIOピン指定 // int16_t *pint16_OnOff : ON/OFF状態

// 0 : OFF // 1 : ON // uint16_t *puint16_Timer : 点灯時間/消灯時間をセットする変数のポインタ // uint16_t uint16_TimeON : 点灯時間 // uint16_t uint16_TimeOFF : 消灯時間

//---void BlinkLED(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin_x,

int16_t *pint16_OnOff, uint16_t *puint16_Timer, uint16_t uint16_TimeON, uint16_t uint16_TimeOFF);

(16)

16 3) LED に使用する I/O の初期化 a) StatusLED : LD4(緑) //---// Status LEDポート初期化 : LD4(緑) //---void InitializePortStatusLED(//---void); b) LD3(橙) //---// LD3(橙) ポート初期化 //---void InitializePortLD3(//---void); c) LD5(赤) //---// LD5(赤) ポート初期化 //---void InitializePortLD5(//---void); d) LD6(青) //---// LD6(青) ポート初期化 //---void InitializePortLD6(//---void); 4) StatusLED : LD4(緑)の点滅 //---// Status LED点滅 : LD4(緑) : 点灯/消灯 切り替え //---// Timer2割り込み内でGLB_uint16_vBlinkTimerStatusLEDをデクリメントする。 // GLB_uint16_vBlinkTimerStatusLEDが0になった時、呼び出される。 //---// 点灯/消灯 を切り替えると同時に 点灯時間/消灯時間 をセットする。 //---//引数 : // uint16_t uint16_TimeON : 点灯時間 // uint16_t uint16_TimeOFF : 消灯時間

(17)

17 6.4. Communicate_VCP 1) VCP の初期化 //---// VCP Communication初期化 : USBをVCPとして使用するための初期化を行います。 //---void InitializeCommunicate_VCP(//---void); 2) VCP 通信処理 VCP の受信待ちを行い、受信データを判定して LED の点灯/消灯を行います。受信データはエコーバックします。 //---// VCP通信処理 //---//戻り値 : // -1 : 処理中 // 0 : 終了 //---int16_t Communicate_VCP(void); 3) VCP 送信処理 指定された送信データを指定数送信します。 //---// VCP送信処理 //---//引数 : // uint16_t uint16_SendLength : 送信データ数 // uint8_t *puint8_SendData : 送信データのポインタ

(18)

18 4) VCP 受信処理 データ受信があった場合、受信データを取得して指定バッファにセットします。 //---// VCP受信処理 //---//引数 :

// uint8_t *puint8_ReceiveBuffer : 受信データを格納するBufferのポインタ //戻り値 :

// -1 : 受信なし

// 0 : Error

// 1以上 : 受信byte数

//---int16_t ReceiveVCP(uint8_t *puint8_ReceiveBuffer);

5) 受信コマンドの実行 //---// 受信コマンドを実行する。 //---//引数 : // uint16_t uint16_ReceiveLength : 受信データ数

// uint8_t *puint8_ReceiveData : 受信データが格納されているBufferのポインタ // uint8_t *puint8_SendData : 応答送信データを格納するBufferのポインタ //戻り値 : 応答送信データ数

//---uint16_t ExecuteCommandVCP(//---uint16_t uint16_ReceiveLength, uint8_t *puint8_ReceiveData, uint8_t *puint8_SendData);

(19)

19 改訂履歴

参照

関連したドキュメント

Optical SPDIF オーディオ出力ポートとなります。SPDIF 交換デバイス専用 UPDATA ポート

 仮定2.癌の進行が信頼を持ってモニターできる

に着目すれば︑いま引用した虐殺幻想のような﹁想念の凶悪さ﹂

現時点で最新の USB 3.0/USB 3.1 Gen 1 仕様では、Super-Speed、Hi-Speed、および Full-Speed の 3 つの速度モードが定義されてい ます。新しい SuperSpeed

BC107 は、電源を入れて自動的に GPS 信号を受信します。GPS

• ネット:0個以上のセルのポートをワイヤーを使って結んだも

この課題のパート 2 では、 Packet Tracer のシミュレーション モードを使用して、ローカル

Q-Flash Plus では、システムの電源が切れているとき(S5シャットダウン状態)に BIOS を更新する ことができます。最新の BIOS を USB