SSブログ

STM32FをArduino iDEで開発的なメモメモ [STM32F]

ボード毎にUSB DPのプルアップの制御が異なるので、これを一々ヘッダーファイルやCソースを書き換えていてはたいへんだから、boards.txtで対応できるようにした。

まづはboards.txtのvariantにオリジナルの基板の定義を追加
genericSTM32F103V.menu.device_variant.PIXIS1303=PIXIS1303
genericSTM32F103V.menu.device_variant.PIXIS1303.build.variant=generic_stm32f103v
genericSTM32F103V.menu.device_variant.PIXIS1303.build.cpu_flags=-DMCU_STM32F103VE -DUSB_ON_PORT=GPIOE -DUSB_ON_PIN=1 -DUSB_POWER_ON=1
genericSTM32F103V.menu.device_variant.PIXIS1303.upload.maximum_size=524288
genericSTM32F103V.menu.device_variant.PIXIS1303.upload.maximum_data_size=65536
genericSTM32F103V.menu.device_variant.PIXIS1303.build.ldscript=ld/stm32f103ve.ld

コンパイルのDEFINEオプションに
-DUSB_ON_PORT=GPIOE -DUSB_ON_PIN=1 -DUSB_POWER_ON=1
を追加し、ポート番号、ピン番号、プルアップ時の論理を渡す。

board.hは以下の様に変更
/* USB configuration.  BOARD_USB_DISC_DEV is the GPIO port containing
 * the USB_DISC pin, and BOARD_USB_DISC_BIT is that pin's bit. */
//#define BOARD_USB_DISC_DEV      GPIOC  /* original */
//#define BOARD_USB_DISC_BIT      12  /* original */
#define BOARD_USB_DISC_DEV      USB_ON_PORT
#define BOARD_USB_DISC_BIT      USB_ON_PIN


usb_cdcacm.cは以下の様に変更
void usb_cdcacm_enable(gpio_dev *disc_dev, uint8 disc_bit) {
    /* Present ourselves to the host. Writing 0 to "disc" pin must
     * pull USB_DP pin up while leaving USB_DM pulled down by the
     * transceiver. See USB 2.0 spec, section 7.1.7.3. */

    if (disc_dev!=NULL)
    {
      gpio_set_mode(disc_dev, disc_bit, GPIO_OUTPUT_PP);
//    gpio_write_bit(disc_dev, disc_bit, 0);  /* for original */
      gpio_write_bit(disc_dev, disc_bit, USB_POWER_ON );  /* for pixis 1303 */
    }

いやぁ、良かった良かった。
stm32fArduinoIde_002.png
nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。