arduino / arduino/ArduinoCore-mbed

Arudino PortentaH7 with the Longan Labs CAN FD Library Porting issue

Open
#998 2 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.