新手入门
- 积分
- 7
- 金钱
- 7
- 注册时间
- 2025-8-4
- 在线时间
- 2 小时
|
请教STM32H743IIT6开发板收发FDCAN数据问题
你好,我们买了你们3块STM32H743IIT6开发板,开发板自带的源码工程《实验30-1 传统CAN模式实验》和《实验30-2 FDCAN模式实验》,我们运行了一下,《实验30-1 传统CAN模式实验》可以两块板子互发can数据,但是《实验30-2 FDCAN模式实验》不行,请问源码工程《实验30-2 FDCAN模式实验》为啥不行呢?
另外,我们想实现收发fdcan数据的功能,我们把源码工程《实验30-1 传统CAN模式实验》里把如下内容改了
g_fdcanx_txheade.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;
g_fdcanx_handle.Init.FrameFormat = FDCAN_FRAME_FD_NO_BRS;//FDCAN_FRAME_CLASSIC;
改了之后,我们发送64个can数据,另一个开发板只收到14个,查了一下是这些宏定义的问题,我发8个数据,对方收到8个,我发48个数据,对方收到14个数据,我发32个,对方收到13个,我发64个,对方收到15个,明显就是数据长度0x000E0000U之类的没解析对,因为15对应F,14对应E,13对应D,请问如何才能实现收发64 个数据?或者实现收发48 个数据也行。
#define FDCAN_DLC_BYTES_0 ((uint32_t)0x00000000U) /*!< 0 bytes data field */
#define FDCAN_DLC_BYTES_1 ((uint32_t)0x00010000U) /*!< 1 bytes data field */
#define FDCAN_DLC_BYTES_2 ((uint32_t)0x00020000U) /*!< 2 bytes data field */
#define FDCAN_DLC_BYTES_3 ((uint32_t)0x00030000U) /*!< 3 bytes data field */
#define FDCAN_DLC_BYTES_4 ((uint32_t)0x00040000U) /*!< 4 bytes data field */
#define FDCAN_DLC_BYTES_5 ((uint32_t)0x00050000U) /*!< 5 bytes data field */
#define FDCAN_DLC_BYTES_6 ((uint32_t)0x00060000U) /*!< 6 bytes data field */
#define FDCAN_DLC_BYTES_7 ((uint32_t)0x00070000U) /*!< 7 bytes data field */
#define FDCAN_DLC_BYTES_8 ((uint32_t)0x00080000U) /*!< 8 bytes data field */
#define FDCAN_DLC_BYTES_12 ((uint32_t)0x00090000U) /*!< 12 bytes data field */
#define FDCAN_DLC_BYTES_16 ((uint32_t)0x000A0000U) /*!< 16 bytes data field */
#define FDCAN_DLC_BYTES_20 ((uint32_t)0x000B0000U) /*!< 20 bytes data field */
#define FDCAN_DLC_BYTES_24 ((uint32_t)0x000C0000U) /*!< 24 bytes data field */
#define FDCAN_DLC_BYTES_32 ((uint32_t)0x000D0000U) /*!< 32 bytes data field */
#define FDCAN_DLC_BYTES_48 ((uint32_t)0x000E0000U) /*!< 48 bytes data field */
#define FDCAN_DLC_BYTES_64 ((uint32_t)0x000F0000U) /*!< 64 bytes data field */
|
|