Browse Source

同步主线修改

master
Lizongdi 3 weeks ago
parent
commit
db56c201e5
  1. 7
      bspMCU/bsp_CAN.c
  2. 2
      bspMCU/include/bsp_CAN.h
  3. 2
      bspMCU/l_can.c
  4. 4
      project/RBcore/drv_interface.c
  5. 32
      project/Spoolend/Spoolend.c

7
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; TCANUserData *ptCANUserData = (TCANUserData *)_ptComCtrl->m_pUserData;
ptCANUserData->m_cantx->BitRateSwitch = FDCAN_BRS_OFF; 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 #if CONFIG_CAN_NEW_VERSION
ptCANUserData->m_cantx->DataLength = (uint32_t) _iSize; ptCANUserData->m_cantx->DataLength = (uint32_t) _iSize;
@ -139,9 +140,9 @@ int CAN_TX_FIFOQ(TComCtrl *_ptComCtrl, uint32_t _iFrameID, char *_pBuffer, uint3
#endif #endif
ptCANUserData->m_cantx->FDFormat = FDCAN_CLASSIC_CAN; ptCANUserData->m_cantx->FDFormat = FDCAN_CLASSIC_CAN;
ptCANUserData->m_cantx->IdType = FDCAN_STANDARD_ID; ptCANUserData->m_cantx->IdType = FDCAN_STANDARD_ID;
ptCANUserData->m_cantx->Identifier = _iFrameID; ptCANUserData->m_cantx->Identifier = iFrameID;
ptCANUserData->m_cantx->TxFrameType = FDCAN_DATA_FRAME; 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; return ptCANUserData->m_cantx->DataLength;
} }

2
bspMCU/include/bsp_CAN.h

@ -97,7 +97,7 @@ typedef struct
extern void CAN_IT_init(TComCtrl *_ptComCtrl); extern void CAN_IT_init(TComCtrl *_ptComCtrl);
extern TCANUserData *CAN_userdata_init(FDCAN_HandleTypeDef *_fdCAN, uint32_t _Size, int _iIsLoop); extern TCANUserData *CAN_userdata_init(FDCAN_HandleTypeDef *_fdCAN, uint32_t _Size, int _iIsLoop);
extern void CAN_RX_IRQHandler(TComCtrl *_ptComCtrl); 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 #endif

2
bspMCU/l_can.c

@ -15,7 +15,7 @@ TComCtrl *g_ptCAN1;
int CAN1_Send(char *_pBuffer, uint32_t _iSize) 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) void HAL_FDCAN_ErrorStatusCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t ErrorStatusITs)

4
project/RBcore/drv_interface.c

@ -118,12 +118,12 @@ int RS485_4_Send(char *_pBuffer, uint32_t _iSize)
int FDCAN1_Send(char *_pBuffer, uint32_t _iSize) int FDCAN1_Send(char *_pBuffer, uint32_t _iSize)
{ {
return CAN_TX_FIFOQ(g_ptFDCAN1, _pBuffer[0], &_pBuffer[4], _iSize); return CAN_TX_FIFOQ(g_ptFDCAN1, _pBuffer, _iSize);
} }
int FDCAN2_Send(char *_pBuffer, uint32_t _iSize) int FDCAN2_Send(char *_pBuffer, uint32_t _iSize)
{ {
return CAN_TX_FIFOQ(g_ptFDCAN2, _pBuffer[0], &_pBuffer[4], _iSize); return CAN_TX_FIFOQ(g_ptFDCAN2, _pBuffer, _iSize);
} }
#ifndef CONFIG_UART_IT_IDLEDMA #ifndef CONFIG_UART_IT_IDLEDMA

32
project/Spoolend/Spoolend.c

