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

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

[复制链接]
jundao721 发布时间:2023-9-3 20:52
      最近工作有点忙,板卡的学习和测试稍有延迟。这次主要来测试该板卡的FDCAN功能。从datasheet上可以看到H503是有一个FDCAN接口的。这个总线通信接口当前用的比较多,所以需要好好学习和测试。现在FDCAN支持8Mbps,以前采购的芯片最高支持到5Mbps。     又把原来测试IC的部分翻出来,按照Power和Rx,Tx将MCU板卡和通讯部分进行连接,如图1所示:
: o- J7 U% x: X% ?/ Z t21.jpg
1 H* [7 e' o/ E* ~7 G7 Z) D图1
4 S+ U8 Q! w! y     主要用到PB12--CANRx,和PB13--CANTx两个FDCAN1接口,从板图上可以看到接口位置,如图2所示:
/ K! s: H6 x6 J/ t8 B% [% d' q t22.JPG
$ d: N+ w+ z6 P" |9 J/ x图2
' Z$ z& A0 W* S7 Z! \
7 a+ v7 R# X$ y; g6 x3 c     好了,言归正传。下载的官方资料里并没有这部分的例程,所以测试思路基本还是先用Cubemx生成基本配置,其他接收滤波配置和发送配置再自己添加。H503是支持250MHz主频的。所以FDCAN的时钟也配置位250MHz,如图3所示:
& s  r3 c2 ^/ w# I( E" a t23.JPG ( H6 ?+ p/ B, `9 {7 ~* P% I6 h( j: u# r
图30 a" K, K8 i; S# P
/ s  [( h2 f4 D  f" x/ T6 u0 n0 W4 b
    FDCAN部分采用正常波特率位1Mbps,数据波特率位2Mbps。其基本配置如图4所示:5 U# B9 L" F& F+ o0 D# W
t24.JPG
) F- y. a- y; g) U图4
. n. ?' |7 Z1 a9 _+ l   正常生成代码后,添加接收部分设置和发送部分设置,参考代码如下所示:% M3 |6 m0 ^2 N4 a- h# i
  1. FDCAN_FilterTypeDef sFilterConfig;- |' n" @2 w1 f0 `+ F

  2. ) f7 p3 o1 }5 t  B7 b# X
  3.   /* Configure Rx filter *// Z: x* I: {0 S7 Z6 }3 t4 ~
  4.   sFilterConfig.IdType = FDCAN_STANDARD_ID;
    5 U- e4 v$ d) t% u0 V
  5.   sFilterConfig.FilterIndex = 0;: ^. ]# C9 t1 ^6 g1 i3 }, J4 N
  6.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;* v  p+ S- @3 |2 g
  7.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
    ' g# L  F5 R8 G/ u% m
  8.   sFilterConfig.FilterID1 = 0x123;//receive ID# W  Q8 U! k( L( B, S1 a
  9.   sFilterConfig.FilterID2 = 0x7FF;
    . \+ U2 d5 k% u7 b
  10.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)2 q3 w* k1 g9 `
  11.   {
    0 k4 K- Z7 W/ ~# l& l. Z
  12.     Error_Handler();
    $ ?7 H! Y+ d1 p# Y6 v6 l
  13.   }
    + D1 n6 S6 z& W* E; {- [) N

  14. 1 a6 o" N& X& i9 o" ~1 B. w- z
  15.   /* Configure global filter:
    ; ?1 v% f5 q$ a. o/ R( `4 I& G' t
  16.      Filter all remote frames with STD and EXT ID
    , c, w- \$ f- }1 w' `) q
  17.      Reject non matching frames with STD ID and EXT ID */
    , K# _% t; P& h# r8 u& m! |
  18.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
    5 d3 f4 y2 o' t( @  m
  19.   {) Q( Z: A% x/ @0 U
  20.     Error_Handler();( }2 w& b% X* I/ n8 U7 N# q
  21.   }
    * J. j$ s1 x% u8 W% w
  22. * b/ z5 X1 Z9 j) n* h$ J
  23.   /* Start the FDCAN module */) |( j; S0 D3 K4 d: a2 \
  24.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
    , i& @; B3 M2 z1 e, n
  25.   {; h) u- ^* u* Z& o
  26.     Error_Handler();4 v/ w) P. y/ T$ n& Y' S
  27.   }
    1 L+ V" t- S3 R  |% F
  28.   n4 e% `% ~2 A: B4 I# @
  29.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)/ W6 s; |2 I, c2 d$ k( g2 p4 {' D
  30.   {
    ) y# d/ M1 R$ P. t- D/ b
  31.     Error_Handler();! y  A; L5 q( ?; A! u
  32.   }
复制代码
  1. if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData) != HAL_OK)
    , k& d, m0 S; t' o; Y
  2.         {* J9 v0 U% b) ]7 Z3 I+ d3 I1 X
  3.           /* Transmission request Error */
    : H; G, Y7 l9 _3 Z- [
  4.           Error_Handler();
    $ r3 R, K: F& R- s
  5.         }
    ( q1 }  m' b% Z3 O9 v5 P, y4 n5 r+ l
  6.         HAL_Delay(1000);
复制代码
, w8 X1 a) K" t9 @

% [( z4 r! ~& t' c) O; {6 q4 g2 M0 ^& r) f! j  x
  上位机测试软件正常接收,如图5所示:
! q: B8 S- n" L9 |+ T' S   t25.JPG
. W/ K. T8 E. y5 m3 F, ^0 @图5/ v. U" W% ]9 g: ?3 g  X/ K
但是接收中断没有执行,故接收callback函数也没有执行到。暂时还没找到事故原因,配置应该都是正常的。找到原因后,再补充这部分。: w1 u, B& Z9 @- E* }1 s& e
收藏 评论2 发布时间:2023-9-3 20:52

举报

2个回答
STMCU-管管 回答时间:2023-9-5 11:54:33
可以,再接再厉
! P2 n$ ?8 [  }# I
无极考拉 回答时间:2023-9-7 09:13:35

学习一下

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版