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

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

[复制链接]
jundao721 发布时间:2023-9-3 20:52
      最近工作有点忙,板卡的学习和测试稍有延迟。这次主要来测试该板卡的FDCAN功能。从datasheet上可以看到H503是有一个FDCAN接口的。这个总线通信接口当前用的比较多,所以需要好好学习和测试。现在FDCAN支持8Mbps,以前采购的芯片最高支持到5Mbps。     又把原来测试IC的部分翻出来,按照Power和Rx,Tx将MCU板卡和通讯部分进行连接,如图1所示:8 [% Y0 g) K& X
t21.jpg 0 j4 ^' F8 o( ]0 X8 h
图1- l4 o2 F. \# M6 Q# g
     主要用到PB12--CANRx,和PB13--CANTx两个FDCAN1接口,从板图上可以看到接口位置,如图2所示:& ^: E& [) m( U0 b! E; b/ u
t22.JPG # }$ Y& v& `7 I; ^8 Y
图2
" x9 h$ f: \3 c5 o! W, z+ L2 s! S, ^  y* L$ D5 |5 Z8 F
     好了,言归正传。下载的官方资料里并没有这部分的例程,所以测试思路基本还是先用Cubemx生成基本配置,其他接收滤波配置和发送配置再自己添加。H503是支持250MHz主频的。所以FDCAN的时钟也配置位250MHz,如图3所示:
  B' V* U5 y# x% i& q8 ? t23.JPG
- \4 m! ^. U0 B图3
6 `  q) b: T: |
2 j' X& O$ a6 L0 \; Z    FDCAN部分采用正常波特率位1Mbps,数据波特率位2Mbps。其基本配置如图4所示:
% R% K/ x9 o6 m- b* d# r& y t24.JPG
. I# S  H8 U1 s3 S7 X! y图4
5 e7 C4 m2 B+ E2 _+ h   正常生成代码后,添加接收部分设置和发送部分设置,参考代码如下所示:
$ w. g# D& B; T$ K* l
  1. FDCAN_FilterTypeDef sFilterConfig;
    2 [: `9 ?9 a0 K; U
  2. * w( R) O2 j2 Q9 i4 ?4 G
  3.   /* Configure Rx filter */. V# u7 C; l) w' Q5 y0 Z
  4.   sFilterConfig.IdType = FDCAN_STANDARD_ID;
    4 Z2 K4 u' D) y0 y. X
  5.   sFilterConfig.FilterIndex = 0;
    + Q/ V) @, c. m, W: |
  6.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;4 H6 G* V; D1 }& L; S
  7.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
    7 l" p: T' {! V) K! K: {% V  B$ z
  8.   sFilterConfig.FilterID1 = 0x123;//receive ID
    & t) K2 J9 l, N# e9 X+ T. z
  9.   sFilterConfig.FilterID2 = 0x7FF;, [& H: Q/ _: q9 z- x
  10.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK), r+ g- j1 z, n. v
  11.   {
    3 K5 U- k4 Y1 l, [% W
  12.     Error_Handler();* N$ F( E% r. R% l* _
  13.   }* w; j7 A& e6 _& ?4 o
  14. - v4 `( ^, f0 {2 M1 w. Z( B8 \
  15.   /* Configure global filter:& ?2 k3 s2 }% T( K1 v4 y9 G& M1 E
  16.      Filter all remote frames with STD and EXT ID) {: `; B% M! }# l9 N1 }
  17.      Reject non matching frames with STD ID and EXT ID */& ~$ Q' V* N( Z0 Y: W- }
  18.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)+ r# `- g- z8 Q! @% w. U9 P; g
  19.   {
    & c+ b7 `7 O3 t6 T# Q1 ~; }1 N
  20.     Error_Handler();0 G8 R: u* N* B( O3 |/ O2 v" E
  21.   }
    6 h( [4 h5 q+ ]* q

  22. + P# k2 t' v( x$ V9 ?  F9 G
  23.   /* Start the FDCAN module */
    2 t1 y  e$ u1 }" V; G( T4 P. l
  24.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
    ' K6 b& V* Q& J; B) p, ]: g
  25.   {
    / a0 I( S) {, V/ t, L
  26.     Error_Handler();
    ' O& p; k. X0 S2 D/ A6 o6 z) c2 j
  27.   }6 @3 V' Y+ K; N# {" N
  28. 3 }" p9 \9 I7 c
  29.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    - I% ^; k3 k" r4 y7 e
  30.   {9 i+ U- y" ^- |: H0 C7 {) G
  31.     Error_Handler();
    1 E; e* j/ z# h
  32.   }
复制代码
  1. if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData) != HAL_OK)
    / {9 M  a/ \, S0 k2 |- T( K
  2.         {& {/ \" `' L- Q4 x/ n- j  Y  H
  3.           /* Transmission request Error */
    4 f6 v$ ?4 k) }5 |& s
  4.           Error_Handler();/ d! _/ s; z. ^* }2 C8 y( ]
  5.         }
    9 Y0 s1 g5 U3 w8 n* X, ~2 u% P
  6.         HAL_Delay(1000);
复制代码
, {# g& v7 J1 p) y9 \7 ]/ z

' v% S5 V8 p2 W( Z% r! [( A9 J! D  T% q* _+ H2 U& N
  上位机测试软件正常接收,如图5所示:- l4 i9 `" H: ?; j1 W. E; m
   t25.JPG
4 ?! h; |- e# G: Z4 N' b: b, ?图5( y9 u( i! \5 r: r- u* A3 A
但是接收中断没有执行,故接收callback函数也没有执行到。暂时还没找到事故原因,配置应该都是正常的。找到原因后,再补充这部分。
3 D* T, [* |) J' A0 M: |
收藏 评论2 发布时间:2023-9-3 20:52

举报

2个回答
STMCU-管管 回答时间:2023-9-5 11:54:33
可以,再接再厉
# E& X0 @$ n9 e: v: l. d; s4 u" m
无极考拉 回答时间:2023-9-7 09:13:35

学习一下

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版