This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new d4acd6949f stm32h7/linum-stm32h753bi: fix fdcan configuration
d4acd6949f is described below

commit d4acd6949fca7398a55a818aaf6d2f3e4da1440f
Author: Jorge Guzman <[email protected]>
AuthorDate: Sun Apr 7 10:28:30 2024 -0300

    stm32h7/linum-stm32h753bi: fix fdcan configuration
    
    Signed-off-by: Jorge Guzman <[email protected]>
---
 .../arm/stm32h7/boards/linum-stm32h753bi/index.rst   | 20 ++++++++++++++++++++
 .../linum-stm32h753bi/configs/socketcan/defconfig    |  4 ++++
 boards/arm/stm32h7/linum-stm32h753bi/include/board.h | 16 ++++++++++------
 .../stm32h7/linum-stm32h753bi/src/stm32_bringup.c    | 10 ++++++++++
 4 files changed, 44 insertions(+), 6 deletions(-)

diff --git 
a/Documentation/platforms/arm/stm32h7/boards/linum-stm32h753bi/index.rst 
b/Documentation/platforms/arm/stm32h7/boards/linum-stm32h753bi/index.rst
index ff5e7dd75f..bcf7064e6a 100644
--- a/Documentation/platforms/arm/stm32h7/boards/linum-stm32h753bi/index.rst
+++ b/Documentation/platforms/arm/stm32h7/boards/linum-stm32h753bi/index.rst
@@ -873,3 +873,23 @@ tone
 
 This example demonstrates how to use PWM4 and Timer17 to play music using the 
Tone library and the board's buzzer.
 
+socketcan
+---------
+
+This example demonstrates how to use the CAN-FD peripherals can0 and can1 with 
the SocketCAN protocol.::
+
+  # Configure the can0 and can1 to send messages
+  nsh> ifup can0
+  ifup can0...OK
+  nsh> ifup can1
+  ifup can1 ...OK
+  nsh> cansend can0 123#DEADBEEF
+  nsh> cansend can1 5A1#11.2233.44556677.88
+
+  # Reset the board and configure the can0 peripheral to receive messages
+  nsh> ifup can0
+  ifup can0...OK
+  nsh> candump can0
+    can0  051   [8]  00 11 22 33 44 55 66 77
+    can0  051  [16]  00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
+
diff --git a/boards/arm/stm32h7/linum-stm32h753bi/configs/socketcan/defconfig 
b/boards/arm/stm32h7/linum-stm32h753bi/configs/socketcan/defconfig
index 88c8bac48f..d198a21f9c 100644
--- a/boards/arm/stm32h7/linum-stm32h753bi/configs/socketcan/defconfig
+++ b/boards/arm/stm32h7/linum-stm32h753bi/configs/socketcan/defconfig
@@ -35,6 +35,10 @@ CONFIG_DEBUG_NET_ERROR=y
 CONFIG_DEBUG_NET_INFO=y
 CONFIG_DEBUG_NET_WARN=y
 CONFIG_DEBUG_SYMBOLS=y
+CONFIG_FDCAN1_ARBI_BITRATE=125000
+CONFIG_FDCAN1_DATA_BITRATE=1000000
+CONFIG_FDCAN2_ARBI_BITRATE=125000
+CONFIG_FDCAN2_DATA_BITRATE=1000000
 CONFIG_FS_PROCFS=y
 CONFIG_INIT_ENTRYPOINT="nsh_main"
 CONFIG_INTELHEX_BINARY=y
diff --git a/boards/arm/stm32h7/linum-stm32h753bi/include/board.h 
b/boards/arm/stm32h7/linum-stm32h753bi/include/board.h
index 3d67f5c792..b68233c9a9 100644
--- a/boards/arm/stm32h7/linum-stm32h753bi/include/board.h
+++ b/boards/arm/stm32h7/linum-stm32h753bi/include/board.h
@@ -366,8 +366,8 @@
 
   /* RS485 DIR pin: PA15 */
 
-#  define GPIO_UART4_RS485_DIR (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_100MHz|\
-                                GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN15)
+#  define GPIO_UART4_RS485_DIR (GPIO_OUTPUT | GPIO_PUSHPULL | 
GPIO_SPEED_100MHz |\
+                                GPIO_OUTPUT_CLEAR | GPIO_PORTA | GPIO_PIN15)
 
 #endif
 
@@ -422,13 +422,17 @@
 
 /* FDCAN1 */
 
-#define GPIO_CAN1_RX      (GPIO_CAN1_RX_3|GPIO_SPEED_50MHz)      /* PD0 */
-#define GPIO_CAN1_TX      (GPIO_CAN1_TX_3|GPIO_SPEED_50MHz)      /* PD1 */
+#define GPIO_CAN1_RX  (GPIO_CAN1_RX_4|GPIO_SPEED_50MHz) /* PH14 */
+#define GPIO_CAN1_TX  (GPIO_CAN1_TX_4|GPIO_SPEED_50MHz) /* PH13 */
+#define GPIO_CAN1_STD (GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_SPEED_100MHz |\
+                       GPIO_OUTPUT_CLEAR | GPIO_PORTI | GPIO_PIN2) /* PI2 */
 
 /* FDCAN2 */
 
-#define GPIO_CAN2_RX      (GPIO_CAN2_RX_2|GPIO_SPEED_50MHz)      /* PB5 - D11 
*/
-#define GPIO_CAN2_TX      (GPIO_CAN2_TX_2|GPIO_SPEED_50MHz)      /* PB6 - D1 */
+#define GPIO_CAN2_RX  (GPIO_CAN2_RX_1|GPIO_SPEED_50MHz) /* PB12 */
+#define GPIO_CAN2_TX  (GPIO_CAN2_TX_1|GPIO_SPEED_50MHz) /* PB13 */
+#define GPIO_CAN2_STD (GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_SPEED_100MHz |\
+                       GPIO_OUTPUT_CLEAR | GPIO_PORTE | GPIO_PIN3) /* PE3 */
 
 /* QSPI Mapping  */
 
diff --git a/boards/arm/stm32h7/linum-stm32h753bi/src/stm32_bringup.c 
b/boards/arm/stm32h7/linum-stm32h753bi/src/stm32_bringup.c
index 0866d2312f..366acba182 100644
--- a/boards/arm/stm32h7/linum-stm32h753bi/src/stm32_bringup.c
+++ b/boards/arm/stm32h7/linum-stm32h753bi/src/stm32_bringup.c
@@ -294,10 +294,20 @@ int stm32_bringup(void)
 #ifdef CONFIG_NETDEV_LATEINIT
 
 #  ifdef CONFIG_STM32H7_FDCAN1
+
+  /* Enable and configure CAN1 */
+
+  stm32_configgpio(GPIO_CAN1_STD);
+  stm32_gpiowrite(GPIO_CAN1_STD, false);
   stm32_fdcansockinitialize(0);
 #  endif
 
 #  ifdef CONFIG_STM32H7_FDCAN2
+
+  /* Enable and configure CAN2 */
+
+  stm32_configgpio(GPIO_CAN2_STD);
+  stm32_gpiowrite(GPIO_CAN2_STD, false);
   stm32_fdcansockinitialize(1);
 #  endif
 

Reply via email to