Browse Source

uavcannode: Add CANNODE_TERM parameter (configure CAN termination on ARK cannodes)

- adds functionality to enable the built in can termination on the ARK cannodes
master
Alex Klimaj 3 years ago committed by GitHub
parent
commit
b482986e8e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      boards/ark/can-flow/src/board_config.h
  2. 1
      boards/ark/can-gps/src/board_config.h
  3. 1
      boards/ark/can-rtk-gps/src/board_config.h
  4. 13
      src/drivers/uavcannode/UavcanNode.cpp
  5. 9
      src/drivers/uavcannode/uavcannode_params.c

1
boards/ark/can-flow/src/board_config.h

@ -48,6 +48,7 @@ @@ -48,6 +48,7 @@
/* CAN termination software control */
#define GPIO_CAN1_TERMINATION /* PB13 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN13)
#define GPIO_CAN_TERM GPIO_CAN1_TERMINATION
/* Boot config */
#define GPIO_BOOT_CONFIG /* PC15 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTC|GPIO_PIN15|GPIO_EXTI)

1
boards/ark/can-gps/src/board_config.h

@ -60,6 +60,7 @@ @@ -60,6 +60,7 @@
/* CAN termination software control */
#define GPIO_CAN1_TERMINATION /* PB13 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN13)
#define GPIO_CAN_TERM GPIO_CAN1_TERMINATION
/* ICM42688p FSYNC */
#define GPIO_42688P_FSYNC /* PB8 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN8)

1
boards/ark/can-rtk-gps/src/board_config.h

@ -60,6 +60,7 @@ @@ -60,6 +60,7 @@
/* CAN termination software control */
#define GPIO_CAN1_TERMINATION /* PB13 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN13)
#define GPIO_CAN_TERM GPIO_CAN1_TERMINATION
/* ICM42688p FSYNC */
#define GPIO_42688P_FSYNC /* PB8 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN8)

13
src/drivers/uavcannode/UavcanNode.cpp

@ -513,6 +513,19 @@ extern "C" int uavcannode_start(int argc, char *argv[]) @@ -513,6 +513,19 @@ extern "C" int uavcannode_start(int argc, char *argv[])
// Sarted byt the bootloader, we must pet it
watchdog_pet();
#if defined(GPIO_CAN_TERM)
int32_t can_term = 0;
param_get(param_find("CANNODE_TERM"), &can_term);
if (can_term != 0) {
px4_arch_gpiowrite(GPIO_CAN_TERM, true);
} else {
px4_arch_gpiowrite(GPIO_CAN_TERM, false);
}
#endif
// CAN bitrate
int32_t bitrate = 0;

9
src/drivers/uavcannode/uavcannode_params.c

@ -50,3 +50,12 @@ PARAM_DEFINE_INT32(CANNODE_NODE_ID, 120); @@ -50,3 +50,12 @@ PARAM_DEFINE_INT32(CANNODE_NODE_ID, 120);
* @group UAVCAN
*/
PARAM_DEFINE_INT32(CANNODE_BITRATE, 1000000);
/**
* CAN built-in bus termination
*
* @boolean
* @max 1
* @group UAVCAN
*/
PARAM_DEFINE_INT32(CANNODE_TERM, 0);

Loading…
Cancel
Save