diff options
author | Pavel Kirienko <pavel.kirienko@gmail.com> | 2014-05-06 20:14:07 +0400 |
---|---|---|
committer | Pavel Kirienko <pavel.kirienko@gmail.com> | 2014-05-06 20:14:07 +0400 |
commit | 5716dad25db27315fa7cebf8183a71f864860f41 (patch) | |
tree | 0aba50a5ce503b53f95341d0156996a452c769c4 /src | |
parent | 7d7a375dd1a69bd286f127de51b11e5ecd390640 (diff) | |
download | px4-firmware-5716dad25db27315fa7cebf8183a71f864860f41.tar.gz px4-firmware-5716dad25db27315fa7cebf8183a71f864860f41.tar.bz2 px4-firmware-5716dad25db27315fa7cebf8183a71f864860f41.zip |
Added workaround for hardware issue on Pixhawk v1
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/uavcan/module.mk | 2 | ||||
-rw-r--r-- | src/modules/uavcan/uavcan_main.cpp | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/modules/uavcan/module.mk b/src/modules/uavcan/module.mk index 6974de8ca..3966210b5 100644 --- a/src/modules/uavcan/module.mk +++ b/src/modules/uavcan/module.mk @@ -61,7 +61,7 @@ include $(UAVCAN_DIR)/libuavcan_drivers/stm32/driver/include.mk SRCS += $(LIBUAVCAN_STM32_SRC) INCLUDE_DIRS += $(LIBUAVCAN_STM32_INC) EXTRADEFINES += -DUAVCAN_STM32_NUTTX \ - -DUAVCAN_STM32_NUM_IFACES=1 + -DUAVCAN_STM32_NUM_IFACES=2 # # Invoke DSDL compiler diff --git a/src/modules/uavcan/uavcan_main.cpp b/src/modules/uavcan/uavcan_main.cpp index fbb2e174b..474063aa6 100644 --- a/src/modules/uavcan/uavcan_main.cpp +++ b/src/modules/uavcan/uavcan_main.cpp @@ -37,6 +37,7 @@ #include <systemlib/err.h> #include <systemlib/systemlib.h> #include <arch/board/board.h> +#include <arch/chip/chip.h> #include "uavcan_main.hpp" extern "C" __EXPORT int uavcan_main(int argc, char *argv[]); @@ -53,9 +54,14 @@ void print_usage() int test_thread(int argc, char *argv[]) { + /* + * Forced pull up on CAN2 is required for Pixhawk v1 where the second interface lacks a transceiver. + * If no transceiver is connected, the RX pin will float, occasionally causing CAN controller to + * fail during initialization. + */ stm32_configgpio(GPIO_CAN1_RX); stm32_configgpio(GPIO_CAN1_TX); - stm32_configgpio(GPIO_CAN2_RX); + stm32_configgpio(GPIO_CAN2_RX | GPIO_PULLUP); stm32_configgpio(GPIO_CAN2_TX); int res = can_driver.init(1000000); if (res < 0) |