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

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

[复制链接]
jundao721 发布时间:2023-9-3 20:52
      最近工作有点忙,板卡的学习和测试稍有延迟。这次主要来测试该板卡的FDCAN功能。从datasheet上可以看到H503是有一个FDCAN接口的。这个总线通信接口当前用的比较多,所以需要好好学习和测试。现在FDCAN支持8Mbps,以前采购的芯片最高支持到5Mbps。     又把原来测试IC的部分翻出来,按照Power和Rx,Tx将MCU板卡和通讯部分进行连接,如图1所示:, \- B1 c3 H; _
t21.jpg
& l9 P; L3 Q/ Z图11 P  |: O% a% l! o  @
     主要用到PB12--CANRx,和PB13--CANTx两个FDCAN1接口,从板图上可以看到接口位置,如图2所示:
% }7 \" Q3 L/ R$ T t22.JPG
1 t4 c; d6 i' ^图2
, k+ {9 {  [# x; P$ S. n6 q  v7 C  I  [1 V( o
     好了,言归正传。下载的官方资料里并没有这部分的例程,所以测试思路基本还是先用Cubemx生成基本配置,其他接收滤波配置和发送配置再自己添加。H503是支持250MHz主频的。所以FDCAN的时钟也配置位250MHz,如图3所示:
! l. a3 l4 C/ Z. ?! e t23.JPG
0 J1 z9 `2 {$ Y% Z3 p9 Q图3
5 m+ {* F" `! G! ]* A
: F  @8 S# A& x# `    FDCAN部分采用正常波特率位1Mbps,数据波特率位2Mbps。其基本配置如图4所示:8 b6 x! ?) N  u9 f( H
t24.JPG
7 `- ]1 V9 w& x" Y. [5 @1 x图4
0 k5 J0 m& T: L. h  l% F  o2 b   正常生成代码后,添加接收部分设置和发送部分设置,参考代码如下所示:
: h# o. z( J& f" a
  1. FDCAN_FilterTypeDef sFilterConfig;4 R2 p) `+ Z, L0 Z  u/ Y) D& X
  2. 1 \& f, X; q8 b: v! c
  3.   /* Configure Rx filter */* n8 V- t4 X8 _2 U6 j, U' Q8 C! Z0 A
  4.   sFilterConfig.IdType = FDCAN_STANDARD_ID;& @8 b% y! k2 _0 ?1 _2 A7 h: V
  5.   sFilterConfig.FilterIndex = 0;1 D" F1 z' f2 J8 h* F; _' o
  6.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;
    2 X# h; Y* W8 Q# ^  P
  7.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
    3 M: z- W& d$ m) u" F+ M
  8.   sFilterConfig.FilterID1 = 0x123;//receive ID
    4 C, |. D& s: p# K$ R
  9.   sFilterConfig.FilterID2 = 0x7FF;& v- ~5 H4 ~* D8 B
  10.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)" o+ D4 s+ j/ z' ~4 ~: Y0 M* K
  11.   {
    : u1 L0 z/ R4 q  V5 z
  12.     Error_Handler();! {2 J  y& x. D. g6 W" [* H
  13.   }* p- a6 h7 D3 y4 V
  14. 9 g4 b) A+ w( B7 M: @) d5 I# _. i& g
  15.   /* Configure global filter:8 C9 H  U% ~5 ?6 u
  16.      Filter all remote frames with STD and EXT ID
    . B8 c% r+ Q5 w/ x! o* t
  17.      Reject non matching frames with STD ID and EXT ID */
    , r/ i3 F+ p& H1 I! y
  18.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
      ^3 N6 H& a: }$ N0 S3 \$ V" q
  19.   {+ a/ {" T" ]3 J4 G9 G4 a
  20.     Error_Handler();
    . Z5 s+ F# q+ i" l, o
  21.   }
    ) u2 k) K5 Q0 u- o3 g5 {& N

  22. ) L; z, B) E* \! A3 q- K. v1 A
  23.   /* Start the FDCAN module *// A0 e2 b$ T; u  ?
  24.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)( n( M& h# u6 N4 |
  25.   {
    ' p' h  b) [0 J3 a) P
  26.     Error_Handler();' A9 Z7 v" u# B5 O. w  `% {( C' k1 m2 S
  27.   }
    ! E# b5 T9 s1 a' s  N
  28. 0 b6 Y" W% f! w3 ^# a
  29.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    , ]; S9 m$ |/ @7 u( P! ^. H. m% T
  30.   {9 W& C* m! e- f3 k4 {' Y
  31.     Error_Handler();
    $ n$ y- i" ^! K  J& r# j
  32.   }
复制代码
  1. if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData) != HAL_OK)  t* ]& n$ D$ S3 T' W" Z5 z& }6 ^
  2.         {: |& f( G0 j; U* t5 n
  3.           /* Transmission request Error */9 R1 ?& I, z" k: ]6 f
  4.           Error_Handler();
    8 [# n; X% u9 M; R) o2 e
  5.         }
    + V) ]0 i* O4 ]0 Y! [, X5 P+ ]
  6.         HAL_Delay(1000);
复制代码
  I5 @4 j5 D' a3 O. _6 q
# [$ Z5 o3 X( J  s* y6 q8 c, a* b

- ~( X4 |/ q8 ?& M+ D* j  上位机测试软件正常接收,如图5所示:& ^. U0 A: _# q8 A2 q6 k6 \
   t25.JPG
. j! s2 |0 d* N7 w图59 Y& P6 r. `2 A3 g
但是接收中断没有执行,故接收callback函数也没有执行到。暂时还没找到事故原因,配置应该都是正常的。找到原因后,再补充这部分。, m, ^% Y0 C6 e2 o2 @
赞 收藏 评论2 发布时间:2023-9-3 20:52

举报

2个回答
STMCU-管管 回答时间:2023-9-5 11:54:33
可以,再接再厉
  n3 \8 N- ^1 l! ~
无极考拉 回答时间:2023-9-7 09:13:35

学习一下

所属标签

ST中文论坛活动

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


最新内容

相似技术帖

官网相关资源

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