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

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

[复制链接]
jundao721 发布时间:2026-5-25 15:58
收到板卡,已经迫不及待的等待功能测试。板卡上电如图1所示:
+ x2 I$ Q/ }& Z$ ~8 X 1-1.jpg
; m5 e/ J- W% f, @图1
7 L9 o" x& ~* K: @; ~
! |% R* E3 v& b2 D6 |+ T从U3C5的datasheet上可以看出,是支持2路FDCAN的,截图如图2所示:
/ t7 a1 k9 W. z, A  F 1-2.png , _  b- F6 E% O( R# t! u2 l' k
图2) |) w7 n6 H. u/ B7 C: `
9 w! ]4 k) E( \
原理图如图3所示:+ x/ Q. r! u5 G, B
1-3.png ! `# }6 L+ W1 n8 E
图3; F( l8 D4 f1 J/ P* I' t: \$ J* f- {
: Y- j; w- L& B
了解了其基本性能后,还是从STM32CubeMx 配置开始,首先配置时钟,如图4所示:' p2 M, n6 m$ {3 T% p
1-4.png
% Q0 ~( v' m) w5 {图4
1 e$ B9 J/ \+ i( t# M" ~
  S. y  X9 N7 I) P! f+ D4 @7 A7 _* Y3 {配置FDCAN 引脚,如图5所示:
3 h3 W2 s4 r& G$ Q, P- \: T1 N 1-5.png
2 b- x; g. i; m$ U+ g" l- K图5
6 m8 M% u3 `" r& T9 `: f# U6 y5 ]1 G6 i7 j2 B3 D3 d  n, r
配置FDCAN的Mode 和 Configuration,先配置为2Mbps,如图6所示:
2 G8 E* |) Z6 Q1 X1 D( D9 M  s 1-6.png
/ l  f1 n; V& q图6
+ n- `1 {7 ?! q; X3 |. e! d
1 Q9 v! ]  M% J& \! UMCU最大支持96MHz,从时钟配置上可以清晰看到。FDCAN也是96MHz, 按照FDCAN的配置,配置通信速度为4Mbps,数值可以配置为整数。如果配置为5M,只能配置接近,所以通信速度暂时配置为4Mbps,作为测试速度,如图7:
3 m+ q4 A! `5 @' d8 G# ^  E& | 1-7.png - b" r. P+ F2 {/ @+ T- E: E% k
图7
4 k& r5 y2 g1 o( T9 N6 s! f4 d7 C/ ^2 x
在VS Code中打开项目,需要增加一个FDCAN configure 函数,如下代码所示:
( E8 m. }7 R0 H$ c
  1. /* Configure global filter:0 U' U" m' G  P4 v* m
  2.      Filter all remote frames with STD and EXT ID
    7 y9 O6 V5 Q" Z( g+ S& u& ]
  3.      Reject non matching frames with STD ID and EXT ID */0 n  T0 f' i& ^9 \
  4.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)/ |- Z# C/ N/ j* h! z8 c1 R" u
  5.   {
    " M! E* _% a- k" u& y7 |* `  `/ z
  6.     Error_Handler();$ x$ D: @& C2 K* q+ a: ^
  7.   }" P! h1 {/ I  K1 t8 O- l* E( X7 \4 F
  8. & f! k( w% ~5 H' L
  9.   /* Start the FDCAN module */  P7 x/ Y- A/ `
  10.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
    . Q1 p+ K3 s5 \8 ^& _: X
  11.   {
    , V5 }& }  R$ t: p
  12.     Error_Handler();
    . [! P; ^- b: E/ h6 H) }9 p
  13.   }: v: Z4 J( @' ]0 G( V. S

  14. , v& e# r! }" O& N! y
  15.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK). q  P- q% |2 J/ Q; @
  16.   {3 s) Z( v$ X' \: q& s* y/ i! G
  17.     Error_Handler();
    9 D% U6 u& d; L' ]
  18.   }
    4 a2 ~- X8 K- N' p% _5 }+ O

  19. 4 ~$ d+ [; e8 J3 a# |0 l
  20.   /* Prepare Tx Header */. C2 Y8 M# ~  I+ {$ o) q
  21.   TxHeader.Identifier = 0x321;
    ; D+ X4 n: _* s. j$ C
  22.   TxHeader.IdType = FDCAN_STANDARD_ID;
      V: F9 Z2 X3 h+ d) q- |4 c- |! t
  23.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;% B1 i( @4 B* L( ^0 Y  J- N  Z
  24.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;
    3 m# }/ V8 P; l# h
  25.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;& d. c# ], m: D1 b
  26.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;8 k( B" G$ y: g
  27.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;1 I* @+ e4 m5 R0 Z# U/ L% Y: Q
  28.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;5 v/ |) {2 b! d( e! w
  29.   TxHeader.MessageMarker = 0;
复制代码
1 w% P% U2 v. \" q
需要添加接收Callback 函数,如下代码所示:# p4 v- l2 {6 f; o
  1. void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs)
    3 e1 V1 P/ E( `! d* l' B% ~: f
  2. {
    7 b1 A8 l, R& C& O% _1 p* i
  3.   if ((RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) != 0U)  [2 {& l- K9 p/ U2 V
  4.   {0 ~+ Z5 w1 w* Y4 Q- L/ Y" P
  5.     /* Retrieve Rx messages from RX FIFO0 */* I  C0 R8 ^9 R% A5 m. m2 Z
  6.     if (HAL_FDCAN_GetRxMessage(hfdcan, FDCAN_RX_FIFO0, &RxHeader, RxData) != HAL_OK)
    : e& n! h0 i) o9 g- O
  7.     {4 |, |! n3 m) r' I% f* {
  8.       Error_Handler();( W+ x  j* U" d. [
  9.     }
    6 U9 A7 W; X% ~" s
  10.   }
    & |$ e0 N$ t! N/ J
  11. }
复制代码

7 X2 i0 E- x( X$ l# O目标是每一秒发送一帧64字节的数据,接收来自于上位机终端发送的64字节数据。4 m" r) T  N, @) D0 o
上位机接收到数据如图8所示:. Z3 t% i/ p# x$ {
1-8.png 8 n9 Y5 v  u: h/ [
图8
8 j; H$ A' \, M/ X# \1 X. I, `
/ L# l& P: c( [6 y: z) x( i* {MCU接收到RxBuf的数据如图9所示:, H2 g- r* n: X4 b- W
1-9.png 0 u6 f4 }" e$ ]0 W" I. T
图91 Q4 `# n5 p" ^
从当前测试来看,收发数据正常,无数据丢失,满足初期测试要求。
% o- ?" w) X7 t! \$ X
! M1 ?1 K6 r5 K9 ^6 T
赞 收藏 评论0 发布时间:2026-5-25 15:58

举报

0个回答

所属标签

相似技术帖

官网相关资源

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