STM32FをArduino iDEで開発的なメモメモ [STM32F]
ボード毎にUSB DPのプルアップの制御が異なるので、これを一々ヘッダーファイルやCソースを書き換えていてはたいへんだから、boards.txtで対応できるようにした。
まづはboards.txtのvariantにオリジナルの基板の定義を追加
コンパイルのDEFINEオプションに
-DUSB_ON_PORT=GPIOE -DUSB_ON_PIN=1 -DUSB_POWER_ON=1
を追加し、ポート番号、ピン番号、プルアップ時の論理を渡す。
board.hは以下の様に変更
usb_cdcacm.cは以下の様に変更
いやぁ、良かった良かった。
まづは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 */ }
いやぁ、良かった良かった。
2018-11-08 15:34
nice!(0)
コメント(0)
コメント 0