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

【STM32U3评测】3.FDCAN通讯

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

- j+ C! e# w$ e% r% {/ s' {      本次测试FDCAN通讯,STM32U3是带FDCAN外设的,功能还是挺强大的。这个外设也是现在项目中常用的通讯方式。
1 E4 {* D+ p9 h0 p' u7 S     通信芯片使用的是自制的TJA1462 模块,这样使用杜邦线连接到FDCAN测试仪,连接到电脑上位机上,就可以进行测试了。
; D. W9 T8 e& r) m! S     整体连接图如图1所示:
4 [% c% X1 K- T) V 1-4.jpg $ ~+ e& Y) }6 x5 C: m* M
图1+ p. R% E+ N% {" P9 G7 d# e
     CubeMx 配置如图2所示:
# M; [1 }2 J3 T2 Z 1-3.png 5 `' J8 ~# q8 n3 T, e$ T/ J
图2
" }0 J+ s4 N! n& C. ]6 B% C; a! ?0 }" r: y3 r
     FDCAN 配置为 Nominal 帧设置为1Mbps,而数据帧设置为2Mbps,数据选择64个字节。然后生成项目框架。2 o8 Y  |. e$ U: f3 P! H

/ }1 o3 p* G9 b  s( C* ~     修改一下程序的发送和接收中断程序,程序配置如下所示:4 I" ~- n/ _* U# a6 t; b1 P3 J
  1. /* Configure Rx filter */5 w2 \, [* T8 k" g) v
  2.   sFilterConfig.IdType = FDCAN_STANDARD_ID;' S" _# a3 d# _
  3.   sFilterConfig.FilterIndex = 0;6 F+ O" k( o/ H0 H  e
  4.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;
    ' t, J6 A4 f  O  e" Q1 v4 g
  5.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
    . m: U6 O3 R9 _( x8 l0 P2 \
  6.   sFilterConfig.FilterID1 = 0x123;//receive ID
    * h; ~! x$ h1 h) O& }3 `
  7.   sFilterConfig.FilterID2 = 0x7FF;$ t  d8 I( g' J6 |! O
  8.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)5 @" u! z( q5 R
  9.   {/ m6 J; [* l. z2 k
  10.     Error_Handler();( b( ^, Y8 \4 x, B6 E
  11.   }
    1 y; {6 q) K: [; Y* P. q

  12. 5 t3 @% j' n/ J7 t# U; X+ w& }
  13.   /* Configure global filter:7 P1 h* M( \2 C, d# `) s. z
  14.      Filter all remote frames with STD and EXT ID. e. L' f4 l: G5 ^/ ^) v/ j- h% |, A
  15.      Reject non matching frames with STD ID and EXT ID */) t( N1 H9 |& y2 P
  16.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
    $ i2 y( q! j% ?- t1 V" p. ]: Z
  17.   {: P' o! s$ P# _7 r" Y( N- n
  18.     Error_Handler();
    ; W1 r$ L+ ^. f& @6 ^" t; H' ]' Q& e
  19.   }
    * C, n9 i( H4 }- G( ~' c
  20. 0 }; H( V% `& m# }7 Q9 i9 F
  21.   /* Start the FDCAN module */
    5 v5 R& o+ X& ?* M  j" j9 V
  22.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
    ) I- P# [9 q9 ^9 F0 Q
  23.   {! k# M( A% M& o% `7 Y! j6 q3 _
  24.     Error_Handler();* O8 ^* g4 _. A% w7 }8 T% A
  25.   }
    7 r: q# o" m8 ?
  26. 8 g/ |! z3 j, b9 y! U# F; \4 j, d; c
  27.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)4 r2 }: D% u$ M7 h7 s* ~1 O. r4 m! o
  28.   {  Y  t5 a2 U- a+ n0 `( k# ^6 z
  29.     Error_Handler();# w; I5 g0 R$ }2 A, U/ f
  30.   }
    / `8 Z- t# }' k5 U

  31. " g3 w0 f! |" `9 T3 I  M; S/ s! q
  32.   /* Prepare Tx Header */
    $ c8 D1 T- w9 q4 i
  33.   TxHeader.Identifier = 0x321;
    7 p! C+ i% t* v% ?
  34.   TxHeader.IdType = FDCAN_STANDARD_ID;: D3 }( d! o" e3 a0 ?; h- A# B
  35.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;  t, d* A4 \% n8 l
  36.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;5 I( _! G( b& B$ T" f
  37.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
    ' L2 z5 F& h( H  k
  38.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;( W0 N2 Z  S( g( h, B& H
  39.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;
    ( O' k) g9 ~/ {% `5 `$ ]% j( [
  40.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;& I: \) A, Z9 K( E
  41.   TxHeader.MessageMarker = 0;
复制代码
! ^% b: C5 a- [7 u5 I
; y6 d* p; k. }2 A) C6 w" q
     编译,Debug,通过上位机观看测试数据,接收数据如图3所示:; h& I# O; f& c6 x
1-2.png
; R: R7 }4 r7 O5 ]6 L* ?8 f9 x图3$ p- Q7 Y1 _3 G! T: a, d
    发送数据如图4所示:
( [( r6 L6 u1 a) O& d0 _& d 1-1.png ( P) g7 s8 y+ g7 G. }+ @
图4
9 r/ w# X3 Y" u) t: j    经过测试,发送和接收正常,调试5Mbps的时候,数据不能连接上,应该是杜邦线的问题。* X5 ^4 @9 i# b1 b4 ^! x( f( ]
赞 收藏 评论0 发布时间:2025-5-24 22:27

举报

0个回答

所属标签

相似技术帖

官网相关资源

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