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

【STM32U3评测】3.FDCAN通讯

[复制链接]
jundao721 发布时间:2025-5-24 22:27
2 w) p( }& o- ?3 G9 Z/ i/ O" h
      本次测试FDCAN通讯,STM32U3是带FDCAN外设的,功能还是挺强大的。这个外设也是现在项目中常用的通讯方式。& y1 Z% G" x, n1 K, _0 l
     通信芯片使用的是自制的TJA1462 模块,这样使用杜邦线连接到FDCAN测试仪,连接到电脑上位机上,就可以进行测试了。7 R# |8 Y8 U0 z* t) Q% W0 R
     整体连接图如图1所示:
; y; Q& i, i, `1 L. B. l% b 1-4.jpg 5 u4 a, K$ `2 e; _7 B: P. s
图1
; r5 P2 ~; m5 P& N  Y1 w" F" d     CubeMx 配置如图2所示:9 L0 J& |8 ]7 F, L% g
1-3.png & r8 P9 j7 U( G3 P6 d
图2
# I' N# p# M/ E8 ]$ [
2 O/ X7 P$ `/ S, B; r     FDCAN 配置为 Nominal 帧设置为1Mbps,而数据帧设置为2Mbps,数据选择64个字节。然后生成项目框架。
) R5 R1 }: @  w& {" V* n& C# I0 v! ]2 _* M0 _: B0 n9 F, y
     修改一下程序的发送和接收中断程序,程序配置如下所示:5 k% k8 [* K1 f
  1. /* Configure Rx filter */5 a9 y# @$ ?! \+ w( U7 t, N$ T
  2.   sFilterConfig.IdType = FDCAN_STANDARD_ID;
    5 O& D+ ]- D* B, ~
  3.   sFilterConfig.FilterIndex = 0;' K3 u$ v9 {. J1 m9 \
  4.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;. R1 J4 v6 y* `- \
  5.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;$ y" }0 ~1 v& M& Q
  6.   sFilterConfig.FilterID1 = 0x123;//receive ID
    ( g7 n& N) V7 p: |3 H$ h
  7.   sFilterConfig.FilterID2 = 0x7FF;
    * S4 P- {- d5 S+ d  d6 u+ ^1 H/ {& H
  8.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)0 T' W# T! B# Z# p9 W+ u. i! y& e% t
  9.   {4 ^$ A6 \* t) C$ W
  10.     Error_Handler();
    - g: R: y" N( |9 v) Y. O/ f# k; U3 |
  11.   }
    # X0 j, @! C- z( u4 j
  12. " m/ y2 P$ @% W+ ?3 G$ T
  13.   /* Configure global filter:: v" M2 v. Z3 T0 s
  14.      Filter all remote frames with STD and EXT ID
    . X  F- F8 H( A( Q( S
  15.      Reject non matching frames with STD ID and EXT ID */
    / m9 {5 v/ h& g% m+ @5 h8 P; z0 U+ G
  16.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK): m# m2 ?4 S4 k2 O1 |7 k- ^; h( X; ?& q" `
  17.   {
    + `* {4 d7 z6 w/ [3 I
  18.     Error_Handler();6 A' u! V* h8 V6 {  h+ T
  19.   }$ t3 L) s- e# R
  20. - u9 z' f6 p) l1 e& ^
  21.   /* Start the FDCAN module */3 x# B8 e. {2 I1 N5 _6 _
  22.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
    2 b1 ]2 b* w2 z# l" r
  23.   {" u# B, t" j% y4 `
  24.     Error_Handler();
    - M) Q" u. t" b- B9 N: @* w2 y
  25.   }
    ' X$ o9 r) d4 a) O1 v- K( I
  26. , L2 r# M0 e2 O9 z" f. ^
  27.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)6 y( Q' m$ }# }; ~
  28.   {. \$ L7 X( g% v; X0 I" T8 l
  29.     Error_Handler();4 q) b& Q+ Z; [8 `
  30.   }
    2 C# r$ Q8 z) S3 c# X

  31. . U$ l" D' g5 f( Q3 Q: `
  32.   /* Prepare Tx Header */5 h; P; m5 g" w3 U( P* H' _
  33.   TxHeader.Identifier = 0x321;
    + |& u; h/ X) z. {7 l
  34.   TxHeader.IdType = FDCAN_STANDARD_ID;5 j6 \* f7 x% E' _6 z+ f% h
  35.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;
    8 K! G1 L* |) H+ Z
  36.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;
    : ^" X6 x2 D% w( U
  37.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
    0 _7 Q; i8 ~( l  @2 t
  38.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;
    ) O1 t. u/ ]5 L: u" k# }
  39.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;7 F; E: q" x" {0 h- {4 Z
  40.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;5 M- Z  q" A/ p0 @* e$ M) c
  41.   TxHeader.MessageMarker = 0;
复制代码
, a" p" Z' C* g" A
4 ^; k2 W/ Z; O5 S2 t8 d& r
     编译,Debug,通过上位机观看测试数据,接收数据如图3所示:# B, E& u9 ?; U& s9 N6 y
1-2.png
! }4 ~1 N* V8 S图32 w0 E  C$ J4 {7 b1 p% U
    发送数据如图4所示:$ T- O; ^& ^  x: _5 _0 \
1-1.png - d* J  l9 Q" |9 ^
图4
. y  h2 A. a1 z! d; W- `- S    经过测试,发送和接收正常,调试5Mbps的时候,数据不能连接上,应该是杜邦线的问题。; F$ @4 H9 q( s5 [
收藏 评论0 发布时间:2025-5-24 22:27

举报

0个回答

所属标签

相似技术帖

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