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 );

View File

@ -40,7 +40,9 @@ extern "C" {
// Description: Definition of global constants (visible by all modules).
//=================================================================================================
#define MESSAGE_TYPE_WRITE 2
#define MESSAGE_TYPE_READ 1
#define MESSAGE_TYPE_COMMAND 0
//=================================================================================================
// Section: MACROS
@ -64,6 +66,7 @@ extern "C" {
typedef struct {
U8 au8Data[8];
U8 u8Len;
U8 u8Type;
} CAND_Message;
// callback functions

View File

@ -99,7 +99,7 @@ LOCAL CONST StDigitalIO m_astInputs[DIPO_eInNumberOfInputs] =
{
{ GPIOB, { GPIO_PIN_7, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_FREQ_MEDIUM, 0 }, FALSE, TRUE }, // 00 DIPO_ePG
{ GPIOC, { GPIO_PIN_15, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_FREQ_MEDIUM, 0 }, FALSE, TRUE }, // 01 DIPO_eADR2
{ GPIOC, { GPIO_PIN_15, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_FREQ_MEDIUM, 0 }, FALSE, TRUE }, // 01 DIPO_eADR3
{ GPIOB, { GPIO_PIN_4, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_FREQ_MEDIUM, 0 }, FALSE, TRUE }, // 01 DIPO_eADR2
{ GPIOB, { GPIO_PIN_3, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_FREQ_MEDIUM, 0 }, FALSE, TRUE }, // 02 DIPO_eADR1
{ GPIOA, { GPIO_PIN_15, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_FREQ_MEDIUM, 0 }, FALSE, TRUE }, // 03 DIPO_eADR0

View File

@ -173,7 +173,8 @@ U32 vFindNextFreePointer( void ){
}
if( u32Pointer >= USERFLASHSIZE ){
u32Pointer = 1;
break;
}
}
return u32Pointer;