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

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

[复制链接]
jundao721 发布时间:2026-5-25 15:58
收到板卡,已经迫不及待的等待功能测试。板卡上电如图1所示:
1 b* b) E4 P( L  [8 Z3 e4 E 1-1.jpg 9 Y1 ?9 i# J% M1 V6 r" E
图17 I9 v3 r# l) n: G. I

+ N6 o# j( Z& i! R1 ~( W( u9 W从U3C5的datasheet上可以看出,是支持2路FDCAN的,截图如图2所示:
. E2 ~* W/ i% [+ u8 `, V$ v  i$ n4 p 1-2.png
* P( F: f9 x' c! ?6 {# P图2, c+ L; j  c0 T0 w4 `8 v9 {

7 x/ M: O  o# N+ X原理图如图3所示:! J0 Z; Y4 W, \; U
1-3.png
" o- x* K* C' J3 p6 t5 \- X: G图3
: r3 m! s6 s" T( I3 b0 \0 j+ Y( g: r% c7 o2 j$ x
了解了其基本性能后,还是从STM32CubeMx 配置开始,首先配置时钟,如图4所示:, N7 G0 M% j* N$ X/ K' h0 n
1-4.png + E6 y2 ]0 B9 y6 F$ p  V0 \. M. C
图4; ^; P( P% |4 w6 E
) b% ^- b* d/ N' d+ d# z
配置FDCAN 引脚,如图5所示:
6 k/ g/ e3 o& J  j  c0 s' I' ?2 P 1-5.png , I- [7 F5 Q9 X% R5 Z! W
图5
; R' V+ d0 N. j2 G* b0 R, @+ W1 S! ~5 H
/ L/ A2 A6 h( D3 q! E( j$ {配置FDCAN的Mode 和 Configuration,先配置为2Mbps,如图6所示:
4 Y5 C1 Z$ `$ }) y 1-6.png , [, l; L, R; P: V6 l
图6; y; c; x2 j& B8 _7 E! k

4 `* g# z! k& g! i7 S+ [( A2 ?MCU最大支持96MHz,从时钟配置上可以清晰看到。FDCAN也是96MHz, 按照FDCAN的配置,配置通信速度为4Mbps,数值可以配置为整数。如果配置为5M,只能配置接近,所以通信速度暂时配置为4Mbps,作为测试速度,如图7:/ c' M3 ?( x6 C/ f
1-7.png ( Q9 ]& e- S8 w4 \# ?- A
图78 }) {* E/ y0 |5 A

4 |! y" l# C! u9 H% B" i; y# b在VS Code中打开项目,需要增加一个FDCAN configure 函数,如下代码所示:
$ h( O/ D' d5 v
  1. /* Configure global filter:! k) k, g' y# S5 n8 _' i' T
  2.      Filter all remote frames with STD and EXT ID
    & X9 H1 M  b4 q+ S
  3.      Reject non matching frames with STD ID and EXT ID */
    7 o2 t3 F6 c0 i# \& g3 ~
  4.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)$ z+ Q3 \9 U& l4 A" w
  5.   {8 A0 r# h; i5 y0 |+ v* ^3 g. ^
  6.     Error_Handler();0 a3 H7 }" `6 \7 q, r% R
  7.   }# `  e; Y7 ^5 Y9 ?9 ]4 a' d+ |: r
  8. 5 a( b& t/ E$ \( K$ b4 r+ K
  9.   /* Start the FDCAN module */# e' x" r0 ]) Z# z
  10.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)- d: L* N$ _. L
  11.   {  ?3 l3 o! ?$ Y) E( G8 a' `
  12.     Error_Handler();
    ! _. r! K5 W7 L+ z! I
  13.   }
    $ _8 X+ j$ L" x# f' F( ]

  14. % {% r1 I! K0 p) h' q. S
  15.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)( [" ^  V; ?& u# X& k* S4 ~: P" f$ J; V
  16.   {
    7 T: E" d1 [: d' e! Z' s
  17.     Error_Handler();% a4 `1 z: J: z& T6 H' c; Q
  18.   }
    2 ]4 Y1 q: l* |+ c7 }

  19. * M1 I6 e' u7 p5 }4 O% d" x
  20.   /* Prepare Tx Header */
    ; O+ j7 b# E) r, K  {
  21.   TxHeader.Identifier = 0x321;0 ^* {" A' M- |+ h
  22.   TxHeader.IdType = FDCAN_STANDARD_ID;* Y3 r2 r6 V5 W9 p
  23.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;- I, }; d/ L; ?* ~7 f3 }
  24.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;
    + T* T6 _1 r% s$ d
  25.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;# l9 m; h5 ?) q3 r* R
  26.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;
    $ s4 S! ?5 w5 }: A) v6 k  A
  27.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;1 X) @/ n4 [3 q; Y2 o4 U% r
  28.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;8 Y0 M8 b2 {5 m# P/ |
  29.   TxHeader.MessageMarker = 0;
复制代码
2 ?  }) Y" u2 W' N+ Z0 d! W- g
需要添加接收Callback 函数,如下代码所示:* u6 \* W8 s8 }: W8 ?+ n* S
  1. void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs)
    % E, ~( T8 {: F3 A
  2. {8 s* e2 L& U& z  k  S
  3.   if ((RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) != 0U)
    : a4 a( J8 c* @$ K+ U
  4.   {
    - X& b, [7 k% k  h" J/ o" H. J
  5.     /* Retrieve Rx messages from RX FIFO0 */
    2 b, s4 y: q0 d4 i$ X; n, N6 J
  6.     if (HAL_FDCAN_GetRxMessage(hfdcan, FDCAN_RX_FIFO0, &RxHeader, RxData) != HAL_OK)
    5 I' c, M/ x9 a7 c; a5 S" |( D
  7.     {
    , y. X! @7 |( F! ~
  8.       Error_Handler();
    # a" V0 C) Z; ]- R- }5 {, X
  9.     }
    $ r  Q' G+ x, D- H9 h
  10.   }3 t6 r5 D3 Q) e* s4 R+ \
  11. }
复制代码
- w8 a/ ]6 z7 l" ^- ^) T8 \6 K
目标是每一秒发送一帧64字节的数据,接收来自于上位机终端发送的64字节数据。, o& p' p+ i1 z" F. J9 g9 n
上位机接收到数据如图8所示:0 a% ?) T9 f5 t
1-8.png * B! K9 }" V% V( ?( l5 q
图8
- f7 A' B1 ^2 V* w
: ~. M' R' J  L" S) w0 |+ XMCU接收到RxBuf的数据如图9所示:
; [% A$ w& {. J& W7 t 1-9.png
+ U0 V3 i1 v% F$ d; k图9' Y3 i/ ?- a  R- D* _$ z
从当前测试来看,收发数据正常,无数据丢失,满足初期测试要求。
; @0 o/ {$ B; C8 K1 z  d$ ^/ D) I3 r' f% L
收藏 评论0 发布时间:2026-5-25 15:58

举报

0个回答

所属标签

相似技术帖

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