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

【STM32U3 评测】1. FDCAN高速通讯验证

[复制链接]
jundao721 发布时间:2026-5-25 15:58
收到板卡,已经迫不及待的等待功能测试。板卡上电如图1所示:, B1 c: e2 l& m7 ?- ]+ T
1-1.jpg
4 {( t4 D$ r/ ]; I" Y图1
; ?8 R  `/ ~5 w" T  y8 l* W& c
- c, Q- p+ A$ G1 z% w6 r从U3C5的datasheet上可以看出,是支持2路FDCAN的,截图如图2所示:
  I/ }5 H! h# j# s) r1 q; U6 m 1-2.png # Z- X. h- F8 @6 y  [3 `
图2, x; q$ u- e) k- v: ~

3 h6 H" n- p0 E) w% m1 }8 Y原理图如图3所示:( o/ u3 P1 r, O, c; }4 b
1-3.png ' O& W% M2 Q. Z$ R; v6 k# ~  t
图3
, c' R3 \$ H& A1 z
7 `! [2 j! @; c$ f了解了其基本性能后,还是从STM32CubeMx 配置开始,首先配置时钟,如图4所示:' W. B+ N' ]: \7 T: x- a  U
1-4.png
$ D: y$ p! q0 V7 g9 s* H/ S3 E% D; T图4
2 ~" w( Q9 D( ~2 Y& L4 z4 W/ G( W
配置FDCAN 引脚,如图5所示:
  v1 |; ], \; w4 G% [; u 1-5.png
1 Q3 \1 t2 [  ?% D7 p" T8 x图5+ D: A- V; y/ G+ p0 S. G% ~  b
( b; @  R  X+ f& x/ L
配置FDCAN的Mode 和 Configuration,先配置为2Mbps,如图6所示:
) L* q1 H9 s0 @ 1-6.png
( F4 ^) V4 j9 [3 i$ c* h/ N图6$ j0 Q2 _3 U3 S
2 a" i8 y6 s8 y6 t$ j' _! P2 V& L
MCU最大支持96MHz,从时钟配置上可以清晰看到。FDCAN也是96MHz, 按照FDCAN的配置,配置通信速度为4Mbps,数值可以配置为整数。如果配置为5M,只能配置接近,所以通信速度暂时配置为4Mbps,作为测试速度,如图7:3 D" G+ j7 c* k! P" r" R5 K) x1 ?
1-7.png
+ o1 Z- U" I" @$ I6 h+ p图75 l9 L/ C) x5 h! [% T2 P

. A/ `4 f" m5 Q7 D' Q  J在VS Code中打开项目,需要增加一个FDCAN configure 函数,如下代码所示:
' E' i- R3 r  V
  1. /* Configure global filter:
    ; t) M4 P/ E: v9 ]2 |  i
  2.      Filter all remote frames with STD and EXT ID
    # P% S- Y+ q5 \0 [2 ^( {* D8 h
  3.      Reject non matching frames with STD ID and EXT ID */
    4 ?  V0 w7 U& j% }$ D7 H7 R- k% d
  4.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
    * `& P+ Z1 X& ?, U; Q
  5.   {2 W& y6 X8 d. I: r
  6.     Error_Handler();" B2 `7 G: U' z* p, \6 H! r
  7.   }0 s/ C# K7 f; h6 v% P

  8. 4 P3 Z( j8 R$ T# `) |
  9.   /* Start the FDCAN module */
    # i* ^; M6 {. v! Y' @0 y& f* O
  10.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)2 b* F( ]! @" D' h8 a( [" J
  11.   {4 L) M; w/ _  N: }) c, B/ w4 @! ^
  12.     Error_Handler();
    : o/ O% O& {) m) f! J
  13.   }8 s9 S* u" e! A& f- p
  14. * J3 S* B& l  f1 V
  15.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    . A- P: y5 z1 c! L; W5 p
  16.   {
      ?. w- g7 ^% V+ o% t
  17.     Error_Handler();
    - N6 h( S- g8 Q
  18.   }1 K0 v" t. j( Z! u

  19. / m0 V' r" ?3 z" Z- H0 Z
  20.   /* Prepare Tx Header *// p& D3 T% b# r6 A, k
  21.   TxHeader.Identifier = 0x321;; a" |% v( N9 \4 }1 l
  22.   TxHeader.IdType = FDCAN_STANDARD_ID;
      t+ o% b$ [$ k. B0 }, {4 b7 V0 Q
  23.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;
    8 ~9 ]4 n' b* q1 R- i
  24.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;3 |8 B9 `' n$ }6 g/ H$ X
  25.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;+ [. ]: p; j' T
  26.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;/ J; x8 a! ~* m* A# x4 F3 i4 G
  27.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;7 F2 I- y+ F# @
  28.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;7 O1 c' S  d* F1 j
  29.   TxHeader.MessageMarker = 0;
复制代码
- W2 q* ]! {9 P( ~3 v* Q) H8 h
需要添加接收Callback 函数,如下代码所示:8 c& r' ]1 R! k( m/ |& {1 Q
  1. void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs)
    ! D3 U. r9 _! q; f  |
  2. {& ?: v. f6 T: q1 q3 \9 t" H: Y( {! C
  3.   if ((RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) != 0U)  e7 X7 k0 ]' L
  4.   {, t/ s+ ^( [4 c) q1 ]
  5.     /* Retrieve Rx messages from RX FIFO0 */4 t0 n  ]6 |; \
  6.     if (HAL_FDCAN_GetRxMessage(hfdcan, FDCAN_RX_FIFO0, &RxHeader, RxData) != HAL_OK)
    ' t; P" z+ y6 `
  7.     {
    6 F# p! l5 i2 e* b+ S( p
  8.       Error_Handler();9 l; a3 O$ _& S; G  G& A
  9.     }; e& P7 ]+ S6 U3 ]9 s5 T$ L! D5 k
  10.   }; |) k! P; z- z2 b" k9 G
  11. }
复制代码

; }: C, w7 b0 i% o3 `$ N% }' ^目标是每一秒发送一帧64字节的数据,接收来自于上位机终端发送的64字节数据。5 E; m+ D) P3 ?. t% N& Z
上位机接收到数据如图8所示:- y; X# z! ^$ u
1-8.png " k* L" X& W' U- z0 d
图8
+ L- A) V+ E! m9 G
/ k! ^. v- j+ k$ W0 A4 bMCU接收到RxBuf的数据如图9所示:# P2 Q# e' p$ E1 ]
1-9.png 2 r7 N; r1 ]4 O% R
图9+ h& ]: g/ I( q1 T+ |1 X
从当前测试来看,收发数据正常,无数据丢失,满足初期测试要求。
) [$ G/ u( T) A3 t" Z
# ^5 \( l/ X' X6 _8 X
赞 收藏 评论0 发布时间:2026-5-25 15:58

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版