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

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

[复制链接]
jundao721 发布时间:2023-9-3 20:52
      最近工作有点忙,板卡的学习和测试稍有延迟。这次主要来测试该板卡的FDCAN功能。从datasheet上可以看到H503是有一个FDCAN接口的。这个总线通信接口当前用的比较多,所以需要好好学习和测试。现在FDCAN支持8Mbps,以前采购的芯片最高支持到5Mbps。     又把原来测试IC的部分翻出来,按照Power和Rx,Tx将MCU板卡和通讯部分进行连接,如图1所示:2 y5 r0 X; t7 U2 y5 T
t21.jpg ' U+ R6 Z/ e. m6 q" _
图1
3 \! s- w2 s: _) _     主要用到PB12--CANRx,和PB13--CANTx两个FDCAN1接口,从板图上可以看到接口位置,如图2所示:1 i, j6 x' y+ }
t22.JPG   B2 s) Y0 N+ v9 R6 C7 k# B
图26 B& v+ s! v% L. o
& k( V! z/ U5 H5 R5 T
     好了,言归正传。下载的官方资料里并没有这部分的例程,所以测试思路基本还是先用Cubemx生成基本配置,其他接收滤波配置和发送配置再自己添加。H503是支持250MHz主频的。所以FDCAN的时钟也配置位250MHz,如图3所示:
! o# ^: O/ Q8 B$ g! h t23.JPG ) [# O4 |" u( m- l
图3
3 J/ B$ G% D/ k
" z+ h, ?9 E  F# S    FDCAN部分采用正常波特率位1Mbps,数据波特率位2Mbps。其基本配置如图4所示:# f! [6 S. @: E* d0 b' Q. a* a  y7 c% C
t24.JPG ( a2 W. n! ~; u3 {+ Q
图4% Q0 J, J: [: V% C% N3 B
   正常生成代码后,添加接收部分设置和发送部分设置,参考代码如下所示:1 q2 ^/ P% Q% c- V: |' U. ]
  1. FDCAN_FilterTypeDef sFilterConfig;
    * K* Z  T# x. ?2 s3 X4 v% ?
  2. 5 F. W3 R4 a6 A1 E$ O
  3.   /* Configure Rx filter */
    4 S% D' Y% A) ^
  4.   sFilterConfig.IdType = FDCAN_STANDARD_ID;9 `+ t) `3 z+ {: K( B5 m
  5.   sFilterConfig.FilterIndex = 0;; w2 _: B& Z) S8 N; ~0 v
  6.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;
    ( [5 ~! l5 `* h. a4 u0 b5 L# ]
  7.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;. d5 n) A( P) S/ z  H0 K
  8.   sFilterConfig.FilterID1 = 0x123;//receive ID5 ~! D5 a$ E6 C4 J8 M7 X, U. P
  9.   sFilterConfig.FilterID2 = 0x7FF;( V6 \4 k* l& _+ x% A  G: J) t
  10.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)
    * Z4 C0 Y, H# d" Z5 F5 m5 [$ r
  11.   {
    / Y6 W( F( u/ [8 s
  12.     Error_Handler();
    ! k; o! w) `! x2 y- d
  13.   }
    * S8 d1 t4 P3 Y# J4 u2 }0 |
  14. ) ?* Z1 t. V) C) H0 l6 D: s
  15.   /* Configure global filter:0 R2 k+ u; K  ^- y/ F, b2 R
  16.      Filter all remote frames with STD and EXT ID
    & b$ S- U8 Z$ h/ P- ]
  17.      Reject non matching frames with STD ID and EXT ID */
    - e+ U# v% J) |3 n% p1 g) d4 n
  18.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)# E! ~) M. l2 R* W/ `  m" ?
  19.   {
    # Q& r! z$ v& ^
  20.     Error_Handler();
    : g( C/ m1 P1 p2 K; t
  21.   }# f8 F$ H$ G0 I5 q) r0 v
  22. $ q0 N' m6 p$ T% `, i
  23.   /* Start the FDCAN module */4 |7 W7 ~' _" j, j+ ^' O6 C' I
  24.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)4 y" \) \3 Z& p; `7 M- r  {
  25.   {- g2 F( C- V: a! C6 l) O# f
  26.     Error_Handler();9 D- E4 u6 i& Q  k7 L
  27.   }
    , ^: k, v3 T  Z6 N# ?& P& _
  28. 3 n  D9 t* ~6 S& T! d
  29.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)2 W8 @7 S/ g9 x; c3 r3 T: o8 f
  30.   {/ U8 Z# F* s; F
  31.     Error_Handler();" R) j# y  S3 Y2 s8 J5 k4 m- `# U
  32.   }
复制代码
  1. if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData) != HAL_OK)
    / h) K3 ]0 {  b
  2.         {
    7 t5 Y6 V* t1 x2 {0 V
  3.           /* Transmission request Error */
    : Q( w! Z% s' z
  4.           Error_Handler();' }7 ?% s4 l& @
  5.         }0 K. \4 K& S, v, t6 _, b! \: B& K
  6.         HAL_Delay(1000);
复制代码

! i% s7 P4 L: w% `. t
; W- n! M1 V/ ?1 b& Z, J
9 R) @$ D9 q) v+ o  上位机测试软件正常接收,如图5所示:) y0 V2 Q' W- q9 f7 f6 M
   t25.JPG ( p4 d3 ~# D- e
图55 A( E: B0 Z. w5 k4 U0 T$ k
但是接收中断没有执行,故接收callback函数也没有执行到。暂时还没找到事故原因,配置应该都是正常的。找到原因后,再补充这部分。. C- C5 n1 b7 N+ p# N
赞 收藏 评论2 发布时间:2023-9-3 20:52

举报

2个回答
STMCU-管管 回答时间:2023-9-5 11:54:33
可以,再接再厉. l# V+ p& d; k( o6 R
无极考拉 回答时间:2023-9-7 09:13:35

学习一下

所属标签

ST中文论坛活动

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


最新内容

相似技术帖

官网相关资源

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