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

【STM32U3评测】3.FDCAN通讯

[复制链接]
jundao721 发布时间:2025-5-24 22:27
1 n/ o1 b3 {( J  Q5 K
      本次测试FDCAN通讯,STM32U3是带FDCAN外设的,功能还是挺强大的。这个外设也是现在项目中常用的通讯方式。
8 Q2 ~7 w- P8 J     通信芯片使用的是自制的TJA1462 模块,这样使用杜邦线连接到FDCAN测试仪,连接到电脑上位机上,就可以进行测试了。
) F3 e( F( J; Z2 G$ N5 S, Z- D     整体连接图如图1所示:4 G8 s5 z  G' ^# S  Z* C
1-4.jpg 4 M; b! G( D! O; |
图1
; q  L6 x. `' u+ \: [     CubeMx 配置如图2所示:$ p$ V6 N# F7 o' W2 [6 _. o
1-3.png 6 A' G) J. k9 O. H
图2
1 A0 m4 B$ G% x' V- a6 `. e/ T) i
$ R8 \0 \; F& h     FDCAN 配置为 Nominal 帧设置为1Mbps,而数据帧设置为2Mbps,数据选择64个字节。然后生成项目框架。
: z7 Q! H6 C9 X4 E; b' Z  u0 l, O6 B2 w% q8 Z  Y: p& q+ y
     修改一下程序的发送和接收中断程序,程序配置如下所示:
, D2 Y. O% o3 p) Q% K
  1. /* Configure Rx filter */
    - a8 M8 p9 F) v5 o) Q# S7 }
  2.   sFilterConfig.IdType = FDCAN_STANDARD_ID;
    ' y# h4 K  F6 K. K
  3.   sFilterConfig.FilterIndex = 0;0 n' S2 U8 C1 w4 p
  4.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;" {; v( X8 A* y
  5.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;* ~/ p' C* R. h8 X+ S3 X
  6.   sFilterConfig.FilterID1 = 0x123;//receive ID
    0 T1 S3 y4 e( A* e
  7.   sFilterConfig.FilterID2 = 0x7FF;$ t# e. T, n* t8 t; m' R
  8.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK): v& \% O$ s( l" D1 m5 a
  9.   {
    5 d# X. k0 W  C% ]
  10.     Error_Handler();
    7 w: w1 I1 n$ E6 Q
  11.   }
    1 A+ U7 f+ ~6 H. T
  12. / D& x0 _1 G8 v8 J
  13.   /* Configure global filter:
    % E6 z0 J3 t% L9 ]
  14.      Filter all remote frames with STD and EXT ID: P" c" [4 j8 w$ u0 I! [
  15.      Reject non matching frames with STD ID and EXT ID */
    / n% o# c. L# G; q4 O
  16.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)( m; Q0 m  S: ]  Y" O* o  m( F
  17.   {
    # l$ n# x1 Q# L! T
  18.     Error_Handler();
    ) o* o* e. l6 |6 E  k
  19.   }
    3 p2 d5 q" Q3 \6 L
  20. " [. w1 u* j7 A4 ?/ J0 `& K+ i* [
  21.   /* Start the FDCAN module */# v3 u2 E; |. {+ H
  22.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
    2 ?9 T7 I- ~6 I! p7 E6 n$ g1 h- |1 p
  23.   {7 i/ d; D# b- h+ q2 z) N; M+ c
  24.     Error_Handler();& B/ k, O! u' V
  25.   }( }  `1 m; T% x9 P' N
  26. : a6 v3 r, N# c! _; p7 C
  27.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    / S% M- K4 J  T
  28.   {
    3 m8 ?; d" {+ k8 K0 Q
  29.     Error_Handler();& H$ s! f, [: d! z& j/ B# ^) M; t
  30.   }
    , i( v: I% Q- v' g9 W
  31. . w. m/ `8 V/ ^" d
  32.   /* Prepare Tx Header */
    ) l- J* c( y) T, b1 P& ^" k7 {) G
  33.   TxHeader.Identifier = 0x321;, @* N2 |, c& e  W1 a! H$ ~
  34.   TxHeader.IdType = FDCAN_STANDARD_ID;$ L/ d' _& S4 }& D" z1 \9 [
  35.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;* T; f4 p/ x" |8 |8 K0 y& U
  36.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;
    9 v# q9 K, s. }, f
  37.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
    / p# M* h3 e( d
  38.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;0 Z  K$ \- E6 y# k
  39.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;3 `5 h* O/ y7 ^; n5 d% F
  40.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;6 D# u: F! s6 I- W; h
  41.   TxHeader.MessageMarker = 0;
复制代码

5 M' i3 Y- f+ g6 k( @% n/ K: e0 }5 d  S6 G+ v4 x% R
     编译,Debug,通过上位机观看测试数据,接收数据如图3所示:9 [  i7 a, A2 e6 I% a8 R: i# |
1-2.png " s1 S, T; z% B* A1 l0 T
图3' |4 j7 L8 i5 F7 w" S( ~
    发送数据如图4所示:
3 c$ L/ t2 p: }7 |( F 1-1.png 3 A9 c% T( t  U9 `! `) Z
图4" S# E# N0 c( N1 a/ U+ N' [: \: \
    经过测试,发送和接收正常,调试5Mbps的时候,数据不能连接上,应该是杜邦线的问题。6 |( g' w/ ^5 r7 y. Z) e. M: @
赞 收藏 评论0 发布时间:2025-5-24 22:27

举报

0个回答

所属标签

相似技术帖

官网相关资源

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