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

STM32 MP1 CANFD设置

[复制链接]
STMCU小助手 发布时间:2022-10-2 23:45
AutoRetransmission 设置为enable 可以防止通讯速度过快时丢包9 i. s& [$ @2 T8 Y' D: V; P3 M, R
8a48c4c682fd4c7db2a467cc4eb5607d.png
+ h; T; Q- U; Y* `. t" [6 c0 f( a1 }6 i% S& z4 x
下图所示的TxBuffersNbr 和 TxFifoQueueElmtsNbr 貌似是共享32个地址的,两者加起来不能超过32
9 k) _3 `. h) Y# [% z8 N7 }- N, S( n! s
f55c94af006e4dad8ca4afae18f95003.png
* u# s! w- E6 r/ f8 Q9 {0 i) Q9 E' \% l* I
1.设置硬件参数(引脚,时钟)
& z% |; T$ }- b, I+ S7 {/ ^" C1.1 启用FDCAN1,并设置参数
( z. A( i2 N. ?# u* Z/ K0 {
启用FDCAN后参数设置如下:  v# Y5 O$ R7 ?  Z% b9 K0 E
设置FDCAN引脚,手头板子tx rx分别为PH13 PI9
4 s# Z3 G5 _5 t" o6 j' w+ f; R4 z# L0 f
f595497037214aa8be39a4e2e2de92d5.png
6 J* Y0 e6 q- n9 g% B$ P( D5 ]/ p7 t; v  \6 `; U+ \  b
设置参数& ^& I  z$ l0 j6 `& E  s: Q5 b

8 r0 r: _- [; u$ k b32e89d27eba4adaae2d166016b40a00.png * w( g/ p/ a6 r1 V. q

# K. w1 i) r/ `' N- \9 o其中elmets Size因为采用classicmode 所以选用8bytes,注意 buffers nbr MP157rx和tx最多有32个buffer,offset貌似不设置也没事3 n/ a. Q3 t4 p5 h! u

) M0 a- F( o% s! V8 v# Z时钟设置
- H) T+ W' v: \2 I/ l
* t& o) v: z' m& t$ Z0 F, z2 L7 a 5bb9e3f56ed24aec87253d86d2059907.png
% N6 g9 V5 J& a+ z" r/ L2 s9 X0 @9 k$ H" }
1.2启用FDCAN" b4 G+ l; A! I+ k# n
首先可以设置过滤器,随后启动FDCAN
* n- }" t( g0 }
2 U! p! e& _" t* ~* c% I# w+ |
  1. /*##-1 Configure the FDCAN filters ########################################*/  W  L3 Y; `  z: O2 ^
  2.   /* Configure standard ID reception filter to Rx FIFO 0 */# J8 m$ N: N- N3 ^
  3.   sFilterConfig.IdType = FDCAN_STANDARD_ID;
    ! ~' m9 H4 M9 f; u
  4.   sFilterConfig.FilterIndex = 0;0 o8 D) d& E3 g) p* O
  5.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;1 ?. K9 M! M' i/ L; a
  6.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
    + F: [9 z9 O( n; W8 @7 S
  7.   sFilterConfig.FilterID1 = 0x444;' N5 z' `; e% _6 L8 W6 s- j; y
  8.   sFilterConfig.FilterID2 = 0x555;, e8 ?1 I& o1 O+ Y
  9.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)5 @* O' v5 S! N) z; g  ^% m9 ]
  10.   {
    , ^- E0 i, d# q! J  e5 p/ g/ O' x
  11.     Error_Handler();
    5 {  V% W" }' k0 z. P0 R
  12.   }2 w/ u' c+ ]  B% X/ o. Z
  13. * N. V! U4 ]* w
  14.   /* Configure extended ID reception filter to Rx FIFO 1 */
    + I4 k* _* c: i/ O3 H
  15.   sFilterConfig.IdType = FDCAN_EXTENDED_ID;
    . L7 r5 G2 m1 o7 V; Z, `
  16.   sFilterConfig.FilterIndex = 0;' R+ f) {7 S% F3 Y( `  U
  17.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;* M, T; P; b7 }9 k2 @4 o2 p
  18.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO1;) m# c2 v! P! Y8 E5 R# @6 {3 e
  19.   sFilterConfig.FilterID1 = 0x1111111;0 m; ~' G% S( \/ G& G6 b
  20.   sFilterConfig.FilterID2 = 0x2222222;
    / B9 J; u% d/ a) S
  21.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)& B) z4 F9 e0 E; x% j: w" U1 s$ X
  22.   {2 Q2 U2 n7 H: t1 G. ^/ r- e
  23.     Error_Handler();
    # _2 ?  [3 J! F, a$ X+ B
  24.   }
    9 {8 q& a, J* E' j. X

  25. 3 v- T8 l+ `2 ~, s/ [
  26.   /*##-2 Start FDCAN controller (continuous listening CAN bus) ##############*/
    , B5 J+ q  N( n7 v/ |' ]" A: U
  27.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)- F: c6 ]8 B( H: Y
  28.   {
    $ Z/ S$ [6 c! Z# B: M
  29.     Error_Handler();
    4 m, t1 ~& O2 I- L5 E! g3 Z) a
  30.   }
    : Y( b2 S0 s! F& l. d( O6 z: I  K
  31.   /* USER CODE END 2 */
复制代码

0 d. E% H8 g1 c- w6 L发送数据
" I5 e4 Q4 G; E3 m' S8 f. d( Y$ A. X$ y9 ~2 \' f- l
  1.   /*##-3 Transmit messages ##################################################*/; V4 ?7 X) f% W7 E* l: ^  B4 A$ t. p
  2.   /* Add message to Tx FIFO */. a/ U1 w# Z/ _1 }5 z
  3.   TxHeader.Identifier = 0x444;% t/ Q3 T+ \; J0 X
  4.   TxHeader.IdType = FDCAN_STANDARD_ID;
    7 E6 m# `7 n1 P, N
  5.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;* |% E! N' Y. S
  6.   TxHeader.DataLength = FDCAN_DLC_BYTES_8;
    , d$ g: v1 I* q
  7.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;: U  F7 B* s7 q! ~/ y0 y) U: e; w
  8.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;/ R3 `& \( V3 N3 J
  9.   TxHeader.FDFormat = FDCAN_FD_CAN;9 C& ^3 G6 Z( ^1 P8 `
  10.   TxHeader.TxEventFifoControl = FDCAN_STORE_TX_EVENTS;
    # D$ @( v, k( m$ z3 @+ X
  11.   TxHeader.MessageMarker = 0x52;
    3 j! i  `9 n* T; C! e) t6 f, m; ?
  12.   if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData0) != HAL_OK)
    / Y$ a& Z. D% a6 |# e% X
  13.   {
    $ W$ G' l* |( }5 _  C0 A
  14.     Error_Handler();
    # ^7 k) S0 y# b! [
  15.   }
复制代码

2 \8 h! \( e& V* |0 b等待发送完成  e1 u5 B5 c: m# r: o5 k

2 @0 z3 U' A6 O2 L- ?' A% K
  1.   /* Check transmission occurred before timeout */' ]; q: S& y% ~  b, F
  2.   while(HAL_FDCAN_IsTxBufferMessagePending(&hfdcan1, FDCAN_TX_BUFFER0 | FDCAN_TX_BUFFER1 | FDCAN_TX_BUFFER2) != 0)2 j( P; b) Z1 B
  3.   {: v- g  f& a% R
  4.     if((HAL_GetTick() - Tickstart) > TX_FAST_TIMEOUT)+ ^9 `+ R; K3 m7 a7 t# k* t
  5.     {
    : s# v8 Y/ v5 L8 n  c- d
  6.       Error_Handler();
    1 [0 G3 j9 e. H5 q
  7.       break;$ k2 }5 B% n0 M
  8.     }8 q2 T5 \8 z% N1 w; V( j2 ?" H
  9.   }
