update can protocol

This commit is contained in:
2022-06-21 11:34:45 +02:00
parent 2d99902346
commit 8521a34897
8 changed files with 43 additions and 47 deletions

View File

@ -50,12 +50,11 @@
//=================================================================================================
#define CAND_SHIFT 0x0 // Shift address space (0-3)
#define CAND_BOARD_GROUP 0x03 // Board group (0-127 / 0x00-0x7F)
#define CAND_PRIVATE 1
#define CAND_PUBLIC 0
#define MASTER_ID ((CAND_SHIFT<<6) | 0x0000)
#define MASTER_ID ((CAND_SHIFT<<8) | 0x0000)
//=================================================================================================
// Section: MACROS
@ -82,14 +81,27 @@
//=================================================================================================
CAND_pfnRxCallback m_pfnRxCallback = NULL;
CAN_FilterTypeDef stFilter = {
(CAND_SHIFT<<6)|(CAND_PUBLIC<<5)|(CAND_BOARD_GROUP<<1), // FilterIdHigh
0x00, // FilterIdLow
(CAND_SHIFT<<6)|(CAND_PRIVATE<<5)|(CAND_BOARD_GROUP<<1), // FilterMaskIdHigh
0x00, // FilterMaskIdLow
CAN_FilterTypeDef stFilter_public = {
(CAND_SHIFT<<6)|(CAND_PUBLIC<<5), // FilterIdHigh
0x0000, // FilterIdLow
0xC000, // FilterMaskIdHigh
0x0000, // FilterMaskIdLow
CAN_FILTER_FIFO0, // FilterFIFOAssignment
0x00, // FilterBank
CAN_FILTERMODE_IDLIST, // FilterMode
CAN_FILTERMODE_IDMASK, // FilterMode
CAN_FILTERSCALE_32BIT, // FilterScale
CAN_FILTER_ENABLE, // FilterActivation
0x00 // SlaveStartFilterBank
};
CAN_FilterTypeDef stFilter_private = {
(CAND_SHIFT<<6)|(CAND_PRIVATE<<5), // FilterIdHigh
0x0000, // FilterIdLow
0xC1C0, // FilterMaskIdHigh
0x0000, // FilterMaskIdLow
CAN_FILTER_FIFO0, // FilterFIFOAssignment
0x01, // FilterBank
CAN_FILTERMODE_IDMASK, // FilterMode
CAN_FILTERSCALE_32BIT, // FilterScale
CAN_FILTER_ENABLE, // FilterActivation
0x00 // SlaveStartFilterBank
@ -140,12 +152,13 @@ BOOL CAND_boInitializeModule( VOID )
u8BoardId |= DIPO_boGetInput(DIPO_eADR0) << 0;
u8BoardId |= DIPO_boGetInput(DIPO_eADR1) << 1;
u8BoardId |= DIPO_boGetInput(DIPO_eADR2) << 2;
//u8BoardId |= DIPO_boGetInput(DIPO_eADR0) << 3; // TODO: New HW
u8BoardId |= DIPO_boGetInput(DIPO_eADR3) << 3;
stFilter.FilterIdHigh |= u8BoardId >> 3;
stFilter.FilterIdLow |= u8BoardId << 5;
stFilter_private.FilterIdHigh |= u8BoardId >> 3;
stFilter_private.FilterIdLow |= u8BoardId << 5;
boOK &= ( HAL_CAN_ConfigFilter(&hcan1, &stFilter) == HAL_OK ) ? TRUE : FALSE;
boOK &= ( HAL_CAN_ConfigFilter(&hcan1, &stFilter_public) == HAL_OK ) ? TRUE : FALSE;
boOK &= ( HAL_CAN_ConfigFilter(&hcan1, &stFilter_private) == HAL_OK ) ? TRUE : FALSE;
boOK &= ( HAL_CAN_Start(&hcan1) == HAL_OK ) ? TRUE : FALSE;
@ -215,7 +228,8 @@ void HAL_CAN_RxFifo0MsgPendingCallback( CAN_HandleTypeDef *hcan ){
HAL_CAN_GetRxMessage( hcan, CAN_RX_FIFO0, &header, au8Data );
CAND_Message stMessage;
stMessage.u8Typ = (header.Id & 0x030) >> 4;
stMessage.u8Len = header.DLC;
UTIL_vMemCopy( au8Data,stMessage.au8Data,stMessage.u8Len );