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

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

[复制链接]
jundao721 发布时间:2023-9-3 20:52
      最近工作有点忙,板卡的学习和测试稍有延迟。这次主要来测试该板卡的FDCAN功能。从datasheet上可以看到H503是有一个FDCAN接口的。这个总线通信接口当前用的比较多,所以需要好好学习和测试。现在FDCAN支持8Mbps,以前采购的芯片最高支持到5Mbps。     又把原来测试IC的部分翻出来,按照Power和Rx,Tx将MCU板卡和通讯部分进行连接,如图1所示:. K3 T6 r5 b( c9 r- j5 R
t21.jpg ; L; {9 ]8 ^, y7 E& |  v, U
图1
! \4 o  o- F3 y) v' \+ c     主要用到PB12--CANRx,和PB13--CANTx两个FDCAN1接口,从板图上可以看到接口位置,如图2所示:* |+ m7 s' }$ Z
t22.JPG
$ z% T. H- ]2 t8 ^3 r/ B. {/ g0 ^/ \图26 q, ], ]9 J5 a) M9 M- N7 C/ [
- O6 \3 ?4 |$ Y2 U0 J/ }" ~% }; s: A
     好了,言归正传。下载的官方资料里并没有这部分的例程,所以测试思路基本还是先用Cubemx生成基本配置,其他接收滤波配置和发送配置再自己添加。H503是支持250MHz主频的。所以FDCAN的时钟也配置位250MHz,如图3所示:9 j/ A" \6 I0 \
t23.JPG
) ?. R/ }6 f$ ~图3
  ]+ {% u4 `' K: n2 D- T% h2 m# _; O; ?! K1 D
    FDCAN部分采用正常波特率位1Mbps,数据波特率位2Mbps。其基本配置如图4所示:2 j9 ]  a# J0 b1 S
t24.JPG 4 J  G& G, ^* y6 y8 b4 }; O* l
图4* q9 h: S' I) i, N+ O8 g$ s
   正常生成代码后,添加接收部分设置和发送部分设置,参考代码如下所示:
: ?4 I) o. J3 P1 _; g2 m$ d2 Q) w
  1. FDCAN_FilterTypeDef sFilterConfig;" l4 B( W. P- M4 W) T8 i- J6 S
  2. . [! b% ]5 P) O3 c5 ^% \
  3.   /* Configure Rx filter */
    9 g' z) ?4 H, }) [# x, j% J. j& r
  4.   sFilterConfig.IdType = FDCAN_STANDARD_ID;
    4 o) O  n$ M  E3 m, [. f+ N
  5.   sFilterConfig.FilterIndex = 0;8 F* h8 H) t5 ~3 ~7 R9 _
  6.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;
    3 X5 C: b% ]5 Q+ ~" T
  7.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;& g4 J8 ?+ k7 C* s' y9 ~
  8.   sFilterConfig.FilterID1 = 0x123;//receive ID
    # I  x! f9 U7 q! T
  9.   sFilterConfig.FilterID2 = 0x7FF;
    & h6 e: a. R3 O# b0 n2 U
  10.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)$ q, E- y4 w- V* P
  11.   {5 T( ]5 V0 Y) C) l1 g- |( c- y0 |
  12.     Error_Handler();8 G4 ^) i( r5 Y% I2 L- K
  13.   }" G9 w1 J' [% T& x
  14. 4 v0 `9 c2 L6 C5 B
  15.   /* Configure global filter:
      E4 |/ |" I  O; C6 g
  16.      Filter all remote frames with STD and EXT ID
    # X3 L1 H5 u8 s4 H
  17.      Reject non matching frames with STD ID and EXT ID */0 N5 j! {# Y: l" r4 d/ n/ A- @' m
  18.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)% u, a' R. J0 {: o/ v. a
  19.   {
    4 C9 X  S: t' T( K+ b+ J9 d
  20.     Error_Handler();/ S- H* t) I7 T5 ^
  21.   }
    1 K- a* Z; u$ {; F: g- {2 k

  22. ; }" m- g# K# E4 o
  23.   /* Start the FDCAN module */
    / N2 a5 Q3 U! s* q, u
  24.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)1 G# N5 p+ |& f5 Z
  25.   {
    , _" v( s' {! U6 w. ]* D: {  m
  26.     Error_Handler();
    & A8 J7 X( T- a
  27.   }
    6 ^2 g( F, d/ y* B& K1 s
  28. 5 y1 G' [! j% m' d& J
  29.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    ; t+ C' S8 [' y: J- y
  30.   {; R/ X1 `/ G( F" H
  31.     Error_Handler();' m+ W) W2 I+ `1 {7 ~8 }: R* n
  32.   }
复制代码
  1. if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData) != HAL_OK)  A# x- ^0 h( e% K+ D- D- v6 e
  2.         {
    $ v# ~7 n: x2 r* N) g. s8 E1 ~0 V
  3.           /* Transmission request Error */% T$ `2 R& N) Y$ T" Z8 ?
  4.           Error_Handler();
    : [. y0 }" x. l; W  u2 F& z
  5.         }
    # N" F" U( ~  b5 L4 ^7 S
  6.         HAL_Delay(1000);
复制代码
! ~! S# B1 E- r7 W1 l

& H5 {/ v; B: {- M& S( V2 W
$ _9 R( {% X* O  上位机测试软件正常接收,如图5所示:2 b6 a0 P: M& w! U. q% }
   t25.JPG
: K+ r/ ^) z0 h  ^5 ?图52 F8 k$ L4 H) w: E  o
但是接收中断没有执行,故接收callback函数也没有执行到。暂时还没找到事故原因,配置应该都是正常的。找到原因后,再补充这部分。
3 Y' F, N/ b" I/ Y
赞 收藏 评论2 发布时间:2023-9-3 20:52

举报

2个回答
STMCU-管管 回答时间:2023-9-5 11:54:33
可以,再接再厉
5 n- h8 P* R  R! G$ v; a+ w& X
无极考拉 回答时间:2023-9-7 09:13:35

学习一下

所属标签

ST中文论坛活动

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


最新内容

相似技术帖

官网相关资源

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