STM32 F4 CANBUS communication issue
Hello,
I am trying to program Can Bus protocol with two stm32 boards. I used MCP2551 and VP230 can transiciever but both of them doesnt work or my code doesnt work I dont know. I am programming normal mode. My purpose is when press the any button of boards the other board read the data of button interrupt and blink the led. This is for beginning. I am in progress of learning Can Bus protocol and this problem destroy me please help me :)
Here is my code
/* USER CODE BEGIN 0 */
CAN_TxHeaderTypeDef pHeader;
CAN_RxHeaderTypeDef pRxHeader;
CAN_FilterTypeDef sFilterConfig;
uint32_t pTxMailbox;
uint8_t count=0;
uint8_t rcount=0;
/* USER CODE END 0 */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_CAN1_Init();
/* USER CODE BEGIN 2 */
HAL_CAN_Start(&hcan1);
// Activate Interrupts
HAL_CAN_ActivateNotification(&hcan1,CAN_IT_RX_FIFO0_MSG_PENDING);
// set transmit parameteres
pHeader.DLC = 1;
pHeader.IDE = CAN_ID_STD;
pHeader.RTR = CAN_RTR_DATA;
pHeader.StdId = 0x0155;
// Set Filter Parameters
sFilterConfig.FilterActivation = ENABLE;
sFilterConfig.FilterBank = 0 ; // tekli kullanimda 0-13 arasi deger alir ikili kullanimda 0-27 arası
sFilterConfig.FilterFIFOAssignment=CAN_FILTER_FIFO0; // filtre hangi fifoya girecek
sFilterConfig.FilterIdHigh = 0x0000;
sFilterConfig.FilterIdLow = 0x0000 ;
sFilterConfig.FilterMaskIdHigh=0x000;
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; // hangi filtre modu
sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig);
/* USER CODE END 2 */
This section is interrupt file in SRC
oid EXTI0_IRQHandler(void)
{
/* USER CODE BEGIN EXTI0_IRQn 0 */
/* USER CODE END EXTI0_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
/* USER CODE BEGIN EXTI0_IRQn 1 */
if(GPIO_PIN_0==GPIO_PIN_0)
{
count++;
HAL_CAN_AddTxMessage(&hcan1,&pHeader,&count,&pTxMailbox);
}
/* USER CODE END EXTI0_IRQn 1 */
}
/**
* @brief This function handles CAN1 RX0 interrupts.
*/
void CAN1_RX0_IRQHandler(void)
{
/* USER CODE BEGIN CAN1_RX0_IRQn 0 */
/* USER CODE END CAN1_RX0_IRQn 0 */
HAL_CAN_IRQHandler(&hcan1);
/* USER CODE BEGIN CAN1_RX0_IRQn 1 */
HAL_CAN_GetRxMessage(&hcan1,CAN_RX_FIFO0,&pRxHeader,&rcount);
GPIOD->ODR = rcount << 12;
/* USER CODE END CAN1_RX0_IRQn 1 */
}


