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

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

[复制链接]
jundao721 发布时间:2023-9-3 20:52
      最近工作有点忙,板卡的学习和测试稍有延迟。这次主要来测试该板卡的FDCAN功能。从datasheet上可以看到H503是有一个FDCAN接口的。这个总线通信接口当前用的比较多,所以需要好好学习和测试。现在FDCAN支持8Mbps,以前采购的芯片最高支持到5Mbps。     又把原来测试IC的部分翻出来,按照Power和Rx,Tx将MCU板卡和通讯部分进行连接,如图1所示:4 [1 X2 J& Z& y9 M# c
t21.jpg ( c+ S$ ]$ e6 `7 p
图1
6 w9 m8 j( g$ K# X3 k$ n# F     主要用到PB12--CANRx,和PB13--CANTx两个FDCAN1接口,从板图上可以看到接口位置,如图2所示:
, {- y! X5 u! O. x t22.JPG 5 i' C+ l$ F3 b! ]& L! m
图2! q" f( @" r2 @
# G+ v7 U/ U; y1 ^2 ~; l1 y+ p
     好了,言归正传。下载的官方资料里并没有这部分的例程,所以测试思路基本还是先用Cubemx生成基本配置,其他接收滤波配置和发送配置再自己添加。H503是支持250MHz主频的。所以FDCAN的时钟也配置位250MHz,如图3所示:
: Y( c2 l) ]# E1 T t23.JPG 6 ~: K9 d0 i5 U( j. U: B" ^
图3# [9 L. B/ @2 ]- k$ r% h% b
; [  ]: ]7 U0 V" @) d
    FDCAN部分采用正常波特率位1Mbps,数据波特率位2Mbps。其基本配置如图4所示:
5 m( e7 ]2 L6 g t24.JPG # n# r$ g) I1 a+ s# I# r7 B6 Y
图4
, H5 z; C9 P5 v5 @   正常生成代码后,添加接收部分设置和发送部分设置,参考代码如下所示:
/ j; Y  J7 ^" `0 W
  1. FDCAN_FilterTypeDef sFilterConfig;4 {6 _- {. P  [  W
  2. % ~& M( y  d' F- a+ `
  3.   /* Configure Rx filter */
    4 P5 n- p% Q2 n; b1 E
  4.   sFilterConfig.IdType = FDCAN_STANDARD_ID;
    . b  ~( e# N/ ?1 x9 ?
  5.   sFilterConfig.FilterIndex = 0;' [7 |7 S+ V6 q8 {% Q0 w
  6.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;6 J% Y4 M: N2 {3 ^- {3 [
  7.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;  f: d# j/ c8 Z' {. ?* P
  8.   sFilterConfig.FilterID1 = 0x123;//receive ID: H9 ?8 _/ ^$ W! k
  9.   sFilterConfig.FilterID2 = 0x7FF;
    % c9 r% I$ u& M0 l0 ^+ v
  10.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)5 ^" e$ y2 y/ u4 r- E6 F3 n
  11.   {6 m* ^5 |7 R5 M; D  L7 S
  12.     Error_Handler();( \& s: w( `3 H% p) l+ P
  13.   }
    3 V# Y  I1 D7 F
  14. 4 v  n- o6 h  N, ]0 a. K/ o
  15.   /* Configure global filter:
    " _5 H* r4 |9 v2 C$ N" @* x; r
  16.      Filter all remote frames with STD and EXT ID
    6 j* Y2 V& Q2 b0 h+ u) L4 W6 R) l5 x
  17.      Reject non matching frames with STD ID and EXT ID */
    ' z, j" {8 j6 B. M% Q- ?
  18.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)* z( X& i! d7 @6 ^2 `
  19.   {0 ~0 j% Y/ Q0 A/ S: ~2 X
  20.     Error_Handler();
    . K- D# t, r* Q  H
  21.   }
    7 t, \, C: _; N% F, }7 S0 \; h' q

  22. % e' I) g1 Y  K8 {) P, A1 |
  23.   /* Start the FDCAN module *// q& U; F5 B8 g: P
  24.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)! {, f. F% h: O9 n2 V
  25.   {1 V+ i$ E1 N" o5 t% s3 ?+ [
  26.     Error_Handler();
    , w" [" ?7 }/ z8 M* r
  27.   }
    ! ~( V3 J. v2 |$ Y
  28. 9 _8 c+ m+ X, @5 E- n
  29.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    # Z8 Z- K. i2 e4 D" Y
  30.   {
    7 ]. A# W: U5 Z
  31.     Error_Handler();; [# u5 E$ o, G5 A3 b6 [, s0 U9 E
  32.   }
复制代码
  1. if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData) != HAL_OK)4 l2 z* f8 ~7 N& |: m; ^7 Z8 {
  2.         {2 D7 _7 w9 ?' n$ ?  F
  3.           /* Transmission request Error */1 ^) J% t( T8 \. _, z: l& f
  4.           Error_Handler();* Z  `6 P$ c; V% Z- m
  5.         }0 ~7 {2 B5 U* m9 E7 B1 }
  6.         HAL_Delay(1000);
复制代码
5 v# i" |- C$ c8 C2 D- P

3 B- ^% M. Z; [; K
" ^3 U& i9 ]9 S4 X2 F, F: D7 x  K  上位机测试软件正常接收,如图5所示:
) B/ x# g$ `/ h+ q+ X: L   t25.JPG
$ T: o7 ~# Y# C/ }图5
+ ^/ ]1 }( r9 e. e+ z. \ 但是接收中断没有执行,故接收callback函数也没有执行到。暂时还没找到事故原因,配置应该都是正常的。找到原因后,再补充这部分。+ e0 }. {" X" O
收藏 评论2 发布时间:2023-9-3 20:52

举报

2个回答
STMCU-管管 回答时间:2023-9-5 11:54:33
可以,再接再厉
# @1 z% ~- ~/ a
无极考拉 回答时间:2023-9-7 09:13:35

学习一下

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