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

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

[复制链接]
jundao721 发布时间:2026-5-25 15:58
收到板卡,已经迫不及待的等待功能测试。板卡上电如图1所示:; J! i0 Q% v: y5 e; {, i7 j/ A
1-1.jpg
( P2 e1 H9 M) Q0 V0 T+ Z图1
3 M: Z  z$ d4 Y9 _$ |0 Y$ ]6 A
$ [7 V1 e" n; M4 @从U3C5的datasheet上可以看出,是支持2路FDCAN的,截图如图2所示:
$ [( ]6 c: C* ^" u& Y  z% d8 T 1-2.png * d' ?& j3 E" M6 Q. u
图2" k: B! k1 g7 Q* s

: x6 \# ?+ G$ p; O- _原理图如图3所示:$ U2 R; i- U* e: X& Q" `
1-3.png 5 M" w" i$ P) `% p% X, m* z
图3
0 `  x3 q# N1 F" E; E
; e! Z" a& m4 T1 i! k了解了其基本性能后,还是从STM32CubeMx 配置开始,首先配置时钟,如图4所示:
/ K8 M, O0 {6 P1 L; j" _- s 1-4.png 8 T- J( f3 T7 y6 F5 H
图4" F; ^4 m  F! T8 x" u% q: n

: f  B  j6 i0 x" t( I0 o配置FDCAN 引脚,如图5所示:; [1 I1 {* J$ t" ^  J
1-5.png
. e* e3 I1 p4 k5 V: O- M图5
  B* b7 `& D; g! Z
% b1 p% k: R% L7 C# |配置FDCAN的Mode 和 Configuration,先配置为2Mbps,如图6所示:+ C) g) U3 W" Y! c3 e
1-6.png
6 S0 a8 q& W% v* N6 |" K/ b. c图6
/ a3 R# o) `; m" X
  l: m! ~+ Q) U/ H- u! VMCU最大支持96MHz,从时钟配置上可以清晰看到。FDCAN也是96MHz, 按照FDCAN的配置,配置通信速度为4Mbps,数值可以配置为整数。如果配置为5M,只能配置接近,所以通信速度暂时配置为4Mbps,作为测试速度,如图7:! Z( H, T( C5 o# E
1-7.png
6 X5 d4 m* A# Q5 ^  z# G图7
- N7 F8 n, s8 V4 e+ @& E3 F( l% d  e/ u: @9 k- X
在VS Code中打开项目,需要增加一个FDCAN configure 函数,如下代码所示:
* I- Q: U! u5 B  A$ \5 F0 V
  1. /* Configure global filter:8 D4 H1 ]' i$ o4 D0 n
  2.      Filter all remote frames with STD and EXT ID) a0 _% p# O. s& a3 z% j- y- r( h
  3.      Reject non matching frames with STD ID and EXT ID */
    4 F3 O  z  z1 O7 W3 J* U/ P
  4.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)* O; o3 Z: p% x8 b# n( m7 K$ j: }7 `
  5.   {
    / ]0 h# J) F% U6 A0 E* Z( a
  6.     Error_Handler();
    ! A* @6 m4 h& r) |0 B
  7.   }$ K, {1 c( i, x1 C" f
  8. 2 _. c% d: j. J  I
  9.   /* Start the FDCAN module */
      y3 Z3 S  P* t. k( y3 c
  10.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)- C# m/ p, H3 B0 Z$ e
  11.   {
    & `* N1 Z9 q+ U
  12.     Error_Handler();
    8 w0 P; x( J; \) d; g: m0 {" }
  13.   }
    8 K) s  I. F; U* o, w0 W, G

  14. 1 t% x% E* W/ q' |9 k/ X
  15.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)2 G0 E! R  O/ [/ y* p# `
  16.   {
    # }5 Y3 H0 r2 ^( \0 @. M
  17.     Error_Handler();
    + G  [4 W  e& Z' L( B
  18.   }: g* L/ J1 R( }. T; f: P/ z6 q
  19. 9 B" m2 H$ P7 c) l
  20.   /* Prepare Tx Header */3 r$ F. G' P7 v/ _& ~
  21.   TxHeader.Identifier = 0x321;
    / y+ \6 h; Y5 i9 ~! ~/ s9 `
  22.   TxHeader.IdType = FDCAN_STANDARD_ID;. p9 h" y. c3 G" X) M; l/ t
  23.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;
    5 }! i( o1 \* ~  p8 ]
  24.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;
    : f3 A" t/ Q, ?- j5 K! N/ w
  25.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
    ! _6 T7 z( Y4 X, m9 h2 J) F: b
  26.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;& v, v9 {  J4 N- t+ g) g
  27.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;4 h8 G& L: f# s6 e
  28.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
    5 i9 w# n. Z6 _3 ]$ |- ?# f
  29.   TxHeader.MessageMarker = 0;
复制代码

/ H9 ]$ |6 V9 k" z: z需要添加接收Callback 函数,如下代码所示:$ F% `0 n% y5 F! I/ v% ]
  1. void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs)* G! E; N% b0 s3 B
  2. {
    6 H  i0 z8 X- x# x
  3.   if ((RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) != 0U)$ ^6 _/ R5 z# H% r# R
  4.   {
    3 J- ~6 m5 U) Q5 L4 Y  s
  5.     /* Retrieve Rx messages from RX FIFO0 */6 l2 _. ^+ u& g
  6.     if (HAL_FDCAN_GetRxMessage(hfdcan, FDCAN_RX_FIFO0, &RxHeader, RxData) != HAL_OK)# k/ v1 z. K- u6 [. ~1 L2 X
  7.     {
    0 S8 e  ^& `- y  h* g+ b: b
  8.       Error_Handler();
    . }& ~- b# r/ p1 o* Y+ U2 Z
  9.     }
    5 F1 ^3 ~# `& ?0 J; N  h- N9 {
  10.   }9 t& p  u3 f  z8 q) z: C2 Q
  11. }
复制代码
: Y4 Y+ C0 @& }8 f' y2 G
目标是每一秒发送一帧64字节的数据,接收来自于上位机终端发送的64字节数据。. N( D. `, R. A& `/ e
上位机接收到数据如图8所示:3 O6 E* f5 j# F9 M/ i4 `8 `  O7 V
1-8.png
5 |; J& A! N5 l, N$ u% ?0 ]& I1 N- V: Z图8
, J( ]- \' _0 {2 d8 k
) j9 r( ]7 e* }) `' X; n$ C1 w7 `% jMCU接收到RxBuf的数据如图9所示:% V2 l, J; ^; g" g% j9 G! d: ]
1-9.png
& |# U0 M& n( I- q. M图9
/ r0 n# z3 ?+ }' a从当前测试来看,收发数据正常,无数据丢失,满足初期测试要求。
8 V. O' A9 E; ]# A, ~9 M9 X# C5 M: y6 B+ h
赞 收藏 评论0 发布时间:2026-5-25 15:58

举报

0个回答

所属标签

相似技术帖

官网相关资源

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