STM32F103C8T6 USB CDC編

はじめに

昨日貰ったSTM32F103C8T6ボードにUSB通信用のmicroUSBがあるのと,前々からSTM32のUSB通信を試してみたかったので,簡単な動作確認をしてみました.

fmr-chn.hatenablog.com

USB CDC

CDCはCommunication Device Classの略です.
仮想COMポートを開き,マイコンとのシリアル通信がUSB経由で可能です.

開発環境

PC:MacBookPro
OS:macOS High Sierra
開発ソフト:SW4STM32,STM32CubeMX

Windowsの方はVCPドライバーが必要になるので,ST社などのドライバーをインストールしてください.

www.st.com

STM32CubeMX

CubeMX側でUSB CDCの設定をします.手順は以下の通りです.

Pinout

  1. USBのDevice(FS)にチェックを入れる.
  2. RCCのHigh Speed Clock(HSE)をCrystal/Ceramic Resonatorにする.
  3. USB DeviceのClass For FS IPをCommunication Device Classにする.

f:id:FMR_CHN:20180904121730p:plain:w700

Clock Configuration

To USB(MHz)が48MHzになるようにHCLKの値を決めます.
今回は最高速の72MHzにしました.

f:id:FMR_CHN:20180904122552p:plain

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ポートが閉じられ,再接続が必要となるので注意してください.
f:id:FMR_CHN:20180904123010p:plain:w500

おわりに

STM32F103C8T6でUSB CDCの動作確認ができました.
次はUSB HIDなどを試してみたいです.