diff --git a/libraries/AP_HAL_ChibiOS/hwdef/iomcu/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/iomcu/hwdef.dat index b7ebbee9e5..320135d90d 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/iomcu/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/iomcu/hwdef.dat @@ -26,8 +26,8 @@ UART_ORDER EMPTY define HAL_USE_UART TRUE # UART connected to FMU, uses DMA -PA2 USART2_TX USART2 -PA3 USART2_RX USART2 +PA2 USART2_TX USART2 SPEED_HIGH +PA3 USART2_RX USART2 SPEED_HIGH define STM32_UART_USE_USART1 FALSE define STM32_UART_USE_USART2 TRUE @@ -36,7 +36,7 @@ define STM32_UART_USE_USART3 FALSE # UART for SBUS out, and RC in, no DMA define HAL_USE_SERIAL TRUE PB4 SBUS_OUT_EN OUTPUT LOW GPIO(1) -PB10 USART3_TX USART3 +PB10 USART3_TX USART3 SPEED_HIGH LOW PB11 USART3_RX USART3 define STM32_SERIAL_USE_USART1 TRUE @@ -70,8 +70,8 @@ PB15 AMBER_LED OUTPUT LOW # UART for DSM input # TX side is for IO debug, and is unused -PA9 USART1_TX USART1 -PA10 USART1_RX USART1 PULLUP +PA9 USART1_TX USART1 SPEED_HIGH +PA10 USART1_RX USART1 SPEED_HIGH PC13 SPEKTRUM_PWR_EN OUTPUT LOW define HAL_GPIO_PIN_SPEKTRUM_OUT PAL_LINE(GPIOA,10U) diff --git a/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py b/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py index 374659e395..c1f2a0374e 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py +++ b/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py @@ -334,9 +334,42 @@ class generic_pin(object): return None return self.get_AFIO() + def get_CR_F1(self): + '''return CR FLAGS for STM32F1xx''' + #Check Speed + if self.sig_dir != "INPUT" or self.af is not None: + speed_values = ['SPEED_LOW', 'SPEED_MEDIUM', 'SPEED_HIGH'] + v = 'SPEED_MEDIUM' + for e in self.extra: + if e in speed_values: + v = e + speed_str = "PIN_%s(%uU) |" % (v, self.pin) + else: + speed_str = "" + if self.af is not None: + if self.label.endswith('_RX'): + # uart RX is configured as a input, and can be pullup, pulldown or float + if 'PULLUP' in self.extra or 'PULLDOWN' in self.extra: + v = 'PUD' + else: + v = "NOPULL" + else: + v = "AF_PP" + elif self.sig_dir == 'OUTPUT': + v = "OUTPUT_PP" + elif self.type.startswith('ADC'): + v = "ANALOG" + else: + v = "PUD" + if 'FLOATING' in self.extra: + v = "NOPULL" + mode_str = "PIN_MODE_%s(%uU)" % (v, self.pin) + return "%s %s" % (speed_str, mode_str) + def get_CR(self): '''return CR FLAGS''' - #Check Speed + if mcu_series == "STM32F100": + return self.get_CR_F1() if self.sig_dir != "INPUT": speed_values = ['SPEED_LOW', 'SPEED_MEDIUM', 'SPEED_HIGH'] v = 'SPEED_MEDIUM'