STM32マイコン36(USBのCDC使用)
1.本日の内容
(1) STM32のUSB機能の一つである、CDC機能を使用する方法について記載する。
(2) CDCにより、mbedをUSBで接続し、Vertual Com Port(仮想COM)として認識ようにする。
使用マイコン:
・目次
2.内容
(1) CDCとは
・CDC (Communication Device Class) は、USBデバイスのクラスの1つであり、データ通信を行うデバイスを定義するための規格。
・PCと通信デバイスとの間で、双方向データ転送を可能にするために使用される。
・デバイスとホストコンピュータ間でデータの送受信を簡単に行うことができる。
・モデム、シリアル通信ポート、仮想COMポートなどがCDCを使用して実装される。
・CDCを使用することで、デバイスがドライバソフトウェアなしで標準的なコンピュータと通信できる。
・これにより、追加のドライバインストールなしでデバイスを接続し、通信できる。
(2) CubeIDEの設定
(a) USB_OTG_FSのModeをDevice_Onlyに変更する。
(b) USB_DEVICEタブのClass For FS IPをCommunication Device Class(VPC)に変更する。
(c) RCCタブのHigh Speed Clock をCrystal/Ceramic Resonatorに変更する。
→RCCの設定(外部発振子の使用方法)について:nucleof401RE(外部発振子で使用する) - Project_OKI’s diary
(d) Clock Configurationに移動すると、
自動的にClockを設定するか確認されるので、Yesを選択する。
(e) クロックが自動的に設定される。(今回は、そのまま)
※Input frequencyが今回は、8MHzの振動子を使用する為、8のまま。
別の周波数の振動子を使用する場合は、その振動子の周波数に合わせて、
数値を変更する。
※USBのクロックが48MHzになっていることを確認する。
→下記の場合は、Main PLLの /3の先が48MHzになっていることを確認。
(f) 歯車マークを押し、プログラムの生成を行う。
・mbedのピン配置は、下記サイトを確認。
(3) 回路の確認
USBコネクタ側ピン番号 | mbed側ピン番号 | 機能 |
---|---|---|
1 | 5V | VBAS |
2 | PA_11 | D- |
3 | PA_12 | D+ |
4 | none | NC |
5 | GND | GND |
(4) USBの接続確認
※ここにUSBシリアルデバイスが表示しない場合、USBの認識が出来ていないということ。
※ここに不明なUSBデバイスが接続と出る場合、USBの認識はしているが、CDCの設定などができていないか。
通信速度が間違っていて、通信が途中でコケているなどがかんがえられる。
(5) プログラムの作成
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) { /* USER CODE BEGIN 6 */ USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); USBD_CDC_ReceivePacket(&hUsbDeviceFS); /// USB送信 CDC_Transmit_FS(&Buf[0], 1);// 受け取ったBuf[0]をそのまま送信する。 return (USBD_OK); /* USER CODE END 6 */ }
3.関連記事
・STM32マイコン_2(UART通信:TeraTermにHellow表示) - Project_OKI’s diary
・STM32マイコン_3(UART通信:複数文字送信) - Project_OKI’s diary
・STM32マイコン_4(NVICの設定内容) - Project_OKI’s diary
・STM32マイコン_5(スイッチ入力とLED点灯、消灯) - Project_OKI’s diary
C言語:
・組み込みの為のC言語基礎知識1(printf) - Project_OKI’s diary
・C言語基礎知識2(for分で処理を繰り返す) - Project_OKI’s diary
・C言語基礎知識3(配列) - Project_OKI’s diary