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

【STM32U3评测】3.FDCAN通讯

[复制链接]
jundao721 发布时间:2025-5-24 22:27

' f, E: a9 @  W2 B1 d4 C      本次测试FDCAN通讯,STM32U3是带FDCAN外设的,功能还是挺强大的。这个外设也是现在项目中常用的通讯方式。
5 \& A, D' T% s! Y     通信芯片使用的是自制的TJA1462 模块,这样使用杜邦线连接到FDCAN测试仪,连接到电脑上位机上,就可以进行测试了。
% @  S. u: B  L0 P) {" p. O7 [     整体连接图如图1所示:
2 a3 I! H% l! R, h9 v 1-4.jpg
% o; B7 T% z8 e7 R1 n图1
- f7 U) L- Y, A+ S5 H6 O     CubeMx 配置如图2所示:
; E8 c; U' `0 W: K! Y 1-3.png : t! Q7 v* D+ Z9 V# U3 U0 t7 K
图2! ~$ T. U' d  P' B, G) q/ N# t
/ r$ n; Z$ h) a! R
     FDCAN 配置为 Nominal 帧设置为1Mbps,而数据帧设置为2Mbps,数据选择64个字节。然后生成项目框架。0 m, Z* m: l- y+ o. S9 T

) e1 ]# W$ r0 c2 W     修改一下程序的发送和接收中断程序,程序配置如下所示:
4 {' R1 p5 T( W+ X4 V9 v0 ?
  1. /* Configure Rx filter */
    2 ?! s  K. M* n8 n! ~/ p
  2.   sFilterConfig.IdType = FDCAN_STANDARD_ID;9 M! ]+ k& J0 [% I, g+ j5 `7 X" I
  3.   sFilterConfig.FilterIndex = 0;
    + x; {3 D; ?) `+ ~0 [
  4.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;
    * B4 A. {" _' p" j# H
  5.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;+ B; C( c/ D% q7 m9 L. q
  6.   sFilterConfig.FilterID1 = 0x123;//receive ID
    # k# I' \6 ~. y! A
  7.   sFilterConfig.FilterID2 = 0x7FF;
    ) `8 m; R9 |. r: f5 [+ L/ U9 K! R% ]
  8.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)  `' S8 v: m; B% E, B0 C4 w
  9.   {
    % |3 Z8 t' j4 t
  10.     Error_Handler();, i4 h( Y" s2 K
  11.   }0 {6 s, O7 N7 o7 P3 o  B' R6 o, ^
  12. & H5 E* d- ?9 D4 ?5 V  Y
  13.   /* Configure global filter:6 k/ ?/ w8 z) C8 D. R
  14.      Filter all remote frames with STD and EXT ID' E4 s6 T. ^0 M3 Z4 f: Z
  15.      Reject non matching frames with STD ID and EXT ID */
    0 a. c0 z. Z$ c9 v3 F4 R
  16.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
      n% g& P! z" x# h! b8 G9 W
  17.   {! n6 B  ]9 A- ^, b* `
  18.     Error_Handler();% ^# _3 _* {0 p6 S9 I
  19.   }
    ( l+ P2 m; C1 Y% g6 p- G$ ~

  20. $ A! G, @% Y# [' [: @- N
  21.   /* Start the FDCAN module */: c( a) {7 G4 R
  22.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
    ' H6 F' I0 P6 L  J% P
  23.   {
    0 D  N2 Y5 F. Z% a) Q* \
  24.     Error_Handler();
    & X# x, h' T! s0 R. l
  25.   }6 }! j- T5 B0 q- ~! M" v5 S% d6 K
  26. 8 g2 ~1 N& y2 y
  27.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)& A' F: }, J  @* Z' N; k# W( t+ c5 t
  28.   {# u+ R2 n! k. i3 r
  29.     Error_Handler();  a8 l1 t  O( y$ j5 y5 V! V
  30.   }5 y2 L5 C' P! D0 J0 d, t
  31. 9 q* l# f& o& p
  32.   /* Prepare Tx Header */
    0 N2 E: e  Y* q5 T# @
  33.   TxHeader.Identifier = 0x321;
    9 i% Y5 T( a7 S
  34.   TxHeader.IdType = FDCAN_STANDARD_ID;
    4 z: u. u9 A% J: o, W! D9 ?
  35.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;
    3 w, Y3 n1 m% F# w, C$ Q
  36.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;$ V6 Z0 B1 y) H; }, P. K
  37.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
    , F. @7 V& K1 E6 i& @4 Y$ a% ~& E
  38.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;
    7 m6 L7 C3 Z9 W& a
  39.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;6 g5 V! f2 J0 K9 M7 j
  40.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
    , Q+ f' R3 S. Y/ W! N9 t
  41.   TxHeader.MessageMarker = 0;
复制代码
; x0 e: t0 u9 ?( H% \3 }

6 G; t8 Y0 U9 Y9 v     编译,Debug,通过上位机观看测试数据,接收数据如图3所示:
: L. E: [" h- b: ] 1-2.png
1 P' H* b- m- K* X( j; b7 ~% v7 u图3& R9 X7 u* t: L% G& a. h: b$ n6 `
    发送数据如图4所示:
9 Y9 p" L' B2 E" u4 ` 1-1.png
% s& t9 v/ r1 d# c图4
- \2 _5 z& }/ p1 b9 u9 \% e    经过测试,发送和接收正常,调试5Mbps的时候,数据不能连接上,应该是杜邦线的问题。
& U5 z  I0 V" B  c
收藏 评论0 发布时间:2025-5-24 22:27

举报

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