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

【STM32H503评测】2.H503 的FDCAN通讯测试

[复制链接]
jundao721 发布时间:2023-9-3 20:52
      最近工作有点忙,板卡的学习和测试稍有延迟。这次主要来测试该板卡的FDCAN功能。从datasheet上可以看到H503是有一个FDCAN接口的。这个总线通信接口当前用的比较多,所以需要好好学习和测试。现在FDCAN支持8Mbps,以前采购的芯片最高支持到5Mbps。     又把原来测试IC的部分翻出来,按照Power和Rx,Tx将MCU板卡和通讯部分进行连接,如图1所示:
5 s6 A2 U( H5 E  N( m( X* C t21.jpg
  ^: p  n5 n" D图1
: s; I. z! Y. |     主要用到PB12--CANRx,和PB13--CANTx两个FDCAN1接口,从板图上可以看到接口位置,如图2所示:
& Z1 `# {' b, F- U4 A$ _& U% N! _ t22.JPG
  j1 z" \) |( ]6 g3 m图2
+ y1 K  m& x7 ^9 `/ f6 C! R% k( M3 ~+ Y0 J# H  q% f
     好了,言归正传。下载的官方资料里并没有这部分的例程,所以测试思路基本还是先用Cubemx生成基本配置,其他接收滤波配置和发送配置再自己添加。H503是支持250MHz主频的。所以FDCAN的时钟也配置位250MHz,如图3所示:  P/ ^5 S2 A4 c7 m. I
t23.JPG ( e# ~! B- w. k5 A! b5 d. b: h  G
图3
0 n! I' N1 ?" K3 _" D6 v; y
& ~4 T$ Z$ a& a$ F6 |    FDCAN部分采用正常波特率位1Mbps,数据波特率位2Mbps。其基本配置如图4所示:
& Z5 c% J/ {2 n8 c, o+ y, ~( a t24.JPG
5 [# d/ A# l$ X图4
1 F$ ]: }: d! z' L2 w   正常生成代码后,添加接收部分设置和发送部分设置,参考代码如下所示:: L; O$ O  z5 C
  1. FDCAN_FilterTypeDef sFilterConfig;
    7 \" X2 M5 _2 D( y
  2. # d0 }/ q. U- ]5 z1 e) P% G
  3.   /* Configure Rx filter */7 w6 I" h4 N, s% ]
  4.   sFilterConfig.IdType = FDCAN_STANDARD_ID;: m* G- P; @0 i- B0 U
  5.   sFilterConfig.FilterIndex = 0;7 B1 `$ q, l% y+ `# O: F1 U1 I1 ?
  6.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;
    1 e' y. L( E. P( P
  7.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;9 q  z4 \  \8 Z! ]/ v
  8.   sFilterConfig.FilterID1 = 0x123;//receive ID
    : _1 y6 l+ u0 q
  9.   sFilterConfig.FilterID2 = 0x7FF;
    % `! [5 ^+ k6 G+ f+ w) M
  10.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)
    0 y% a9 d) c) C3 B; o5 V
  11.   {6 J3 H# e# o7 v5 Z! a, ~
  12.     Error_Handler();
    : }9 q% o. Q. {5 ~
  13.   }
    . D/ n3 O2 t0 h& v- {) s; U
  14. 0 D2 J2 v6 y* s
  15.   /* Configure global filter:- n$ n9 l# F$ T& C# z5 I
  16.      Filter all remote frames with STD and EXT ID
    / X5 s. h# m- f. X
  17.      Reject non matching frames with STD ID and EXT ID */
    / ~9 ?0 j& S; R, _' |+ B
  18.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
    6 C: k' m1 ~+ P# J$ }$ U; _7 P
  19.   {6 U! N! q0 z' ]
  20.     Error_Handler();
    5 \2 l/ v) H; Q9 H$ E  U+ T3 i* a
  21.   }2 W& T" a- l, e! }% b+ f% F  `

  22. # G2 ~. D8 U5 s; B0 X% {
  23.   /* Start the FDCAN module */9 F* }+ l- j& o5 D- j8 F
  24.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
    , k. G4 t4 e0 m; l  A
  25.   {
      M. l- x! l/ g( p; s5 y8 w2 g
  26.     Error_Handler();6 T6 l2 e+ e# ?! {# Y4 `+ \
  27.   }
    % |' H7 q& L% J( p. M' q
  28. 0 e- L4 h( I1 M! e, ?3 I5 k
  29.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    " B' F7 H* j' l. ^
  30.   {
    % B/ V$ }0 X  Y3 X& \! ]* y$ X
  31.     Error_Handler();
    0 `, l) Z8 X- F
  32.   }
复制代码
  1. if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData) != HAL_OK); R2 c: d. O+ b8 h+ E- l/ W
  2.         {0 I5 b& L$ V7 }( v! Y  ]
  3.           /* Transmission request Error */- g. p$ K4 o2 w3 R2 v
  4.           Error_Handler();
    2 C) O* J7 u, S0 _- p
  5.         }1 e0 P; h" b9 _* u! ]. v$ G
  6.         HAL_Delay(1000);
复制代码

3 z/ G  x3 I& m0 _6 y
& E! v" U3 o$ A( ]2 w7 q1 H
) X3 ^5 ~# A8 I2 v  上位机测试软件正常接收,如图5所示:  o( I: _6 C; B/ u. S
   t25.JPG & x; {8 R1 h5 P# K
图5
$ C+ u0 G" u8 ]4 d, F3 M 但是接收中断没有执行,故接收callback函数也没有执行到。暂时还没找到事故原因,配置应该都是正常的。找到原因后,再补充这部分。4 o6 b9 ]0 ~: }, K( V: k
赞 收藏 评论2 发布时间:2023-9-3 20:52

举报

2个回答
STMCU-管管 回答时间:2023-9-5 11:54:33
可以,再接再厉3 ?! l. U0 G! R7 s' ?8 j4 K
无极考拉 回答时间:2023-9-7 09:13:35

学习一下

所属标签

ST中文论坛活动

即日起开启活动话题入口,之后的活动统一都放在此处,欢迎大家的加入!


最新内容

相似技术帖

官网相关资源

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