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

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

[复制链接]
jundao721 发布时间:2023-9-3 20:52
      最近工作有点忙,板卡的学习和测试稍有延迟。这次主要来测试该板卡的FDCAN功能。从datasheet上可以看到H503是有一个FDCAN接口的。这个总线通信接口当前用的比较多,所以需要好好学习和测试。现在FDCAN支持8Mbps,以前采购的芯片最高支持到5Mbps。     又把原来测试IC的部分翻出来,按照Power和Rx,Tx将MCU板卡和通讯部分进行连接,如图1所示:' {- |8 g0 Z' J4 }$ T) f
t21.jpg
; {. S' ~/ S- M图1
0 Z, K' X; B4 m     主要用到PB12--CANRx,和PB13--CANTx两个FDCAN1接口,从板图上可以看到接口位置,如图2所示:
, z  {) R$ r7 v( G5 F8 M t22.JPG : S  P- m0 x4 m% P
图2# y/ @& j# X, i6 X

- l0 P5 B" V8 K7 N     好了,言归正传。下载的官方资料里并没有这部分的例程,所以测试思路基本还是先用Cubemx生成基本配置,其他接收滤波配置和发送配置再自己添加。H503是支持250MHz主频的。所以FDCAN的时钟也配置位250MHz,如图3所示:/ Z3 @6 F" Z6 @( l
t23.JPG " |/ X: w% Y# e, C) L
图3
8 J% t/ x% j9 p& f5 Z+ l7 B. [0 a, z# D
    FDCAN部分采用正常波特率位1Mbps,数据波特率位2Mbps。其基本配置如图4所示:
0 m; p% f! ^, y8 H9 k6 }1 ~ t24.JPG
7 [( Y$ x- d4 [+ k图4
3 r0 A* K7 N" T$ B# T, ~1 t: _+ O9 Q   正常生成代码后,添加接收部分设置和发送部分设置,参考代码如下所示:+ e, V2 h$ {, V# B
  1. FDCAN_FilterTypeDef sFilterConfig;# C+ v* H/ g7 J1 I: f; A
  2. : Z0 e2 P3 S. p' k
  3.   /* Configure Rx filter */
    3 b. V8 S: @% I0 Y. e- p+ w
  4.   sFilterConfig.IdType = FDCAN_STANDARD_ID;5 S! L" |! I) Z  }, {) O
  5.   sFilterConfig.FilterIndex = 0;
    : `+ x. m5 P4 a, T
  6.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;' \0 a( l/ M- V
  7.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
    : K4 r% t1 Y6 t5 y, y
  8.   sFilterConfig.FilterID1 = 0x123;//receive ID
    , ]- L" w1 P" ]* z- y
  9.   sFilterConfig.FilterID2 = 0x7FF;+ W) T- e9 e, U  r
  10.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)0 G9 L; E1 C3 k8 }) O3 C
  11.   {
    4 U. B2 |9 R) T5 l% G5 {
  12.     Error_Handler();
    5 A) c4 v0 T2 p+ T+ B  f
  13.   }8 G8 W# s" e* [) r7 \# c

  14. 1 i& ]4 A7 d. _- l; N
  15.   /* Configure global filter:
    , J8 h/ O" D/ J" a1 N
  16.      Filter all remote frames with STD and EXT ID# }' [7 E7 Q2 t/ C
  17.      Reject non matching frames with STD ID and EXT ID */* ]( ?/ U* f# F9 h; V' F
  18.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
    ! T& J, l8 x% n: \/ h& \( ?9 G. ~
  19.   {
    / P( E; O' K. E  G6 K
  20.     Error_Handler();/ e' u8 ^$ S1 P! d
  21.   }, @* B+ L) ?) ^1 `% S* y+ ?: B
  22. % V4 p5 \' p  ^
  23.   /* Start the FDCAN module */, j3 s# ]& j" L
  24.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)- B# h0 B2 M. l
  25.   {
    2 c. y9 [3 k" i7 T- S1 P
  26.     Error_Handler();
    1 d# d& p+ A0 G" H9 I# c: t
  27.   }* {7 r) r. ]* O5 n% k

  28. & @5 `/ x3 l* ]# R. B4 ^2 N0 F' |% d- Q
  29.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)$ i' u  I! E2 C. d9 F
  30.   {
    * d( C, o( C7 W/ W' J
  31.     Error_Handler();
    ( p: l0 W, `$ n! `9 m$ P5 Z
  32.   }
复制代码
  1. if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData) != HAL_OK), q; E1 n7 u  [$ [- K% M8 S
  2.         {$ A1 }, U; Z& ]9 B
  3.           /* Transmission request Error */
    5 z: A- \. k; v* m9 {! ]3 c
  4.           Error_Handler();
    8 O8 f2 `  T( n" [8 G) ]) k7 q
  5.         }- s1 f; y. H( U9 u8 g3 v: A2 e) o/ t
  6.         HAL_Delay(1000);
复制代码

5 x8 u* w8 [/ e4 D( I( P; {0 o# R- u) R1 ?

# P# o$ R% q: `* @4 n+ |" o/ ?  上位机测试软件正常接收,如图5所示:
9 o1 r0 j: O+ i8 w/ y3 h   t25.JPG 7 e+ c) f# u% h' l! B% v
图53 y/ h2 S5 U- D$ {9 T
但是接收中断没有执行,故接收callback函数也没有执行到。暂时还没找到事故原因,配置应该都是正常的。找到原因后,再补充这部分。" |4 W+ h3 A* r. e/ O8 k# [
赞 收藏 评论2 发布时间:2023-9-3 20:52

举报

2个回答
STMCU-管管 回答时间:2023-9-5 11:54:33
可以,再接再厉$ w7 a' l! j) k9 \& \' W/ [+ \0 P" z
无极考拉 回答时间:2023-9-7 09:13:35

学习一下

所属标签

ST中文论坛活动

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


最新内容

相似技术帖

官网相关资源

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