Hello, I have got board with no CAN pins outputted from stm32f4, I still had some pins with alternate function, so I tried to remap I2C1 pins, and CAN to I2C1 default pins.
I did it almost year ago, I2C worked, but I cant test CAN, now I have got Uavcan module, which is working with Pixhawk, which I used to implement it. But I cant see it with my “flying” board.
How I remapped:
-
I found that pins are configured in
/home/nikita/ardupilot/modules/PX4Firmware/nuttx-configs/px4fmu-v2/include/board.h
Info about them is stored in /home/nikita/ardupilot/modules/PX4NuttX/nuttx/arch/arm/src/stm32/chip/stm32f40xxx_pinmap.h -
Now I try to change CAN from GPIO_CAN1_RX_3
a
#define GPIO_CAN1_RX GPIO_CAN1_RX_2
#define GPIO_CAN1_TX GPIO_CAN1_TX_2
#define GPIO_CAN2_RX GPIO_CAN2_RX_1
#define GPIO_CAN2_TX GPIO_CAN2_TX_2
to
#define GPIO_CAN1_RX_2 (GPIO_ALT|GPIO_AF9|GPIO_SPEED_50MHz|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN8)
#define GPIO_CAN1_TX_2 (GPIO_ALT|GPIO_AF9|GPIO_SPEED_50MHz|GPIO_PUSHPULL|GPIO_PORTB|GPIO_PIN9)
Now I have
#define GPIO_CAN1_RX GPIO_CAN1_RX_2
#define GPIO_CAN1_TX GPIO_CAN1_TX_2
#define GPIO_CAN2_RX GPIO_CAN2_RX_1
#define GPIO_CAN2_TX GPIO_CAN2_TX_2
- Changing I2C pins
I had
#define GPIO_I2C1_SCL GPIO_I2C1_SCL_2
#define GPIO_I2C1_SDA GPIO_I2C1_SDA_2
#define GPIO_I2C1_SCL_GPIO (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN8)
#define GPIO_I2C1_SDA_GPIO (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN9)
#define GPIO_I2C2_SCL GPIO_I2C2_SCL_1
#define GPIO_I2C2_SDA GPIO_I2C2_SDA_1
#define GPIO_I2C2_SCL_GPIO (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN10)
#define GPIO_I2C2_SDA_GPIO (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN11)
I want to use B8,B9, so I change I2C1 to I2C3 and dont touch I2C2.
#define GPIO_I2C1_SCL GPIO_I2C3_SCL_2
#define GPIO_I2C1_SDA GPIO_I2C3_SDA_2
#define GPIO_I2C1_SCL_GPIO (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTH|GPIO_PIN7)
#define GPIO_I2C1_SDA_GPIO (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTH|GPIO_PIN8)
Lightware SF11 and some other devices are working on I2C2. I can see my uavcan module with sniffer, but I cant see autopilot node.
I am working with arduplane 3.8.5 branch.
I am looking for any help.
Nikita.