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

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

[复制链接]
jundao721 发布时间:2026-5-25 15:58
收到板卡,已经迫不及待的等待功能测试。板卡上电如图1所示:& I* |% h$ W! k) ~* q
1-1.jpg
7 D9 ?; ?! @# r3 x& v, Q4 y1 l图1/ C: W3 \: x* b% [5 O/ J. Z. v
$ L1 P& {3 ?0 e; w, w2 q& A
从U3C5的datasheet上可以看出,是支持2路FDCAN的,截图如图2所示:
5 o. o" n6 D5 Y: T" t+ S3 L 1-2.png 4 i' F, N" x; q. i6 S
图2
! }# q3 o( B& y7 o7 T
6 M& z1 s4 z, r) q原理图如图3所示:) ?6 n1 A+ P% `* a$ _! {
1-3.png
, Q, A3 ?1 a# Y8 D" h. G+ [图3. p8 R* V+ D4 o: ~! o4 c( h% J
9 }' S/ j  s# P% O
了解了其基本性能后,还是从STM32CubeMx 配置开始,首先配置时钟,如图4所示:: C6 F0 I$ ^5 U/ D2 M
1-4.png
* @$ x2 H8 k& g' ]6 `图4
1 x' B& k" R9 t4 i
5 h6 ?- E: p# j- Q$ V配置FDCAN 引脚,如图5所示:
5 a4 t$ Z, s/ ` 1-5.png
  c3 q7 f( O5 H% k  E- n( l: E图5( J8 c6 \1 u: E0 x- {
3 `1 U6 w; |/ a7 y: L9 D3 V
配置FDCAN的Mode 和 Configuration,先配置为2Mbps,如图6所示:
0 O# T% x6 N1 d! G  w 1-6.png
8 N+ I, p; X0 @6 B* N图60 I. B3 e; U' @' i4 X
& e" ^9 j4 l- W* ^, r
MCU最大支持96MHz,从时钟配置上可以清晰看到。FDCAN也是96MHz, 按照FDCAN的配置,配置通信速度为4Mbps,数值可以配置为整数。如果配置为5M,只能配置接近,所以通信速度暂时配置为4Mbps,作为测试速度,如图7:
3 @  q& D! Z# f: ^. \. @# A( H0 { 1-7.png
- G5 j) N' a# B# A0 {图7+ z: ?0 h  A- e. }: @" ^0 P8 J

- i, N$ |6 ]2 z* C, a在VS Code中打开项目,需要增加一个FDCAN configure 函数,如下代码所示:
# J' k1 a: y3 C% Z) w  w2 t. F: s. x3 N
  1. /* Configure global filter:( {# u" m8 X& j( t0 j
  2.      Filter all remote frames with STD and EXT ID& I/ K) `- `* R0 ~7 r. l
  3.      Reject non matching frames with STD ID and EXT ID */- e2 B8 E$ R( k" R' F  \
  4.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK); ?6 W1 y* E' P8 H4 b
  5.   {5 Z$ ~% \4 z/ c' `% @  ~' I
  6.     Error_Handler();7 J+ d8 P: i4 R4 _; |
  7.   }) g7 [, F% l% M

  8. - L  O7 G1 G3 Z1 B
  9.   /* Start the FDCAN module */
    9 [1 ^% ~  F6 b- }: C
  10.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
    2 w3 \4 {, W+ C' ]. [% o
  11.   {
    9 d9 ]+ \3 M  H% R9 R8 [! J
  12.     Error_Handler();% T0 Y) ]5 A$ U& v) f5 g
  13.   }/ e& m8 L; S! Z. B2 ^2 e1 M$ ]

  14. . \$ l' C. X6 b; ]/ E+ m/ J
  15.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK). }  }# M6 Q* o; S2 `4 ]
  16.   {' Z  a$ t$ r0 i. s" U$ y" g+ M
  17.     Error_Handler();
    3 A8 y% J' K* m: m( c% L7 L0 w0 U1 I
  18.   }
    ! O+ s6 |* s& f4 A0 i
  19. / x) k, P. i9 L- K/ I+ }
  20.   /* Prepare Tx Header */& g4 c( ?' _& A5 v( ]% [, @9 E
  21.   TxHeader.Identifier = 0x321;2 G" u/ @1 W9 G! h
  22.   TxHeader.IdType = FDCAN_STANDARD_ID;3 s. w" T; e, A8 Z3 X
  23.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;* U1 O7 g4 w+ h8 Q' z# S
  24.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;
    1 k9 {0 L/ v9 G# d! D) s9 x
  25.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;( g8 M, P8 h, P1 V! Q) h
  26.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;
    7 `+ x+ S& {+ E: H; g- l  r+ W
  27.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;
    4 Q" y0 k9 |- I* Z5 m. @# q# Z
  28.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
    3 x+ M  L1 f* |
  29.   TxHeader.MessageMarker = 0;
复制代码
, h! A. p, r8 ?* `2 h7 h
需要添加接收Callback 函数,如下代码所示:$ ?% A8 _4 x' J
  1. void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs); r# G! x9 I! T) h* ?
  2. {
    ' I5 q/ z, @: z: C) q: |8 T
  3.   if ((RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) != 0U)
    $ @) l9 D* p3 A  s
  4.   {
    4 R. [) C; v( V/ G9 R
  5.     /* Retrieve Rx messages from RX FIFO0 */
    $ e0 C4 X- l% E; u& c9 D' D
  6.     if (HAL_FDCAN_GetRxMessage(hfdcan, FDCAN_RX_FIFO0, &RxHeader, RxData) != HAL_OK)
    2 A' d" L# D- N' W2 L
  7.     {  t2 R' z2 h/ V" s( O+ D) [5 T
  8.       Error_Handler();. |* J: t! j% Y- j7 Q
  9.     }
      A1 ]! M! y: D5 ]0 L& k1 r
  10.   }& W" h# V1 \0 g3 [# U
  11. }
复制代码

# b" I# I& q6 t5 s目标是每一秒发送一帧64字节的数据,接收来自于上位机终端发送的64字节数据。
+ t7 a* u) l, W上位机接收到数据如图8所示:
1 s2 s1 L7 H! r, O; w1 x7 ^, V 1-8.png
, s9 L! X4 C% d3 X. B( v& m图8 & i2 |$ d; P; Q2 _$ N* b6 U

$ `5 U; k* Z! h7 o) h, DMCU接收到RxBuf的数据如图9所示:
2 e6 l" J! i* M1 s. K* O 1-9.png
8 Z( j/ H: h5 X: T) P图9. ^' q- u. n, m
从当前测试来看,收发数据正常,无数据丢失,满足初期测试要求。3 T% c# A6 T6 L
8 o- W9 a) d. e
收藏 评论0 发布时间:2026-5-25 15:58

举报

0个回答

所属标签

相似技术帖

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