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