update can protocol
This commit is contained in:
@ -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 );
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -173,7 +173,8 @@ U32 vFindNextFreePointer( void ){
|
||||
}
|
||||
|
||||
if( u32Pointer >= USERFLASHSIZE ){
|
||||
|
||||
u32Pointer = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return u32Pointer;
|
||||
|
Reference in New Issue
Block a user