你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-H533RE评测】1.FDCAN 通讯测试

[复制链接]
jundao721 发布时间:2024-7-1 23:14

      收到板卡,先点个灯,没什么问题就进入正式测试阶段。仔细阅读H533的Datasheet,是一款资源很丰富的MCU,发现其有两个FDCAN接口,这样就丰富了板卡通讯。这种总线通信方式当前使用的比较多,就先测试下这个外设功能。
    首先搭建测试硬件条件,使用板卡上的PB12和PB13作为通讯接口,连接到TJA1044 驱动芯片板卡上,按照datasheet对应上即可。如图1所示:
5.jpg

图1

1.JPG

图2

    然后是使用Cubemx软件对MCU的时钟,外设等进行配置,并生成所需要的项目框架。时钟配置如图3所示:
6.JPG

图3
    FDCAN的时钟使用24M,不倍频,波特率为1Mbps,数据波特率为2Mbps,外设的配置如图4所示:
7.JPG

图4
    使用板载的LED作为接收数据的指示灯,可在图上进行配置,如图5所示:
8.JPG

图5
    这样配置完后,生成所需要的项目框架。编写接收和发送数据的初始化函数,如下所示:
   
  1. /* Prepare Tx message Header */
  2.   txHeader.Identifier          = Tx_ID;
  3.   txHeader.IdType              = FDCAN_STANDARD_ID;
  4.   txHeader.TxFrameType         = FDCAN_DATA_FRAME;
  5.   txHeader.DataLength          = FDCAN_DLC_BYTES_64;
  6.   txHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
  7.   txHeader.BitRateSwitch       = FDCAN_BRS_ON;
  8.   txHeader.FDFormat            = FDCAN_FD_CAN;
  9.   txHeader.TxEventFifoControl  = FDCAN_NO_TX_EVENTS;
  10.   txHeader.MessageMarker       = 0U;

  11.   /**
  12.     * Configure and enable Tx Delay Compensation, required for BRS mode.
  13.     * TdcOffset default recommended value: DataTimeSeg1 * DataPrescaler
  14.     * TdcFilter default recommended value: 0
  15.     */
  16.   if (HAL_FDCAN_ConfigTxDelayCompensation(&hfdcan2,
  17.                                           (hfdcan2.Init.DataPrescaler * hfdcan2.Init.DataTimeSeg1), 0U) != HAL_OK)
  18.   {
  19.     Error_Handler();
  20.   }

  21.   if (HAL_FDCAN_EnableTxDelayCompensation(&hfdcan2) != HAL_OK)
  22.   {
  23.     Error_Handler();
  24.   }

  25.   /* Start FDCAN controller */
  26.   if (HAL_FDCAN_Start(&hfdcan2) != HAL_OK)
  27.   {
  28.     Error_Handler();
  29.   }
复制代码
  1. void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs)
  2. {
  3.   if ((RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) != 0U)
  4.   {
  5.     /* Retrieve Rx messages from RX FIFO0 */
  6.     if (HAL_FDCAN_GetRxMessage(hfdcan, FDCAN_RX_FIFO0, &rxHeader, rxData) != HAL_OK)
  7.     {
  8.       Error_Handler();
  9.     }

  10.     /* Compare received RX message to expected data. Ignore if not matching. */
  11.     if ((rxHeader.Identifier == Rx_ID) &&
  12.         (rxHeader.IdType     == FDCAN_STANDARD_ID) &&
  13.         (rxHeader.DataLength == FDCAN_DLC_BYTES_64))
  14.     {

  15.                 HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);
  16.     }
  17.   }
  18. }
复制代码
  1. if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan2, &txHeader, txData) != HAL_OK)
  2.     {
  3.       Error_Handler();
  4.     }

  5.     /* Delay for simple button debounce */
  6.     HAL_Delay(1000U);
复制代码
2.JPG
3.JPG
收藏 评论0 发布时间:2024-7-1 23:14

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版