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

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

[复制链接]
jundao721 发布时间:2023-9-3 20:52
      最近工作有点忙,板卡的学习和测试稍有延迟。这次主要来测试该板卡的FDCAN功能。从datasheet上可以看到H503是有一个FDCAN接口的。这个总线通信接口当前用的比较多,所以需要好好学习和测试。现在FDCAN支持8Mbps,以前采购的芯片最高支持到5Mbps。     又把原来测试IC的部分翻出来,按照Power和Rx,Tx将MCU板卡和通讯部分进行连接,如图1所示:$ r4 v) f9 y3 f: x8 X- R
t21.jpg
% I; f& Y# A7 L1 _" N图1" c/ L7 `1 l$ g9 h8 z
     主要用到PB12--CANRx,和PB13--CANTx两个FDCAN1接口,从板图上可以看到接口位置,如图2所示:
( k! s& M$ w& a5 r3 e* n2 ]* a) D t22.JPG
' j3 w- y- [# P- n2 r, z图27 R0 O1 S3 |5 q6 n
: ?: r# f7 E9 K5 [! I( u# T0 M
     好了,言归正传。下载的官方资料里并没有这部分的例程,所以测试思路基本还是先用Cubemx生成基本配置,其他接收滤波配置和发送配置再自己添加。H503是支持250MHz主频的。所以FDCAN的时钟也配置位250MHz,如图3所示:! _. |& m5 n9 x( a5 P' O0 o. P
t23.JPG
/ ^1 _5 p: a8 M3 n* u- l图34 ^/ c4 s; x9 W2 X
& f, T, L/ P5 F- F
    FDCAN部分采用正常波特率位1Mbps,数据波特率位2Mbps。其基本配置如图4所示:
5 ^7 O- x5 y5 e( w5 X t24.JPG
4 d& t. s6 `3 x图44 H+ Y- _" b4 {+ W) V
   正常生成代码后,添加接收部分设置和发送部分设置,参考代码如下所示:+ c' m' A, N8 a9 U% b. ~
  1. FDCAN_FilterTypeDef sFilterConfig;/ r$ i* K" y' z" n' U* u/ V

  2. / }! L/ V5 _% j2 r# R- ~8 v
  3.   /* Configure Rx filter */
    7 |, \* J' E* X& Z0 e, C4 e' q
  4.   sFilterConfig.IdType = FDCAN_STANDARD_ID;' B0 F4 a5 b5 ]1 r' B: u
  5.   sFilterConfig.FilterIndex = 0;
    " j# \: K: q$ t* j6 ~
  6.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;
    ( v0 H  K4 ^* V* S& W) I! g
  7.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
    ! _/ w, w6 D6 M) |. n& d
  8.   sFilterConfig.FilterID1 = 0x123;//receive ID
    9 q- }5 X8 Y( ]5 A6 I
  9.   sFilterConfig.FilterID2 = 0x7FF;' S. H! `: E: Z0 v( |
  10.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)0 f, K# I  K( T4 S# A
  11.   {
    7 W; D1 o' |) ~% g
  12.     Error_Handler();
    6 S7 G& A8 C: v0 A/ \; D/ F
  13.   }
    0 J' {  q- G0 r! |4 m
  14. 8 S3 U, |% Q, l
  15.   /* Configure global filter:& ]$ X% z, q; s6 ^( k3 H9 w+ @' n
  16.      Filter all remote frames with STD and EXT ID
    % M0 ^  B3 @+ R+ S
  17.      Reject non matching frames with STD ID and EXT ID */
    % S, Q) q+ v# u: Q# N$ p
  18.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK); \5 j/ w% ^5 w
  19.   {
    ! o) F4 k% B0 t
  20.     Error_Handler();& R; b3 d2 f' q8 I% G
  21.   }
    ! t; P* d7 \5 e7 h0 c
  22. : c, q/ i( l8 N7 C) l; z2 E+ J
  23.   /* Start the FDCAN module */, L. m  z8 [& H
  24.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
    ; I) y1 D& N) m5 H$ V7 m
  25.   {3 C5 k, A1 ]9 r6 H7 @; x- H* S0 i
  26.     Error_Handler();( j0 p+ r( t! o/ A/ s, C
  27.   }5 q2 w# d" K: ]7 ~0 R0 ?9 v
  28.   P5 ?2 X, I, t# L
  29.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
    - d8 d9 q- d3 |3 Z
  30.   {% a4 T$ L+ u# B9 \# w) Q
  31.     Error_Handler();/ ], `. l' A' o
  32.   }
复制代码
  1. if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData) != HAL_OK); R/ j  F( H( o3 z& O4 |+ E
  2.         {
      e: E9 _- S( d2 C
  3.           /* Transmission request Error */# B; J# G2 j0 J5 X( v
  4.           Error_Handler();
    , r- t. [. \  D& @& {
  5.         }& Y0 {0 z3 x  x, w$ T7 q: E
  6.         HAL_Delay(1000);
复制代码

% q) e! q  S& I: I$ p
- U# e; Q: ]' j: ~9 a7 ]
& i# g% g8 P- e+ b& q  上位机测试软件正常接收,如图5所示:
. Q& b  T7 D7 r4 S! S% b) R7 ^   t25.JPG ' |% ]  t) g9 }& [4 G" b8 o( I
图5' n5 e: G+ c* K, m& U1 N# @* h
但是接收中断没有执行,故接收callback函数也没有执行到。暂时还没找到事故原因,配置应该都是正常的。找到原因后,再补充这部分。
1 F/ Q8 e; \8 x
收藏 评论2 发布时间:2023-9-3 20:52

举报

2个回答
STMCU-管管 回答时间:2023-9-5 11:54:33
可以,再接再厉
7 S- J* X) x7 P3 u! I
无极考拉 回答时间:2023-9-7 09:13:35

学习一下

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