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

【STM32U3评测】3.FDCAN通讯

[复制链接]
jundao721 发布时间:2025-5-24 22:27
- _1 ^1 T- ~. G/ n/ y6 m# V
      本次测试FDCAN通讯,STM32U3是带FDCAN外设的,功能还是挺强大的。这个外设也是现在项目中常用的通讯方式。/ o. L; _( F3 _4 j
     通信芯片使用的是自制的TJA1462 模块,这样使用杜邦线连接到FDCAN测试仪,连接到电脑上位机上,就可以进行测试了。
; X* U# l: [/ b+ n     整体连接图如图1所示:, N- u. ]0 X6 b$ A! g
1-4.jpg
8 g8 D5 R# _5 C! b0 M图1& Y5 J, ^' o6 X/ }
     CubeMx 配置如图2所示:
9 }' S0 I4 _6 d/ P7 v1 _, l 1-3.png
$ l! ?$ F& ~' ?! X2 F; h- V4 c图2' c! s8 y. y( A

! U3 Q1 a0 C) b, `) P7 ~     FDCAN 配置为 Nominal 帧设置为1Mbps,而数据帧设置为2Mbps,数据选择64个字节。然后生成项目框架。
9 m. ~2 M( Z) b2 m+ j
% X+ P! V( L! |2 o6 [0 x     修改一下程序的发送和接收中断程序,程序配置如下所示:
: X; T% m) _) E4 T6 j" N. Z
  1. /* Configure Rx filter */" L. y, f8 k9 D5 Z
  2.   sFilterConfig.IdType = FDCAN_STANDARD_ID;
    $ y4 L/ S' B4 c, p: |1 N  t
  3.   sFilterConfig.FilterIndex = 0;
    , P9 W" A/ G# o- N% ^
  4.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;  D/ y/ q0 o8 K& w, c
  5.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;: _( y2 g5 H" }! c2 T  i: M0 x5 L) B
  6.   sFilterConfig.FilterID1 = 0x123;//receive ID
    - C; u8 }; p6 v7 g- r/ `) D) _, _
  7.   sFilterConfig.FilterID2 = 0x7FF;& H2 `# e, ~# X7 j) O
  8.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)
    ; _" I( g$ y" g' u1 c7 E
  9.   {; {6 h# b" O* K  H) N! Q1 F
  10.     Error_Handler();' I/ H5 x% e. s, R! G
  11.   }
    + J+ H, y, ^! k5 F. l

  12. % K3 @7 s9 R2 Y' e; o
  13.   /* Configure global filter:
    2 D9 m3 S4 I' r$ G3 ?  ~( z0 J
  14.      Filter all remote frames with STD and EXT ID/ z, k/ m' g1 w& _$ I3 p$ K
  15.      Reject non matching frames with STD ID and EXT ID */, W5 W" W" ~4 h3 O7 j0 p$ r0 |
  16.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
    0 r* D# L/ ^% X9 M/ w: G) ]: K
  17.   {
    5 [+ O1 [2 y7 X( @1 ]$ e/ f
  18.     Error_Handler();
    ! X+ d/ {2 u1 X! m& w' [& T# z
  19.   }! W' P" L& h* Y  [5 U5 h( r

  20. & f0 t7 i* N; o7 [* y& k
  21.   /* Start the FDCAN module */
    9 G; J# p6 E6 b$ y8 r3 G
  22.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)# l, q* a1 t; M% V' E; a: u$ q
  23.   {' G) D. M, j* i. S$ T  n
  24.     Error_Handler();
    4 d' e$ i$ z, a( _, \, ]1 U
  25.   }6 @* J, v! |/ g1 H  M
  26. ; W" V) Z. F& k( H9 {% C0 p) g% ~' N
  27.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)9 `+ x/ f- X* M7 j3 l, a! [
  28.   {8 c' _" @; J4 a
  29.     Error_Handler();
    : l& j( ~; J6 w% I2 c" F
  30.   }
    ! h/ d" d$ Q' l" \
  31. 5 o0 X/ O5 S: s3 j. u9 V$ ~4 P+ a
  32.   /* Prepare Tx Header */
    4 h9 X# e+ G* G+ T! |) O' A
  33.   TxHeader.Identifier = 0x321;4 V5 W! D0 l2 E  L+ H  w* ^7 _3 O9 G
  34.   TxHeader.IdType = FDCAN_STANDARD_ID;
    . C+ w+ t' v- |6 }6 b; n- A
  35.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;0 }  C. M2 h: I* d
  36.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;/ g- V- p) x' B
  37.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
    9 a+ [/ e* |1 W8 F* c
  38.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;# Y! d# @+ t0 l8 S
  39.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;
    5 e" h0 a  C5 t8 m$ A7 \
  40.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;0 `! W9 }0 n  [8 @! Z9 i
  41.   TxHeader.MessageMarker = 0;
复制代码
) P7 ~6 m1 T7 ]4 N( q8 v

( J( {1 t7 z1 g/ z) ?2 X5 V     编译,Debug,通过上位机观看测试数据,接收数据如图3所示:5 A4 c7 Q( v* m; z* a) p
1-2.png 3 {! I1 b- [3 |- w2 n; Q; U% z0 _
图3
7 h5 Y" b8 U( \7 d( y: v    发送数据如图4所示:# O$ d; ]9 `2 r
1-1.png
1 b# ]! ?8 X# Z2 }$ p0 @: o8 `图45 ?( }" B5 o6 E* R: I5 J9 i0 i3 Z
    经过测试,发送和接收正常,调试5Mbps的时候,数据不能连接上,应该是杜邦线的问题。
% {: v  M1 Y3 }; ^' u+ i, i" M: q
收藏 评论0 发布时间:2025-5-24 22:27

举报

0个回答

所属标签

相似技术帖

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