STM32H743ZI核子似乎无法通过FDCAN 2进行传输?

STM32H743ZI核子似乎无法通过FDCAN 2进行传输?,c,stm32,can-bus,mcu,C,Stm32,Can Bus,Mcu,我目前正试图通过Nucleo上的两个FDCAN发射机发送信息。但我只能通过FDCAN1(经典主设备)传输,不能通过FDCAN2(经典从设备)传输 配置设置相同,只有FDCAN1开始发送,而FDCAN2在短时间后出现缓冲区溢出,并且从不发送任何内容。我正在使用CANoe进行监控,在那里我只能看到通过FDCAN1发送的消息 我也知道这不是硬件问题,因为我更换了电缆和线路板,问题仍然存在。我的电缆也正确端接 我有什么明显的遗漏吗 这是我的代码,我使用CubeMx进行第一次初始化 fdcan.c文件:

我目前正试图通过Nucleo上的两个FDCAN发射机发送信息。但我只能通过FDCAN1(经典主设备)传输,不能通过FDCAN2(经典从设备)传输

配置设置相同,只有FDCAN1开始发送,而FDCAN2在短时间后出现缓冲区溢出,并且从不发送任何内容。我正在使用CANoe进行监控,在那里我只能看到通过FDCAN1发送的消息

我也知道这不是硬件问题,因为我更换了电缆和线路板,问题仍然存在。我的电缆也正确端接

我有什么明显的遗漏吗

这是我的代码,我使用CubeMx进行第一次初始化

fdcan.c文件: `

以及主体的相关部分。c:

uint8_t TxData[8] = {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA};
 
uint8_t TxData2[8] = {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB};
uint32_t msgerror=0;
uint32_t msgerror1=0;
/* USER CODE END PV */
 
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_NVIC_Init(void);
      
 
/**
  * @brief  The application entry point.
  *
  * @retval None
  */
int main(void)
{
 
  /* MCU Configuration----------------------------------------------------------*/
 
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
 
 
  /* Configure the system clock */
  SystemClock_Config();
      
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_FDCAN1_Init();
  MX_FDCAN2_Init();
 
  /* Initialize interrupts */
  MX_NVIC_Init();
  /* USER CODE BEGIN 2 */
    
    TxHeader.Identifier = 0x120;
  TxHeader.IdType = FDCAN_STANDARD_ID;
  TxHeader.TxFrameType = FDCAN_DATA_FRAME;
  TxHeader.DataLength = FDCAN_DLC_BYTES_8;
  TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
  TxHeader.BitRateSwitch = FDCAN_BRS_OFF;
  TxHeader.FDFormat = FDCAN_CLASSIC_CAN;
  TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
  TxHeader.MessageMarker = 0;
    
    HAL_FDCAN_Start(&hfdcan1);
    HAL_FDCAN_Start(&hfdcan2);
  /* USER CODE END 2 */
 
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
        
         if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan2, &TxHeader, TxData) != HAL_OK)
            {
                /* Transmission request Error */
                msgerror++;
            }
            if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData2) != HAL_OK)
            {
                /* Transmission request Error */
                msgerror1++;
            }
 
        HAL_Delay(100);     
 
  }

在找到正确的数据表后,我找到了解决方案。在FDCAN2的配置中,我需要实现一个偏移:

 hfdcan2.Init.MessageRAMOffset = sizeof(hfdcan1);

实施此更改后,发送和接收工作正常。

找到正确的数据表后,我找到了解决方案。在FDCAN2的配置中,我需要实现一个偏移:

 hfdcan2.Init.MessageRAMOffset = sizeof(hfdcan1);

实施此更改后,发送和接收工作正常。

每个节点是否在总线上有其他人可以与之交谈?是的,正如我所写,我正在使用CANoe进行监控,CANoe发送确认。我解决了这个问题,稍后将添加一个答案。每个节点是否有其他人在总线上交谈?是的,正如我写的,我正在使用CANoe进行监控,CANoe发送一个确认。我解决了它,稍后将添加一个答案