CAFE

한국직업능력교육원

[ARM 실습 101] CAN1, CAN2 LoopBack 동시동작 test(폴링방식)

작성자송명규|작성시간26.06.22|조회수15 목록 댓글 0

/ 필터 설정 (모든 메시지 수신 허용)
// CAN 필터 설정 함수
void CAN2_Filter_Config(void)
{
   // CAN_FilterTypeDef sFilterConfig;
    CAN_FilterTypeDef song;


    song.FilterBank = 14;  // CAN2는 14번 이상을 사용 == 요게 매우 중요함
    song.FilterMode = CAN_FILTERMODE_IDMASK;
    song.FilterScale = CAN_FILTERSCALE_32BIT;
    song.FilterIdHigh = 0x0000;
    song.FilterIdLow = 0x0000;
    song.FilterMaskIdHigh = 0x0000;
    song.FilterMaskIdLow = 0x0000;
    song.FilterFIFOAssignment = CAN_FILTER_FIFO0;
    song.FilterActivation = ENABLE;
    song.SlaveStartFilterBank = 14;

   // HAL_CAN_ConfigFilter(&hcan2,  &song);

    if (HAL_CAN_ConfigFilter(&hcan2, &song) != HAL_OK)
    {
        Error_Handler();
    }
}

// // 메시전송
void CAN2_Tx(void)
{
 // 송신 세팅
 TxHeader.DLC = 8;
 TxHeader.StdId = 0x321;
 TxHeader.IDE = CAN_ID_STD;
 TxHeader.RTR = CAN_RTR_DATA;
 uint32_t TxMailbox;


  if (HAL_CAN_AddTxMessage(&hcan2, &TxHeader, TxData,  &TxMailbox) != HAL_OK)
    {
        Error_Handler();
        printf("tx error\r\n");
    }
  else printf("CAN2 TX OK\r\n");
}

// // 메시지 수신
void CAN2_Rx(void)
{
    if (HAL_CAN_GetRxFifoFillLevel(&hcan2, CAN_RX_FIFO0) > 0)
    {
        if (HAL_CAN_GetRxMessage(&hcan2, CAN_RX_FIFO0, &RxHeader, RxData) == HAL_OK)
        {      
         printf("Can2 Rx = %s\r\n", RxData);
        }
    }
}



다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