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

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

[复制链接]
jundao721 发布时间:2023-9-3 20:52
      最近工作有点忙,板卡的学习和测试稍有延迟。这次主要来测试该板卡的FDCAN功能。从datasheet上可以看到H503是有一个FDCAN接口的。这个总线通信接口当前用的比较多,所以需要好好学习和测试。现在FDCAN支持8Mbps,以前采购的芯片最高支持到5Mbps。     又把原来测试IC的部分翻出来,按照Power和Rx,Tx将MCU板卡和通讯部分进行连接,如图1所示:* W" I# p1 E. r) s# k, P9 }
t21.jpg 3 Y# Y  X' ~3 }9 d# V: Y
图1* _* w! t, P8 i4 ?( {8 d( ]0 j
     主要用到PB12--CANRx,和PB13--CANTx两个FDCAN1接口,从板图上可以看到接口位置,如图2所示:' l% m0 _4 j9 Q: v
t22.JPG
/ }8 Y  T2 K8 T图2* e& S% L; d9 h8 F  D
, [" S7 d" H/ y9 |: h; W. p" p
     好了,言归正传。下载的官方资料里并没有这部分的例程,所以测试思路基本还是先用Cubemx生成基本配置,其他接收滤波配置和发送配置再自己添加。H503是支持250MHz主频的。所以FDCAN的时钟也配置位250MHz,如图3所示:2 x" G' l2 N; }# z! n, a7 ~
t23.JPG 7 B& t. M$ e- s' ]
图3
- Q& S/ o- F3 ~7 E* `8 L0 N' t' Z& O5 S1 S, e+ o
    FDCAN部分采用正常波特率位1Mbps,数据波特率位2Mbps。其基本配置如图4所示:3 k3 w- w/ K, L1 L+ p
t24.JPG , o+ [0 T3 F) L( `6 W* G' a7 X
图43 `) ~: S$ n7 C1 G; |
   正常生成代码后,添加接收部分设置和发送部分设置,参考代码如下所示:
# l! e, t9 x8 a$ ]9 q$ S, s% A! D
  1. FDCAN_FilterTypeDef sFilterConfig;
    1 x5 K2 w! ]5 F
  2. 5 v+ y+ y. E' e1 O1 A: t4 }( \
  3.   /* Configure Rx filter */
    ! j6 p/ q4 v( N6 P1 j3 p! K
  4.   sFilterConfig.IdType = FDCAN_STANDARD_ID;8 ?7 V8 t7 t) C6 n8 I/ c6 {
  5.   sFilterConfig.FilterIndex = 0;
    + a) Y, V  E6 \* y) i: x- Z1 o
  6.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;
    ; K% `; |; F/ h! @1 ]: p
  7.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;* r! ]" X  D+ y) i2 H$ [
  8.   sFilterConfig.FilterID1 = 0x123;//receive ID
    / ~+ {# U0 c* O4 x
  9.   sFilterConfig.FilterID2 = 0x7FF;
    $ j6 }. [" f7 F7 \$ [
  10.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)9 ]( `4 N- U6 d: D' B
  11.   {! a: e( W. W0 U& G$ u  g5 ^1 X9 m
  12.     Error_Handler();3 R  `  @$ g9 E% N2 v( F3 m
  13.   }
    ) f- \2 j  U1 u) t

  14. + a" H. B% t' R' w
  15.   /* Configure global filter:7 I5 p  D2 ^: @! j' o
  16.      Filter all remote frames with STD and EXT ID# K  ], p* M* D* w
  17.      Reject non matching frames with STD ID and EXT ID */0 g& U' G' d) T; ^1 Q# v2 k1 }0 Y
  18.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
    / K, P1 a. N2 }7 W5 N
  19.   {' R8 N$ p# D- g3 z
  20.     Error_Handler();5 `; g6 ~( f: E6 L; O% f0 W! N
  21.   }$ I/ x6 W) c4 x* S
  22. # f% M* f: B2 Q
  23.   /* Start the FDCAN module */
    0 a& @, X$ x4 G) x$ l0 y; X: I
  24.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK); v& r, D0 N% r  ~: w8 A
  25.   {
    9 n$ M( q0 K; l; Q# i
  26.     Error_Handler();
    ) {, t1 `7 |2 N. K5 y1 I
  27.   }: _4 }2 j) [2 B5 P

  28. - s; T$ g* @4 T+ j  Y* U
  29.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    1 f5 \* C4 b! H3 K# x6 T
  30.   {+ P+ H# M+ V0 s% z/ e/ j) @' `
  31.     Error_Handler();
    + H) L6 V; b: u" C
  32.   }
复制代码
  1. if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData) != HAL_OK)
    . T6 e; ^7 o, f
  2.         {: N1 j) A4 o- q1 F9 Y4 m& F. \
  3.           /* Transmission request Error */
    # {; r+ J7 j: t
  4.           Error_Handler();- I0 l9 M" w8 [' i! g4 t( f
  5.         }
      j# j. i& i! n# F
  6.         HAL_Delay(1000);
复制代码
( s4 j# e* {2 |& x) ~1 I

& L' P# e3 [7 U* F3 M# r3 `1 ~( u. X! R7 u2 N, W6 w! D0 c
  上位机测试软件正常接收,如图5所示:
5 n  v( B5 ^8 b; |& x! \9 W   t25.JPG
1 a) h: i8 X3 a: h3 i图5
0 X' T  X  b% K/ x& D1 @1 a5 } 但是接收中断没有执行,故接收callback函数也没有执行到。暂时还没找到事故原因,配置应该都是正常的。找到原因后,再补充这部分。
1 m- S" K3 i3 O" u
收藏 评论2 发布时间:2023-9-3 20:52

举报

2个回答
STMCU-管管 回答时间:2023-9-5 11:54:33
可以,再接再厉6 c: G4 Z7 {9 H% j( d! N
无极考拉 回答时间:2023-9-7 09:13:35

学习一下

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版