这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【STM32H750】1、CAN驱动

共6条 1/1 1 跳转至

【STM32H750】1、CAN驱动

助工
2024-10-14 20:53:05     打赏

【前言】

【STM32F373】1、CAN驱动-电子产品世界论坛 (eepw.com.cn)

这一篇我分享了F373的CAN驱动,为了实现上位机,STM32H750板载了FDCAN,但是为了匹配也配置为普通的CAN来驱动,实现与STM32F373的互相通信。

【CAN的配置】

从原理图上找到开发板上使用FDCAN1外接IO为PB8、PB9。

image.png

因此配置FDCAN1如下:

image.png

参数配置如下:

image.png

从图形化配置中我们可以看到通为500K与F373的CAN总线速度一致。

同时开启RX0的接收中断。

image.png

【配置过滤器】

如下的配置,接收所有的ID

    //配置RX滤波器   
    FDCAN1_RXFilter.IdType=FDCAN_STANDARD_ID;                       //标准ID
    FDCAN1_RXFilter.FilterIndex=0;                                  //滤波器索引                   
    FDCAN1_RXFilter.FilterType=FDCAN_FILTER_MASK;                   //滤波器类型
    FDCAN1_RXFilter.FilterConfig=FDCAN_FILTER_TO_RXFIFO0;           //过滤器0关联到FIFO0  
    FDCAN1_RXFilter.FilterID1=0x0000;                               //32位ID
    FDCAN1_RXFilter.FilterID2=0x0000;                               //如果FDCAN配置为传统模式的话,这里是32位掩码
    if(HAL_FDCAN_ConfigFilter(&hfdcan1,&FDCAN1_RXFilter)!=HAL_OK) //滤波器初始化
		{
			Error_Handler();
		}
    HAL_FDCAN_Start(&hfdcan1);                               //开启FDCAN
    HAL_FDCAN_ActivateNotification(&hfdcan1,FDCAN_IT_RX_FIFO0_NEW_MESSAGE,0);

编写收到数据的中断回调函数如下:

void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs)
{
	int i;
  if((RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) != RESET)
  {

		printf("recv data\r\n");
      HAL_FDCAN_GetRxMessage(&hfdcan1, FDCAN_RX_FIFO0, &fdcan1_RxHeader, RxData);

		printf("recv data:%d data:",fdcan1_RxHeader.DataLength);
		for(i=0;i<fdcan1_RxHeader.DataLength; i++)
		{
			printf("0x%02x ",RxData[i]);
		}
		printf("\r\n");
  }
}

【测试】

在任务函数中定时发送数据:

void StartDefaultTask(void *argument)
{
  /* USER CODE BEGIN StartDefaultTask */
  /* Infinite loop */
	uint8_t msg[2]={0x01,0xff};
  for(;;)
  {
		HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
    osDelay(500);
		FDCAN1_Send_Msg(msg,2);
  }
  /* USER CODE END StartDefaultTask */
}

打开CAN分析仪,可以自动匹配到500K的CAN总线,同时接收到数据:

image.png

发送数据后,可以在串口中看到接收的数据是对的:

image.png

【总结】

此次为FDCAN作为普通CAN来使用,可以成功的完成了发送与接收的测试。





关键词: STM32H750     FDCAN    

专家
2024-10-15 01:02:09     打赏
2楼

谢谢分享


专家
2024-10-15 08:32:51     打赏
3楼

谢谢分享


专家
2024-10-15 08:46:38     打赏
4楼

感谢分享


工程师
2024-10-15 09:18:58     打赏
5楼

666


院士
2024-10-15 10:12:08     打赏
6楼

FD-CAN向下兼容的优势呀~~


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]