arduino / arduino/ArduinoCore-mbed
Arudino PortentaH7 with the Longan Labs CAN FD Library Porting issue
- Dominant language
- C
- Stars
- 411
- Forks
- 225
- PR merge metrics
- No merged PRs in 30d
Description
Because of my years of work on the [maker100](https://github.com/hpssjellis/maker100) course using the Arduino PortentaH7, I get a lot of online requests for help. Often I can help by showing my library the [Portenta Pro Community Solutions](https://github.com/hpssjellis/portenta-pro-community-solutions) which can just be searched from the Arduino library manager. But sometimes, like this one, a request for help is way above my abilities.
@facchinm
@thechordmaster is trying to connect the PortentaH7 to the automotive CAN FD bus. Here is the link to the library [Longan_CANFD](https://github.com/Longan-Labs/Longan_CANFD). I don't have the hardware so can't do my normal brut force methods, trying stuff until something works or breaks. Any suggestions for @thechordmaster about what to try with these examples.
Jeremy Ellis
@hpssjellis
Having a quick look at the errors after installing the Longan_CANFD library link above it looks like it the issue is about the GPIO pin settings, which is a standard porting portenta issue. Can someone from Arduino have a look at this.
```
C:\Arduino-1.8.19\portable\packages\arduino\hardware\mbed_portenta\4.1.5\cores\arduino/mbed/targets/TARGET_STM/TARGET_STM32H7/STM32Cube_FW/STM32H7xx_HAL_Driver/stm32h7xx_hal_gpio.h:86:36: error: expected identifier before '(' token
#define GPIO_PIN_0 ((uint16_t)0x0001) /* Pin 0 selected */
^
C:\arduino-1.8.19\portable\sketchbook\libraries\Longan_CANFD-master\src/mcp2518fd_can_dfs.h:663:16: note: in expansion of macro 'GPIO_PIN_0'
typedef enum { GPIO_PIN_0, GPIO_PIN_1 } GPIO_PIN_POS;
^
C:\Arduino-1.8.19\portable\packages\arduino\hardware\mbed_portenta\4.1.5\cores\arduino/mbed/targets/TARGET_STM/TARGET_STM32H7/STM32Cube_FW/STM32H7xx_HAL_Driver/stm32h7xx_hal_gpio.h:86:36: error: expected '}' before '(' token
#define GPIO_PIN_0 ((uint16_t)0x0001) /* Pin 0 selected */
^
C:\arduino-1.8.19\portable\sketchbook\libraries\Longan_CANFD-master\src/mcp2518fd_can_dfs.h:663:16: note: in expansion of macro 'GPIO_PIN_0'
typedef enum { GPIO_PIN_0, GPIO_PIN_1 } GPIO_PIN_POS;
^
C:\Arduino-1.8.19\portable\packages\arduino\hardware\mbed_portenta\4.1.5\cores\arduino/mbed/targets/TARGET_STM/TARGET_STM32H7/STM32Cube_FW/STM32H7xx_HAL_Driver/stm32h7xx_hal_gpio.h:86:47: error: expected ')' before numeric constant
#define GPIO_PIN_0 ((uint16_t)0x0001) /* Pin 0 selected */
^
C:\arduino-1.8.19\portable\sketchbook\libraries\Longan_CANFD-master\src/mcp2518fd_can_dfs.h:663:16: note: in expansion of macro 'GPIO_PIN_0'
typedef enum { GPIO_PIN_0, GPIO_PIN_1 } GPIO_PIN_POS;
^
In file included from C:\arduino-1.8.19\portable\sketchbook\libraries\Longan_CANFD-master\src/mcp2518fd_can.h:6:0,
from C:\arduino-1.8.19\portable\sketchbook\libraries\Longan_CANFD-master\examples\CAN20_RECV_INT\CAN20_RECV_INT.ino:32:
C:\arduino-1.8.19\portable\sketchbook\libraries\Longan_CANFD-master\src/mcp2518fd_can_dfs.h:663:41: error: 'GPIO_PIN_POS' does not name a type; did you mean 'GPIO_PIN_SET'?
typedef enum { GPIO_PIN_0, GPIO_PIN_1 } GPIO_PIN_POS;
^~~~~~~~~~~~
GPIO_PIN_SET
```
Contributor guide
No contributing guide indexed for this repository
Research direction
Reproduce the CAN20_RECV_INT example build on an Arduino PortentaH7 with the Longan_CANFD library. Start at src/mcp2518fd_can_dfs.h line 663 and compare the GPIO names with the STM32 HAL header shown in the compiler output. Done means the example compiles without the GPIO_PIN_POS errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- arduino, c
- Domain
- embedded-iot
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100