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

【STM32U3评测】3.FDCAN通讯

[复制链接]
jundao721 发布时间:2025-5-24 22:27
7 z0 a# E, N3 }  H3 z/ {/ `
      本次测试FDCAN通讯,STM32U3是带FDCAN外设的,功能还是挺强大的。这个外设也是现在项目中常用的通讯方式。: |* Z8 v% }: t4 _) N' I7 o1 t
     通信芯片使用的是自制的TJA1462 模块,这样使用杜邦线连接到FDCAN测试仪,连接到电脑上位机上,就可以进行测试了。$ z2 J0 S+ i0 h+ P
     整体连接图如图1所示:
+ z& B. U7 C6 o* q; W6 ? 1-4.jpg ; {$ d3 S. Z* A# {6 Z5 R
图1
! O# W& D: M. `# z1 y& T7 Q     CubeMx 配置如图2所示:+ f- r' E/ w" Z, T6 Y
1-3.png
' ^, d  J" w' x图2& u% o3 V7 ?2 K2 u6 T
$ P$ x. m7 d+ R: V& c5 |
     FDCAN 配置为 Nominal 帧设置为1Mbps,而数据帧设置为2Mbps,数据选择64个字节。然后生成项目框架。
* ]% K, {2 F* `- t8 ~0 [- s1 `+ x3 q" y/ ~) c
     修改一下程序的发送和接收中断程序,程序配置如下所示:
# h  o# K9 a# A3 N% o+ A
  1. /* Configure Rx filter */
    & ^' D1 K& t& E+ H8 _* w
  2.   sFilterConfig.IdType = FDCAN_STANDARD_ID;3 B5 Q9 M" B; h/ f, ]
  3.   sFilterConfig.FilterIndex = 0;3 E# g$ Y  x" l9 W( i
  4.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;
    4 m% R) A  T, K2 j9 V! w
  5.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
    ' ?" `8 v- a) p( ~
  6.   sFilterConfig.FilterID1 = 0x123;//receive ID" ^& P+ w4 I! Q& X# I: W
  7.   sFilterConfig.FilterID2 = 0x7FF;% {$ W3 }! K9 ]* ~+ D# ]0 J$ _+ ]7 z
  8.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)! f) L1 T4 \7 |
  9.   {
    + E- R, ?& ?2 Z( H! E5 Q, }& V  D
  10.     Error_Handler();
    0 h" |# `2 _4 R
  11.   }# a- ^* f; W% W7 S3 Z6 t9 n
  12. / t" V& R2 i" M" Y  U% d5 }
  13.   /* Configure global filter:
    & Q1 g& N# i% s2 f5 p, i; i
  14.      Filter all remote frames with STD and EXT ID
    0 I7 N/ W$ {( Y: @, o3 M8 p
  15.      Reject non matching frames with STD ID and EXT ID */# B! j! {+ g- i  h1 E
  16.   if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK)
    - g7 B' B: \2 ]  O# S
  17.   {/ d0 I) a$ Y' {. R
  18.     Error_Handler();
    ) z! I/ L1 D  O0 O
  19.   }' Y) W7 m6 w0 Q( V
  20. 8 Q0 b* U7 E% K+ I9 t* D3 Y
  21.   /* Start the FDCAN module */
    ( E; u9 _- V" |
  22.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
    6 X; N" N% V$ {" A
  23.   {
    " M! X, N5 U0 x+ o
  24.     Error_Handler();  k8 r" j* s! M( ]: v. O
  25.   }
    5 M" B; [$ p) Q9 Q: q2 a. h7 l

  26. ' N6 `! b( Q7 _, _
  27.   if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)# k9 z6 j/ x+ Z2 i' z
  28.   {" P6 y% q8 L! `, `
  29.     Error_Handler();+ x$ b5 ?/ t; |+ F; n4 L
  30.   }
    5 i* w  f/ g" G. B3 y% I; q2 _$ o5 ?

  31. 3 h+ Z. d4 h4 b8 S
  32.   /* Prepare Tx Header */5 C) |' ~5 o/ G  M$ i
  33.   TxHeader.Identifier = 0x321;9 [% k+ }7 y/ w
  34.   TxHeader.IdType = FDCAN_STANDARD_ID;5 h/ t+ Y) P7 V# b: `  b6 h
  35.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;
    / B* ?; ?7 z" L( j, w0 {
  36.   TxHeader.DataLength = FDCAN_DLC_BYTES_64;//FDCAN_DLC_BYTES_8;
    9 [! W" T1 q# S) K; c" b
  37.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
    . @( o" F8 C) M  o
  38.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;* p: ~: S( n, k/ c  P$ |
  39.   TxHeader.FDFormat = FDCAN_FD_CAN;//FDCAN_CLASSIC_CAN;: m. S8 k+ G8 N) J: U
  40.   TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;* v" M/ I  b, n' N, P8 v0 _& e
  41.   TxHeader.MessageMarker = 0;
复制代码
, i- B+ I/ B7 F5 _! g$ g8 i

$ Y% o- N& ?( J2 n, I2 H. J1 s     编译,Debug,通过上位机观看测试数据,接收数据如图3所示:
+ P( r4 p: g7 ~ 1-2.png
$ E9 a- K1 M9 ^( h$ P; w9 q图3" u5 a: S$ D; @) R
    发送数据如图4所示:  _  S* ^( X+ \& r8 b0 v
1-1.png
. C! F0 W/ ~2 e8 [! F2 t图4+ f& K( L$ f: f  C( _! m, c
    经过测试,发送和接收正常,调试5Mbps的时候,数据不能连接上,应该是杜邦线的问题。/ C. f6 ^" Z/ q% W. \7 K7 K
收藏 评论0 发布时间:2025-5-24 22:27

举报

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