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

【STM32U3评测】3.FDCAN通讯

[复制链接]
jundao721 发布时间:2025-5-24 22:27
5 n& ^0 C' b" j3 |1 c# o
      本次测试FDCAN通讯,STM32U3是带FDCAN外设的,功能还是挺强大的。这个外设也是现在项目中常用的通讯方式。
% q: g2 w+ y9 `& j7 I8 R: v0 H     通信芯片使用的是自制的TJA1462 模块,这样使用杜邦线连接到FDCAN测试仪,连接到电脑上位机上,就可以进行测试了。# h) B, G- f# R
     整体连接图如图1所示:- T$ Q2 [% V" f. n9 m- Q
1-4.jpg
' N+ @: ~0 Q' n5 n图1
  H1 H: O4 q) }3 I/ A     CubeMx 配置如图2所示:
; i5 }' V$ b1 t, v$ Q/ U2 V 1-3.png
6 [1 |: y8 F  l  s! S图2, p. F, o1 L& X. ~3 J; J5 N0 e
1 ?* o1 h' g) o! i# b
     FDCAN 配置为 Nominal 帧设置为1Mbps,而数据帧设置为2Mbps,数据选择64个字节。然后生成项目框架。. y$ q& `7 P, C* ^. W5 C
7 d" }$ `! g$ Y. D8 \2 `
     修改一下程序的发送和接收中断程序,程序配置如下所示:5 ]0 I- b) M6 A  ~+ Q' p2 `! a1 b
  1. /* Configure Rx filter */
    8 J, }% Y* F/ ~8 d4 F
  2.   sFilterConfig.IdType = FDCAN_STANDARD_ID;
    ! c7 K) Z& J% j7 S: K$ t5 |8 r
  3.   sFilterConfig.FilterIndex = 0;! `' J9 a2 R- D( D
  4.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;$ r: `/ Z0 P* S9 L
  5.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
    ( l& ]1 K& L3 Q8 ?6 m
  6.   sFilterConfig.FilterID1 = 0x123;//receive ID" e8 v! e$ K6 w' F) {
  7.   sFilterConfig.FilterID2 = 0x7FF;& g7 E. M0 n- A" j; h* Y0 A
  8.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)
    2 U1 F, V( X+ S4 Z8 a# E- S; e2 P
  9.   {
    - u0 X1 \5 A' {7 z- ?
  10.     Error_Handler();
    # e; A- n, r9 d, {# q7 _
  11.   }$ X" ^# w8 c9 K" e! U; a# G9 G  x( Z

  12. . ?2 S3 r" w1 y/ L
  13.   /* Configure global filter:
    : S. X! n, D: L4 S; L& m
  14.      Filter all remote frames with STD and EXT ID. G( x8 \, d% H2 h
  15.      Reject non matching frames with STD ID and EXT ID */
    ' E* O# c3 j" K: I% |
  16.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)7 I$ w7 n% ?/ c; N3 C! [
  17.   {
    " P: `/ ^9 L6 `# N
  18.     Error_Handler();
    ( v2 ^( E0 Y: B
  19.   }
    7 g  b# G: C4 K' H

  20. % |5 u) U. T7 ?% ~, [1 }7 v
  21.   /* Start the FDCAN module */
    7 S. B: u6 T* S
  22.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK): H8 T! F5 r: e! b/ c
  23.   {  {" H# I5 X: A" k
  24.     Error_Handler();7 }, p& {1 \* x% q& H
  25.   }( }2 n6 X; m# D9 U# W2 `4 ~

  26. ! e9 x% k% w5 }0 M5 W( Z
  27.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    - E* R4 ~# r- ^! M+ g
  28.   {! O* {' H+ \3 _2 ]! j, B, h" F
  29.     Error_Handler();, o' p) C, h# i9 O
  30.   }
    ' _. X* \" ^3 B
  31. 8 e/ r# `. g' c  }; R3 J. O
  32.   /* Prepare Tx Header */
      q3 n# x. \0 Q7 ?* i; v
  33.   TxHeader.Identifier = 0x321;
    ) j4 z8 t) g6 M- Z* M  Q. |
  34.   TxHeader.IdType = FDCAN_STANDARD_ID;
    - t$ u4 v$ D( w5 X/ o
  35.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;) V$ H1 E, [3 ?' c5 ?6 `
  36.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;
    7 y1 }( ?* o" `  i
  37.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
    $ X  j# l! l+ _2 ]
  38.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;
    4 E* U0 h6 m4 \' g% A5 D
  39.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;
    9 c& s7 F2 b6 A/ e# X
  40.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
    ) [( d) T' E# q* m
  41.   TxHeader.MessageMarker = 0;
复制代码
  n  J& V' T/ v& b3 `9 l) Q1 q
, c9 E7 Q  [& o' A$ V
     编译,Debug,通过上位机观看测试数据,接收数据如图3所示:0 j/ {' v2 x! f" ~4 S
1-2.png 5 r7 r: b+ O7 H, \- ^
图3
2 O) Y( Y& ?2 n9 T  L2 J' n    发送数据如图4所示:; M8 N/ k4 k' c) }8 x# t/ A
1-1.png
. Z; g  a4 ~1 G$ M* ~图4& {+ I7 }. \- h1 }. `( P
    经过测试,发送和接收正常,调试5Mbps的时候,数据不能连接上,应该是杜邦线的问题。# t0 n% w* T' q& W
收藏 评论0 发布时间:2025-5-24 22:27

举报

0个回答

所属标签

相似技术帖

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