Hallo miteinander, ich versuche seit geraumer Zeit mit dem CubeMX eine CAN Kommunikation zu realsieren dabei bin ich auf ein Problem gestoßen: Wenn ich die Funktion HAL_CAN_AddTxMessage() nutze kriege ich ein Fehler. Mit der Funktion HAL_CAN_GetError() kriege ich folgende Fehlermeldung: HAL_CAN_ERROR_PARAM Weiß jemand was das bedeutet? Im Internet konnte ich schon ähnliche Fälle finden jedoch kein Tipps. https://community.st.com/s/question/0D50X0000A4ozhaSQA/halcanerrorparam-in-latest-version-of-stm32f1-hal-library-when-using-halcanaddtxmessage https://community.st.com/s/question/0D50X0000AFqZMqSQN/stm32cubemx-example-code-not-able-to-receive Gibt es eventuell Leute die ähnliche Probleme haben? Hier mal meine Initialisierung: #include "can.h" /* USER CODE BEGIN 0 */ CAN_TxHeaderTypeDef TxHeader; CAN_RxHeaderTypeDef RxHeader; uint8_t TxData[8]; uint8_t RxData[8]; uint32_t TxMailbox; /* USER CODE END 0 */ CAN_HandleTypeDef hcan; /* CAN init function */ void MX_CAN_Init(void) { CAN_FilterTypeDef sFilterConfig; hcan.Instance = CAN1; hcan.Init.Prescaler = 8; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan.Init.TimeSeg1 = CAN_BS1_12TQ; hcan.Init.TimeSeg2 = CAN_BS2_5TQ; hcan.Init.TimeTriggeredMode = DISABLE; hcan.Init.AutoBusOff = DISABLE; hcan.Init.AutoWakeUp = DISABLE; hcan.Init.AutoRetransmission = ENABLE; hcan.Init.ReceiveFifoLocked = DISABLE; hcan.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan) != HAL_OK) { Error_Handler(); xprintf("CAN Init ERROR"); } /* Configure the CAN Filter */ sFilterConfig.FilterBank = 0; sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; sFilterConfig.FilterIdHigh = 0x0000; sFilterConfig.FilterIdLow = 0x0000; sFilterConfig.FilterMaskIdHigh = 0x0000; sFilterConfig.FilterMaskIdLow = 0x0000; sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0; sFilterConfig.FilterActivation = ENABLE; sFilterConfig.SlaveStartFilterBank = 14; if (HAL_CAN_ConfigFilter(&hcan, &sFilterConfig) != HAL_OK) { /* Filter configuration Error */ Error_Handler(); xprintf("CAN ConfigFilter ERROR"); } if (HAL_CAN_Start(&hcan) != HAL_OK) { /* Start Error */ Error_Handler(); xprintf("CAN Start ERROR"); } if (HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING) != HAL_OK) { /* Notification Error */ Error_Handler(); xprintf("CAN ActivateNotification ERROR"); } TxHeader.StdId = 321; TxHeader.ExtId = 0x01; TxHeader.RTR = CAN_RTR_DATA; TxHeader.IDE = CAN_ID_STD; TxHeader.DLC = 7; TxHeader.TransmitGlobalTime = DISABLE; xprintf("CAN Init finished"); } Und hier die der Befehl mit den notwendigen Anhängen die mir zum debuggen dienten: TxData[0] = 0xFF; TxData[1] = 0xFF; TxData[2] = 0x03; TxData[3] = 0x04; TxData[4] = 0x05; TxData[5] = 0x06; TxData[6] = 0x07; . . . . . while (1) { if (HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox) != HAL_OK) { /* Transmission request Error */ xprintf("Transmission Error!"); //Error_Handler(); } HAL_Delay(1000); xprintf(" %d ", TxHeader); if(HAL_CAN_GetError(&hcan) != HAL_CAN_ERROR_NONE) { //xprintf("Fehler ist da!"); CanErr = HAL_CAN_GetError(&hcan); //xprintf(" %d ", CanErr); } if(HAL_CAN_GetState(&hcan) == HAL_CAN_STATE_ERROR) { xprintf("HAL_CAN_STATE_ERROR"); } } Ich würde mich echt freuen, wenn mir jemand einen Tipp geben könnte. Grüße David
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.