复制代码

5 p; h; R$ f8 T/ A$ Q查询接收到的can数据$ J* V0 k& y# b0 q/ t' j

; w, Z3 d8 h4 o) b
  1.   while(HAL_FDCAN_GetRxFifoFillLevel(&hfdcan1, FDCAN_RX_FIFO0) != 1)
    * {6 y/ A( y" J( \& `3 r
  2.   {
    0 W3 X0 r  r1 K6 R. ~
  3.     if((HAL_GetTick() - Tickstart) > RX_FAST_TIMEOUT)! I- l6 C8 J! A; h1 f6 k
  4.     {
    / x- v7 K+ T; ~4 Z9 y
  5.       Error_Handler();5 ~: c  k) t/ ^* W1 `- _  `
  6.       break;8 m  `( z1 S  E' p4 D6 A
  7.     }
    3 b( H7 q: H3 {, v$ R' y& R
  8.   }
复制代码

& @- j; J5 H1 r- D获取数据3 U7 m; i+ D' B3 J7 P1 E
9 ?0 M% E. j) ]
  1.   if (HAL_FDCAN_GetRxMessage(&hfdcan1, FDCAN_RX_FIFO0, &RxHeader, RxData) != HAL_OK)' f& L! L# X$ m
  2.   {% {" q0 o+ P( F
  3.     Error_Handler();
    2 i2 K6 F# h1 j
  4.   }
复制代码
# @' V$ P7 a1 r
————————————————& Q- n1 `3 K! n
版权声明:少侠来一本秘籍吧: N' o* h% b  S/ E
1 h- |5 c& B+ P# k) X$ ~
6 C: K+ S0 s0 Z/ Z! s3 B
收藏 评论0 发布时间:2022-10-2 23:45

举报

0个回答

所属标签

相似分享

官网相关资源

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