STM32L496ZG Nucleo-144 CAN initialization
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2018-03-05 6:19 AM
I have Nucleo-144 Board with a STM32L496ZG and use it for evaluation if the MCU will work for us. But I´m stuck with the CAN initialization.
I have the following init code:
// CAN clock
LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_CAN1);
// CAN Tx
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOD);
LL_GPIO_SetAFPin_8_15(GPIOD, LL_GPIO_PIN_1, LL_GPIO_AF_9);
LL_GPIO_SetPinPull(GPIOD, LL_GPIO_PIN_1, LL_GPIO_PULL_UP);
LL_GPIO_SetPinOutputType(GPIOD, LL_GPIO_PIN_1, LL_GPIO_OUTPUT_PUSHPULL);
LL_GPIO_SetPinMode(GPIOD, LL_GPIO_PIN_1, LL_GPIO_MODE_ALTERNATE);
LL_GPIO_SetPinSpeed(GPIOD, LL_GPIO_PIN_1, LL_GPIO_SPEED_FREQ_VERY_HIGH);
// CAN Rx
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOD);
LL_GPIO_SetAFPin_8_15(GPIOD, LL_GPIO_PIN_0, LL_GPIO_AF_9);
LL_GPIO_SetPinPull(GPIOD, LL_GPIO_PIN_0, LL_GPIO_PULL_UP);
LL_GPIO_SetPinOutputType(GPIOD, LL_GPIO_PIN_0, LL_GPIO_OUTPUT_PUSHPULL);
LL_GPIO_SetPinMode(GPIOD, LL_GPIO_PIN_0, LL_GPIO_MODE_ALTERNATE);
LL_GPIO_SetPinSpeed(GPIOD, LL_GPIO_PIN_0, LL_GPIO_SPEED_FREQ_VERY_HIGH);�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?
If I debug this code and execute the line 'LL_GPIO_SetPinMode(GPIOD, LL_GPIO_PIN_1, LL_GPIO_MODE_ALTERNATE);', the TX and RX pin go to 0V and even when I executed all of the above code they stay there.
If I then want to get the CAN controller out of sleep mode it does not work, because the CAN controller waits for some high bits on the RX pin and will never see them.
Is there a really stupid mistake I´m making? Did someone else get the CAN controller running without using the HAL?
#can-examples #stm32-l4 #can-programmingSolved! Go to Solution.
- Labels:
-
CAN
-
STM32L4 Series
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2018-03-05 7:06 AM
Ok, there is a really really stupid mistake.
I need to call 'LL_GPIO_SetAFPin_0_7' and not 'LL_GPIO_SetAFPin_8_15'
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2018-03-05 7:06 AM
Ok, there is a really really stupid mistake.
I need to call 'LL_GPIO_SetAFPin_0_7' and not 'LL_GPIO_SetAFPin_8_15'
