From a76e019cf9ff47cce15986932a5ad4338682cc61 Mon Sep 17 00:00:00 2001 From: Lizongdi <1210855344@qq.com> Date: Thu, 18 Jun 2026 14:59:44 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=B8=BB=E7=BA=BF=E5=BE=85=E5=90=88?= =?UTF-8?q?=E3=80=91=E8=A7=A3=E5=86=B3CAN=E5=B8=A7ID=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=9C=89=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=E6=B2=A1=E6=9A=B4=E9=9C=B2=E5=87=BA=E6=9D=A5=E6=98=AF?= =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E4=B8=80=E7=9B=B4=E8=AF=95=E7=9A=84=E5=8D=95?= =?UTF-8?q?=E5=AD=97=E8=8A=82ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bspMCU/bsp_CAN.c | 7 ++++--- bspMCU/include/bsp_CAN.h | 2 +- bspMCU/l_can.c | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/bspMCU/bsp_CAN.c b/bspMCU/bsp_CAN.c index 2c4e9ed..0f87c51 100644 --- a/bspMCU/bsp_CAN.c +++ b/bspMCU/bsp_CAN.c @@ -127,10 +127,11 @@ void CAN_RX_IRQHandler(TComCtrl *_ptComCtrl) } } -int CAN_TX_FIFOQ(TComCtrl *_ptComCtrl, uint32_t _iFrameID, char *_pBuffer, uint32_t _iSize) +int CAN_TX_FIFOQ(TComCtrl *_ptComCtrl, char *_pBuffer, uint32_t _iSize) { TCANUserData *ptCANUserData = (TCANUserData *)_ptComCtrl->m_pUserData; ptCANUserData->m_cantx->BitRateSwitch = FDCAN_BRS_OFF; + uint32_t iFrameID = (_pBuffer[0] & 0xFF) | ((_pBuffer[1] & 0xFF) << 8) | ((_pBuffer[2] & 0xFF) << 16) | ((_pBuffer[3] & 0xFF) << 24); #if CONFIG_CAN_NEW_VERSION ptCANUserData->m_cantx->DataLength = (uint32_t) _iSize; @@ -139,9 +140,9 @@ int CAN_TX_FIFOQ(TComCtrl *_ptComCtrl, uint32_t _iFrameID, char *_pBuffer, uint3 #endif ptCANUserData->m_cantx->FDFormat = FDCAN_CLASSIC_CAN; ptCANUserData->m_cantx->IdType = FDCAN_STANDARD_ID; - ptCANUserData->m_cantx->Identifier = _iFrameID; + ptCANUserData->m_cantx->Identifier = iFrameID; ptCANUserData->m_cantx->TxFrameType = FDCAN_DATA_FRAME; - HAL_FDCAN_AddMessageToTxFifoQ(ptCANUserData->m_can, ptCANUserData->m_cantx, (const uint8_t *)_pBuffer); + HAL_FDCAN_AddMessageToTxFifoQ(ptCANUserData->m_can, ptCANUserData->m_cantx, (const uint8_t *)&_pBuffer[4]); return ptCANUserData->m_cantx->DataLength; } diff --git a/bspMCU/include/bsp_CAN.h b/bspMCU/include/bsp_CAN.h index 57c8670..0ba8b17 100644 --- a/bspMCU/include/bsp_CAN.h +++ b/bspMCU/include/bsp_CAN.h @@ -97,7 +97,7 @@ typedef struct extern void CAN_IT_init(TComCtrl *_ptComCtrl); extern TCANUserData *CAN_userdata_init(FDCAN_HandleTypeDef *_fdCAN, uint32_t _Size, int _iIsLoop); extern void CAN_RX_IRQHandler(TComCtrl *_ptComCtrl); -extern int CAN_TX_FIFOQ(TComCtrl *_ptComCtrl, uint32_t _iFrameID, char *_pBuffer, uint32_t _iSize); +extern int CAN_TX_FIFOQ(TComCtrl *_ptComCtrl, char *_pBuffer, uint32_t _iSize); #endif diff --git a/bspMCU/l_can.c b/bspMCU/l_can.c index 89d251f..bb5b65c 100644 --- a/bspMCU/l_can.c +++ b/bspMCU/l_can.c @@ -15,7 +15,7 @@ TComCtrl *g_ptCAN1; int CAN1_Send(char *_pBuffer, uint32_t _iSize) { - return CAN_TX_FIFOQ(g_ptCAN1, _pBuffer[0], &_pBuffer[4], _iSize); + return CAN_TX_FIFOQ(g_ptCAN1, _pBuffer, _iSize); } void HAL_FDCAN_ErrorStatusCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t ErrorStatusITs)