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

【STM32U3评测】3.FDCAN通讯

[复制链接]
jundao721 发布时间:2025-5-24 22:27
, M% V6 f, k  `
      本次测试FDCAN通讯,STM32U3是带FDCAN外设的,功能还是挺强大的。这个外设也是现在项目中常用的通讯方式。6 M0 M. l0 e# F* A/ U- z$ M
     通信芯片使用的是自制的TJA1462 模块,这样使用杜邦线连接到FDCAN测试仪,连接到电脑上位机上,就可以进行测试了。6 X$ x0 B' O; t
     整体连接图如图1所示:
5 z' p7 M2 H* Q' H- ~ 1-4.jpg 3 T6 r+ h* O/ ^7 P2 N: @
图1  `( b! c1 m8 f. x2 S* ~) m
     CubeMx 配置如图2所示:
7 I8 j' H2 z) D) M: `, M6 V 1-3.png
" O! f& H$ U5 r8 a% g" y* ~$ ?图2
$ \+ U3 G* E2 F$ {7 H) X6 K1 y) ]- I8 k" ~9 Q0 M$ ^6 q
     FDCAN 配置为 Nominal 帧设置为1Mbps,而数据帧设置为2Mbps,数据选择64个字节。然后生成项目框架。
- C6 m3 ^% \% G+ p! Y$ S8 K/ r( Q& |; B
     修改一下程序的发送和接收中断程序,程序配置如下所示:
0 @. y2 l/ l6 i
  1. /* Configure Rx filter */2 b2 g* t$ ?* _8 D4 K9 B
  2.   sFilterConfig.IdType = FDCAN_STANDARD_ID;
    , Q( I- p  \; ]6 @5 e6 x
  3.   sFilterConfig.FilterIndex = 0;1 t( p( E# b4 u. [  [+ C) Q0 @$ e
  4.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;7 ~$ {  M9 }  v! V, j8 o& F' h
  5.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
    / L6 l3 O: D' u4 C, T
  6.   sFilterConfig.FilterID1 = 0x123;//receive ID2 I) E6 Q) `# B) A3 b4 _$ Q: j
  7.   sFilterConfig.FilterID2 = 0x7FF;. s2 ?6 e; k: N* `8 F: _# |
  8.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)
    ! M6 F) H& H: C" B( \4 t% h
  9.   {' [3 @! h6 A2 j' |
  10.     Error_Handler();. {. b. n$ D9 a) A  y! F& y5 f
  11.   }8 L. t- W) f, A1 `/ ^
  12.   G. ?. \( o7 ^+ P0 i! z" H
  13.   /* Configure global filter:( x' U- P. |' i: x8 a) O4 e
  14.      Filter all remote frames with STD and EXT ID
    ) ]/ w5 P) t# {/ W, g; x
  15.      Reject non matching frames with STD ID and EXT ID */* g! @; k2 k, V' `
  16.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
    7 Q9 L- l0 Y* Y0 C# c' A0 G1 i
  17.   {
    - F* {) x3 @* y# F8 a8 W
  18.     Error_Handler();" {7 X' L9 l% y) }+ c+ Q4 p
  19.   }( S/ F& F! s3 o5 V, I+ Z

  20. " p, B3 n0 G( `# }1 L- S
  21.   /* Start the FDCAN module */& I4 C$ R4 l7 _' e8 ]/ n
  22.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)% p0 f+ ~$ g5 a
  23.   {) x+ N4 J4 F  A4 E
  24.     Error_Handler();% B) [2 }* I8 j! Z; i6 }
  25.   }
    & A: q. }8 C3 g& Q1 v# ~
  26. ! L: v2 S/ Z; w( S" Z, r; y
  27.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    0 D# t. [0 W# p! M  u9 Q6 F
  28.   {$ |9 s1 K* u4 l- f$ ?3 B
  29.     Error_Handler();
    9 @! ?; S% ^% ?( u) n  h
  30.   }) n3 `( m, K5 R# J% x
  31. - R6 v  i5 }" {' u9 y' S
  32.   /* Prepare Tx Header */0 W/ z; j+ e8 X" Y/ c+ B7 |+ Q. s6 z
  33.   TxHeader.Identifier = 0x321;
    : O) U/ Y- ^: l+ K, e
  34.   TxHeader.IdType = FDCAN_STANDARD_ID;6 s  y% m0 K2 q* r  c4 g
  35.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;5 Y/ u5 K+ s6 f, l) X/ R* e0 l
  36.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;7 [$ A- W( x; ?6 R; ]
  37.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
    : I- l( e7 W  n+ O8 N
  38.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;; K$ |0 @" I  A/ ^* ~( C5 q
  39.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;+ C& E$ Q; k; v7 }* y0 c3 H" z  w
  40.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
    # Q, r- C& ~2 B! k& E8 X
  41.   TxHeader.MessageMarker = 0;
复制代码
! S0 e; \  U# V: E- O
/ C" X# l( B) G9 g* o
     编译,Debug,通过上位机观看测试数据,接收数据如图3所示:
  ]4 ^* S/ v/ ^) i1 O+ e 1-2.png
# ?& k& a8 S4 E7 ^/ ~图33 G" Y$ `2 b& t5 a
    发送数据如图4所示:$ i1 _) ~1 q0 P. O7 D9 W/ A7 h
1-1.png $ I9 O$ O* g. @' g3 r6 x% q& }
图40 K# t2 W" h2 K3 \/ |9 u
    经过测试,发送和接收正常,调试5Mbps的时候,数据不能连接上,应该是杜邦线的问题。
. b5 Q; g( w) p- L! z3 S7 G: Z, w9 w
赞 收藏 评论0 发布时间:2025-5-24 22:27

举报

0个回答

所属标签

相似技术帖

官网相关资源

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