STM32F103C8T6 USB CDC編
はじめに
昨日貰ったSTM32F103C8T6ボードにUSB通信用のmicroUSBがあるのと,前々からSTM32のUSB通信を試してみたかったので,簡単な動作確認をしてみました.
USB CDC
CDCはCommunication Device Classの略です.
仮想COMポートを開き,マイコンとのシリアル通信がUSB経由で可能です.
開発環境
PC:MacBookPro
OS:macOS High Sierra
開発ソフト:SW4STM32,STM32CubeMX
Windowsの方はVCPドライバーが必要になるので,ST社などのドライバーをインストールしてください.
STM32CubeMX
CubeMX側でUSB CDCの設定をします.手順は以下の通りです.
Pinout
- USBのDevice(FS)にチェックを入れる.
- RCCのHigh Speed Clock(HSE)をCrystal/Ceramic Resonatorにする.
- USB DeviceのClass For FS IPをCommunication Device Classにする.
Clock Configuration
To USB(MHz)が48MHzになるようにHCLKの値を決めます.
今回は最高速の72MHzにしました.
CubeMX側の設定は以上です.コード生成をしてSW4STM32に移ります.
SW4STM32
文字列送信のコードをmain.cに追加します.
/* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USB_DEVICE_Init(); /* USER CODE BEGIN 2 */ uint8_t *buffer = "Hello\n"; /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ CDC_Transmit_FS(buffer,strlen(buffer)); HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_12); HAL_Delay(500); } /* USER CODE END 3 */
動作確認
microUSBをPCにつなぎ,CoolTermで動作確認をしました.
ボーレートはデフォルトの115200 bpsです.
通信中にリセットしまうとCOMポートが閉じられ,再接続が必要となるので注意してください.
おわりに
STM32F103C8T6でUSB CDCの動作確認ができました.
次はUSB HIDなどを試してみたいです.