13 Mayıs 2021, 00:01:46

Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME


STM32F4-Arduino CANBUS İletişimi

Başlatan CmlDrmz, 04 Nisan 2021, 02:32:14

CmlDrmz

Merhabalar, bir projem için STM32F4 DISC kartı ile Arduino Uno'yu CANBUS portu üzerinden haberleştirmem gerekiyor. Bunun için STM tarafında SN65HVD230 kullandım. Arduino tarafında ise MCP2515 modülü kullandım. CANH ve CANL pinleri arasında 120ohm direnç mevcut.Bu durumda Arduino tarafından mesaj iletilmesine rağmen STM nedense TX portundan herhangi bir mesaj gönderemiyor.
CubeIDE'de main dosyasında yaptığım tanımlama kısmı şu şekildedir:
  //Starting CAN
  
HAL_CAN_Start(&hcan1);

  
//Activating Interruption
  
HAL_CAN_ActivateNotification(&hcan1,CAN_IT_RX_FIFO0_MSG_PENDING);

  
//Filter Configuration
  
sFilterConfig.FilterActivation CAN_FILTER_ENABLE;
  
sFilterConfig.FilterBank 0;
  
sFilterConfig.FilterFIFOAssignment CAN_FilterFIFO0;
  
sFilterConfig.FilterIdHigh 0x001F<<5;
  
sFilterConfig.FilterIdLow 0;
  
sFilterConfig.FilterMaskIdHigh 0;
  
sFilterConfig.FilterMaskIdLow 0;
  
sFilterConfig.FilterMode CAN_FILTERMODE_IDLIST;
  
sFilterConfig.FilterScale CAN_FILTERSCALE_32BIT;

  
HAL_CAN_ConfigFilter(&hcan1,&sFilterConfig);

  
//CAN Message Configuration
  
pTxHeader.DLC 1;
  
pTxHeader.IDE CAN_ID_STD;
  
pTxHeader.RTR CAN_RTR_DATA;
  
pTxHeader.StdId 0x001F;
  
pTxHeader.TransmitGlobalTime DISABLE;

  
/* USER CODE END 2 */

Kesmelere girdiği kısım ise şu şekildedir.
void 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(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0))
  {
	
    
tData[0] = 37;
	
	
HAL_CAN_AddTxMessage(&hcan1, &pTxHeader,tData, &pTxMailbox);
	
	
dogrumu HAL_CAN_IsTxMessagePending(&hcan1pTxMailbox);
  }
  
/* 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,&data);
  
HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_12);
  
/* USER CODE END CAN1_RX0_IRQn 1 */
}

STM'in tx pininde tık yok :)

Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.