@ -18,6 +18,7 @@
******************************************************************************/ ******************************************************************************/
#include "bsp_uart.h" #include "bsp_uart.h"
#include "bsp_CAN.h" #include "bsp_CAN.h"
#include "com.h"
#include "fdcan.h" #include "fdcan.h"
/*----------------------------------------------* /*----------------------------------------------*
* * * *
@ -84,27 +85,39 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
static int check_RS485_1(char *_pBuffer, uint32_t _iSize) static int check_RS485_1(char *_pBuffer, uint32_t _iSize)
{ {
rd_ComSend(g_ptRS485_1, _pBuffer, _iSize);
return _iSize; return _iSize;
} }
static int check_RS485_2(char *_pBuffer, uint32_t _iSize) static int check_RS485_2(char *_pBuffer, uint32_t _iSize)
{ {
rd_ComSend(g_ptRS485_2, _pBuffer, _iSize);
return _iSize; return _iSize;
} }
static int check_Spoolend(char *_pBuffer, uint32_t _iSize) static int check_Spoolend(char *_pBuffer, uint32_t _iSize)
{ {
TCANUserData *ptCANUserData = (TCANUserData *)g_ptFDCAN1->m_pUserData;
uint32_t iCANId = (uint8_t)ptCANUserData->m_canrx->Identifier;
rd_ComIDSend(g_ptFDCAN1, iCANId, _pBuffer, _iSize);
return _iSize; return _iSize;
} }
static void decode_RS485_1(const char *_pBuffer, uint32_t _iSize)
{
rd_ComSend(g_ptRS485_1, (char *)_pBuffer, _iSize);
}
static void decode_RS485_2(const char *_pBuffer, uint32_t _iSize)
{
rd_ComSend(g_ptRS485_2, (char *)_pBuffer, _iSize);
}
static void decode_Spoolend(const char *_pBuffer, uint32_t _iSize)
{
TCANUserData *ptCANUserData = (TCANUserData *)g_ptFDCAN1->m_pUserData;
uint32_t iCANId = (uint32_t)ptCANUserData->m_canrx->Identifier;
rd_ComIDWrite(g_ptFDCAN1, iCANId, (char *)_pBuffer, _iSize);
}
static int FDCAN1_Send(char *_pBuffer, uint32_t _iSize) static int FDCAN1_Send(char *_pBuffer, uint32_t _iSize)
{ {
return CAN_TX_FIFOQ(g_ptFDCAN1, _pBuffer[0], &_pBuffer[4], _iSize); return CAN_TX_FIFOQ(g_ptFDCAN1, _pBuffer, _iSize);
} }
void HAL_FDCAN_ErrorStatusCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t ErrorStatusITs) void HAL_FDCAN_ErrorStatusCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t ErrorStatusITs)
@ -154,13 +167,13 @@ int Myprint_putchar(uint8_t ch)
void SpoolendInit(void) void SpoolendInit(void)
{ {
TUartUserData *ptUartUserData = UART_userdata_init(0, 115200, 512); TUartUserData *ptUartUserData = UART_userdata_init(0, 115200, 512);
g_ptRS485_1 = rd_ComCreate(check_RS485_1, NULL, RS485_1_Send, ptUartUserData->m_buf_size, ptUartUserData); g_ptRS485_1 = rd_ComCreate(check_RS485_1, decode_RS485_1, RS485_1_Send, ptUartUserData->m_buf_size, ptUartUserData);
UART_IT_init(g_ptRS485_1); UART_IT_init(g_ptRS485_1);
// TUartUserData *ptUartUserData1 = UART_userdata_init(0, 115200, 512); // TUartUserData *ptUartUserData1 = UART_userdata_init(0, 115200, 512);
// g_ptRS485_2 = rd_ComCreate(check_RS485_2, NULL, RS485_2_Send, ptUartUserData1->m_buf_size, ptUartUserData1); // g_ptRS485_2 = rd_ComCreate(check_RS485_2, decode_RS485_2, RS485_2_Send, ptUartUserData1->m_buf_size, ptUartUserData1);
// UART_IT_init(g_ptRS485_2); // UART_IT_init(g_ptRS485_2);
TCANUserData *ptCANUserData = CAN_userdata_init(&hfdcan1, 8, 0); TCANUserData *ptCANUserData = CAN_userdata_init(&hfdcan1, 8, 0);
g_ptFDCAN1 = rd_ComCreate(check_Spoolend, NULL, FDCAN1_Send, CONFIG_UART_BUFFER_SIZE, ptCANUserData); g_ptFDCAN1 = rd_ComCreate(check_Spoolend, decode_Spoolend, FDCAN1_Send, CONFIG_UART_BUFFER_SIZE, ptCANUserData);
CAN_IT_init(g_ptFDCAN1); CAN_IT_init(g_ptFDCAN1);
} }
@ -178,6 +191,7 @@ void SpoolendTask(void)
HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin); HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin); HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
rd_ComSendProc(g_ptFDCAN1);
HAL_Delay(500); HAL_Delay(500);
} }

Loading…
Cancel
Save