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

【STM32U3评测】3.FDCAN通讯

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

0 ^+ E5 w" \1 L6 S7 [1 X      本次测试FDCAN通讯,STM32U3是带FDCAN外设的,功能还是挺强大的。这个外设也是现在项目中常用的通讯方式。- m, k6 J. S; A1 y
     通信芯片使用的是自制的TJA1462 模块,这样使用杜邦线连接到FDCAN测试仪,连接到电脑上位机上,就可以进行测试了。
) }+ m6 H+ P9 P$ r0 @) K$ H* b- i     整体连接图如图1所示:
# v' @* k9 G# Z1 V6 o- l 1-4.jpg . U8 g  u/ @- q3 W1 R9 L, ?
图1) H0 _7 u% C# i# I+ W6 ^
     CubeMx 配置如图2所示:
7 N7 U4 e5 e+ i8 f( ^7 @& i6 {! [, O 1-3.png - o& t  n$ r- X, c0 ]+ t
图2# v, `5 n' Y5 Z* o

0 X# U2 v1 F8 u! q/ a     FDCAN 配置为 Nominal 帧设置为1Mbps,而数据帧设置为2Mbps,数据选择64个字节。然后生成项目框架。0 C8 p8 m: ^" h& J% D
! _4 P! t4 `; ~' E! }9 l/ J
     修改一下程序的发送和接收中断程序,程序配置如下所示:
7 e! L! r0 R8 [" V# M& Z, ^, b
  1. /* Configure Rx filter */
    ' Q0 l% v3 O, e7 p% P& ~) G9 q. r
  2.   sFilterConfig.IdType = FDCAN_STANDARD_ID;
    . z0 k2 S4 O' Z: G5 ?/ c$ a
  3.   sFilterConfig.FilterIndex = 0;
    9 H# ^  U: m5 ?$ e- \2 ]
  4.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;9 H7 E; o$ b, I
  5.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
    # I. O: u5 r8 g! i$ X
  6.   sFilterConfig.FilterID1 = 0x123;//receive ID4 |$ {, |+ g6 R9 X, G2 T( c, d
  7.   sFilterConfig.FilterID2 = 0x7FF;
    , P- K$ x$ P0 V: \
  8.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)
    . _, w$ ~/ b3 @" Z' N* }6 g
  9.   {! n8 \" d* g$ E- e5 X
  10.     Error_Handler();
    ) w7 k- r/ U- e3 b
  11.   }, r! N8 i" g2 A/ p4 @1 V# `/ W2 j
  12. 4 z/ q7 q: r' {$ x& r
  13.   /* Configure global filter:
    " Y$ B! [* y' A* i* g+ ?! M
  14.      Filter all remote frames with STD and EXT ID
    - e' R; y$ l6 v0 v
  15.      Reject non matching frames with STD ID and EXT ID */
    ' b2 H- P8 {, A' M, F% X
  16.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
    ; k' V1 c0 g+ z* M( u( `
  17.   {
    9 G  y: J; m$ `8 v
  18.     Error_Handler();! W4 u. X4 }) ]
  19.   }7 d1 D2 l/ k8 i; ]0 Z/ |  C: e
  20. " o9 ^8 z: S  o7 m% @+ X
  21.   /* Start the FDCAN module */+ J; x5 p0 P2 w
  22.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
    3 A1 s' B& A( u6 z% Z6 ]# P& p
  23.   {+ z/ x( ~& o* V+ U3 b: A
  24.     Error_Handler();" l" c1 ^# p# C& f# [
  25.   }: u. w; z, |" D- y; h

  26. * Y5 W* }. V, G# y
  27.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    4 U  l3 \! S% \  z
  28.   {8 c9 M2 S% N$ T+ z
  29.     Error_Handler();
    : y" Y) r* s# ]5 k, n
  30.   }4 ]) f+ [/ F5 E
  31. % {# G1 J- O- {5 C
  32.   /* Prepare Tx Header */& R# _# Q* _  c! V( ~6 d! \, Q
  33.   TxHeader.Identifier = 0x321;% W2 B# U! J: H! K$ ]
  34.   TxHeader.IdType = FDCAN_STANDARD_ID;
      y6 x) x$ n0 `& z# V: c
  35.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;
    $ x& n3 V, d% k; o3 j' v% U
  36.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;& d7 P7 j6 ~- \& i2 P- l! P( t
  37.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;8 L# q8 o! F5 w
  38.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;
    4 q! p4 q$ Y7 O0 I3 z
  39.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;
    & U  [4 J8 ]- L5 j. r+ u
  40.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
    & j: {# u5 c6 i$ I! o. L
  41.   TxHeader.MessageMarker = 0;
复制代码
9 d3 T- u' N5 W+ X6 E
5 P$ f  [% X& @8 ^
     编译,Debug,通过上位机观看测试数据,接收数据如图3所示:' @4 _8 U. }# L- C- b) T/ d; }
1-2.png
' Z+ y0 k; S6 x+ o- I图3% a8 N* G) |$ \" c
    发送数据如图4所示:( E9 _& w8 o% H. X0 t# j& t
1-1.png   X5 I* g% ~+ p' O+ ?* g
图46 h' S1 D( R8 a& g% U& `% t: z
    经过测试,发送和接收正常,调试5Mbps的时候,数据不能连接上,应该是杜邦线的问题。4 h/ d; {& z  |0 n7 c/ B9 |
收藏 评论0 发布时间:2025-5-24 22:27

举报

0个回答

所属标签

相似技术帖

官网相关资源

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