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

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

[复制链接]
jundao721 发布时间:2023-9-3 20:52
      最近工作有点忙,板卡的学习和测试稍有延迟。这次主要来测试该板卡的FDCAN功能。从datasheet上可以看到H503是有一个FDCAN接口的。这个总线通信接口当前用的比较多,所以需要好好学习和测试。现在FDCAN支持8Mbps,以前采购的芯片最高支持到5Mbps。     又把原来测试IC的部分翻出来,按照Power和Rx,Tx将MCU板卡和通讯部分进行连接,如图1所示:
: k" Q# w7 c" B; U% B; ?0 b7 j t21.jpg 9 v8 {0 y% q' M4 z/ T8 o; B& o
图11 [! C0 y3 \& A& f1 @
     主要用到PB12--CANRx,和PB13--CANTx两个FDCAN1接口,从板图上可以看到接口位置,如图2所示:% {0 S7 d6 p! n- _9 L6 e4 ~
t22.JPG
0 Z# P- u* J4 Z9 ~( Z" b* q图25 o1 m" M3 u6 @4 t9 Y8 R6 H( y) n2 j
9 A. F' a! ^8 [" q3 n3 z  [
     好了,言归正传。下载的官方资料里并没有这部分的例程,所以测试思路基本还是先用Cubemx生成基本配置,其他接收滤波配置和发送配置再自己添加。H503是支持250MHz主频的。所以FDCAN的时钟也配置位250MHz,如图3所示:
& Q  e) H6 j2 H3 ^8 B. n t23.JPG 4 H# r  @, K7 H/ L# ?6 y
图3
1 y' x5 Y4 z& h7 X$ e. o1 Q% @) _/ [% H- a4 t" y1 u; M' q
    FDCAN部分采用正常波特率位1Mbps,数据波特率位2Mbps。其基本配置如图4所示:
: q3 \) S2 W7 }$ a" l) N! {& D t24.JPG
9 y" ]- j, Y+ d+ H. U图4+ L' S, \" q2 \3 {4 F$ W
   正常生成代码后,添加接收部分设置和发送部分设置,参考代码如下所示:
" F* R$ E' ^$ F) ^
  1. FDCAN_FilterTypeDef sFilterConfig;: g6 v+ @' |' J1 Q( ~/ C
  2. * G: h5 F% S1 o" Z* t1 W
  3.   /* Configure Rx filter */
    % E9 l6 {& L9 t( N; r
  4.   sFilterConfig.IdType = FDCAN_STANDARD_ID;, d# g7 B# |! c+ o% x
  5.   sFilterConfig.FilterIndex = 0;0 ]$ G0 T( U! X+ E+ p7 w! Z
  6.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;
    ( o% g. ^! ~% d9 D+ @
  7.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
    ' l& Z( B- |& ^# g$ ^
  8.   sFilterConfig.FilterID1 = 0x123;//receive ID6 D/ R6 g/ ^' X6 N% T3 j
  9.   sFilterConfig.FilterID2 = 0x7FF;1 _* b. @) F8 F$ W
  10.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)! N) B8 ^6 M* H- i" r- ?9 ?
  11.   {
    ) p0 I6 v, |, y# [9 Y0 W
  12.     Error_Handler();
    0 D: h, ^' u! J8 I2 f
  13.   }
    4 U/ q' D$ Q7 c* e7 I

  14. * x6 f" [% o+ Y* ?/ C/ f
  15.   /* Configure global filter:
    % K( x" I0 V2 D& d  R
  16.      Filter all remote frames with STD and EXT ID0 l, h) m; F& F
  17.      Reject non matching frames with STD ID and EXT ID */
    : y' u2 P) }- o8 S' w
  18.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
    . n* h' D4 k. d$ g
  19.   {
    * I' o' o+ c. G3 D! z
  20.     Error_Handler();: D# N8 \& B: N2 A
  21.   }# @6 b; X& l* M/ q; t% g

  22. . J% ?5 s4 d% `7 Q5 V& ^
  23.   /* Start the FDCAN module */
    / M0 j6 d* r4 w
  24.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)* {% A; U7 \  A$ X! d8 u
  25.   {5 A9 W$ F% C* m6 b
  26.     Error_Handler();
    6 u: [* r5 O3 }1 E
  27.   }! f2 x* ~; x& ], C  S# m* S# p

  28. - d( B+ ]$ ~& t2 Q+ H3 s
  29.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    + v$ x9 {' U3 r1 t0 R
  30.   {
    8 c& c/ b0 Z1 [; K$ c! X6 a1 y
  31.     Error_Handler();
    3 m  r$ t$ v* \
  32.   }
复制代码
  1. if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData) != HAL_OK)5 s: \8 T; S6 d- `7 i0 e+ n  B
  2.         {
    & X8 {. N$ P; K2 P
  3.           /* Transmission request Error */
    + m) r% l  I! n" H( ^
  4.           Error_Handler();
    * \& r. R- `4 x; y- _. o
  5.         }
    5 p3 B. ?9 E3 }7 r8 Q9 ]
  6.         HAL_Delay(1000);
复制代码

3 M. t8 f3 j% z  U- ^
, Z- ?7 L$ }2 z+ ?( Y
: Q1 H4 x# f1 E4 _' L  上位机测试软件正常接收,如图5所示:$ N1 b4 G  p) w' Z8 W
   t25.JPG
& K$ I/ ^+ c0 |& M图51 M9 W( \( Z( E
但是接收中断没有执行,故接收callback函数也没有执行到。暂时还没找到事故原因,配置应该都是正常的。找到原因后,再补充这部分。8 B5 E7 @* y; ~; E) {/ F
赞 收藏 评论2 发布时间:2023-9-3 20:52

举报

2个回答
STMCU-管管 回答时间:2023-9-5 11:54:33
可以,再接再厉; j& s% D; ]' [7 G& N* _
无极考拉 回答时间:2023-9-7 09:13:35

学习一下

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