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

STM32 MP1 CANFD设置

[复制链接]
STMCU小助手 发布时间:2022-10-2 23:45
AutoRetransmission 设置为enable 可以防止通讯速度过快时丢包
" n" G( X8 W* X& r1 } 8a48c4c682fd4c7db2a467cc4eb5607d.png , U1 h  M( A; ?9 p. G
6 F4 J- \- M" k/ L9 _+ m
下图所示的TxBuffersNbr 和 TxFifoQueueElmtsNbr 貌似是共享32个地址的,两者加起来不能超过328 A- Z7 U5 H4 p

6 e+ q+ M: i# A$ W, y( V$ f f55c94af006e4dad8ca4afae18f95003.png
+ z# H- j) G+ f3 o8 y& d) s
5 Y* q3 C0 K8 g1 P& S) v' ?, u1.设置硬件参数(引脚,时钟)
* s' [: j. _# A4 f8 j; G+ E1.1 启用FDCAN1,并设置参数

) Z! m) _8 W2 ]+ Z( K/ ]4 D8 @- k4 l' g启用FDCAN后参数设置如下:. F9 q2 t5 T- u) X# l$ I5 F4 _; P. }. ]
设置FDCAN引脚,手头板子tx rx分别为PH13 PI94 P: z3 F6 T/ G. D% @4 ^
/ ~) y# |5 l- h6 w
f595497037214aa8be39a4e2e2de92d5.png
+ D+ y1 R( S5 j, D. }
  z  S' e" Q5 E1 W; b# B设置参数5 F6 Q. l" d- O1 s

- L& D1 y8 H2 s8 ?& Q b32e89d27eba4adaae2d166016b40a00.png
# w) B0 E8 ^' n7 C- b" G
! q9 a4 h' P8 N' `) u' \其中elmets Size因为采用classicmode 所以选用8bytes,注意 buffers nbr MP157rx和tx最多有32个buffer,offset貌似不设置也没事, \% J) h1 C( v4 Q+ J% x, R3 S

2 N& |4 ~8 |7 X8 B0 R" b时钟设置! t3 p0 k  \- c$ |
- L/ X* S% M, q7 `5 P3 Y. _: {2 S8 A2 s
5bb9e3f56ed24aec87253d86d2059907.png
$ p, `: {1 k) a; [' E2 H3 G0 |; n5 u9 ?( h$ }& k4 Q! n* U" j
1.2启用FDCAN
/ o6 W! e- m4 j2 v0 f. ?2 Q首先可以设置过滤器,随后启动FDCAN
5 E- U6 J9 A! j0 `) r' r* ]& \5 p. M: \1 P; Z9 Q
  1. /*##-1 Configure the FDCAN filters ########################################*/
    ( f; O* @0 b* U. j& w5 r
  2.   /* Configure standard ID reception filter to Rx FIFO 0 */
    2 V; N0 D7 L+ f0 A5 G6 Y4 D
  3.   sFilterConfig.IdType = FDCAN_STANDARD_ID;0 d" L; y) n4 O5 G+ g; W- ]
  4.   sFilterConfig.FilterIndex = 0;% c; K* }% _4 H9 z" b
  5.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;
    1 S9 |! S9 @1 p& L
  6.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;( g: [/ T- m! q# q5 o$ Z% G7 p) X
  7.   sFilterConfig.FilterID1 = 0x444;5 Y: S$ R$ C0 s. f5 I
  8.   sFilterConfig.FilterID2 = 0x555;
    8 j- z2 X: t: @- l9 u' `6 P  F
  9.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)
    0 f9 J% a. X1 C0 q$ j* ^
  10.   {" d+ {" L0 @9 l$ S" u: f3 ^
  11.     Error_Handler();
    3 h3 P" g; A! W
  12.   }
    8 v2 }; K! U  J: R$ b
  13. + L- I2 B: L1 w6 k0 Y" M
  14.   /* Configure extended ID reception filter to Rx FIFO 1 */
    3 E5 p- T& t8 i2 v
  15.   sFilterConfig.IdType = FDCAN_EXTENDED_ID;, B% ?$ Q  I, X" j" }
  16.   sFilterConfig.FilterIndex = 0;0 i* v# h# X6 }+ J
  17.   sFilterConfig.FilterType = FDCAN_FILTER_MASK;
    4 c: i" `# M) I; x1 S2 t+ G( S
  18.   sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO1;! I1 A* e. ^2 y  ^9 Q
  19.   sFilterConfig.FilterID1 = 0x1111111;4 Z  N. c# E  ~) X3 b0 r
  20.   sFilterConfig.FilterID2 = 0x2222222;0 l; x1 L& i; h
  21.   if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)  n" P, a; S0 V* z4 r3 j! k
  22.   {9 b7 z% O3 X1 F* o
  23.     Error_Handler();- W/ F- k5 ^% f, o
  24.   }8 i# s6 O! Z  M& g0 g

  25. . \1 a* i- Q. _
  26.   /*##-2 Start FDCAN controller (continuous listening CAN bus) ##############*/0 W/ N5 C( S4 E$ U
  27.   if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)6 S5 P: Z: r& ]
  28.   {6 U3 u3 |( |6 F4 A( }' q6 F
  29.     Error_Handler();
    . F9 T& Y- f/ w8 f$ x# [0 w3 v
  30.   }
      j( M* A+ k1 @! y. ]
  31.   /* USER CODE END 2 */
复制代码
. v7 |/ k* Y" Y" e0 r/ x
发送数据9 v! o/ n2 B. Q" R) \7 n7 v

' Q2 `. J6 E7 \3 k8 m
  1.   /*##-3 Transmit messages ##################################################*/, M$ T4 s) ]6 ~
  2.   /* Add message to Tx FIFO */. t4 [$ C; Q# i% X- R* x
  3.   TxHeader.Identifier = 0x444;
    5 E- ^# i3 D4 v' k
  4.   TxHeader.IdType = FDCAN_STANDARD_ID;, }! q8 r& k' V7 `  i, ?5 `* u
  5.   TxHeader.TxFrameType = FDCAN_DATA_FRAME;+ [3 v$ K8 C# w& K6 v
  6.   TxHeader.DataLength = FDCAN_DLC_BYTES_8;6 i2 Q& G% y6 ~% G3 K
  7.   TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
      \: T1 f9 S' K# w
  8.   TxHeader.BitRateSwitch = FDCAN_BRS_ON;
    & C5 }4 i% T, [7 F
  9.   TxHeader.FDFormat = FDCAN_FD_CAN;
    / L: U8 Y; q2 f
  10.   TxHeader.TxEventFifoControl = FDCAN_STORE_TX_EVENTS;
    , `1 X7 M3 q! l
  11.   TxHeader.MessageMarker = 0x52;6 Q: d! d0 i2 u) Z, _  n( O7 ~
  12.   if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData0) != HAL_OK)
    * A- G' q$ X6 h0 ~$ S7 Q3 `3 r5 U+ |6 a6 V
  13.   {
    9 p* c  c9 w! l( Q
  14.     Error_Handler();
    : X* F2 n6 g0 x$ j* K* U4 h  E
  15.   }
复制代码

3 h3 D* {; }, V' |8 M' N等待发送完成5 Y, J9 N3 n9 e# ?6 @: ^

# ^/ Q+ J0 ^$ ]% W& K+ I. t$ ?3 s) k
  1.   /* Check transmission occurred before timeout */4 d9 [& ?2 |: }6 n
  2.   while(HAL_FDCAN_IsTxBufferMessagePending(&hfdcan1, FDCAN_TX_BUFFER0 | FDCAN_TX_BUFFER1 | FDCAN_TX_BUFFER2) != 0)1 d  \& S  S" b+ D
  3.   {, U7 V! N! t$ V7 o# D/ [5 n
  4.     if((HAL_GetTick() - Tickstart) > TX_FAST_TIMEOUT)
    8 V2 Y+ O" P6 ]# J0 m& G" I
  5.     {
    ) B: o8 ]  u4 _; o: _
  6.       Error_Handler();
    . q+ C  r4 k4 j5 s: W5 j  [  W
  7.       break;
    2 Q  I: l% {% L1 b8 T
  8.     }  B  J6 O" k- c$ D# O+ \: ]1 f
  9.   }
复制代码
" Y; Z" m6 Y6 E/ `
查询接收到的can数据
9 ~& X% y( X( Q/ g3 s, ^4 ?( b; _- L- a% h# ?+ L3 g
  1.   while(HAL_FDCAN_GetRxFifoFillLevel(&hfdcan1, FDCAN_RX_FIFO0) != 1)3 K$ @' a5 n1 e+ F% d# O# L
  2.   {
    * E( j  s8 P9 \* n: ]
  3.     if((HAL_GetTick() - Tickstart) > RX_FAST_TIMEOUT)
    6 Q4 ]0 I' R# \) U/ F5 d. L* o: p
  4.     {
    ! z; c& U) G1 }3 w4 x, a
  5.       Error_Handler();$ u4 `/ w) U" P
  6.       break;
    . o1 D8 L2 S3 Q  y3 {
  7.     }
    $ R& N; ~# w# d# I+ T- w! l6 @5 S
  8.   }
复制代码
0 I2 i' K# C( `. @: A
获取数据, l" ^! ~: a$ Q- W7 ?+ N! v
" s% T7 V1 ^. m& r' r8 l/ ?9 D
  1.   if (HAL_FDCAN_GetRxMessage(&hfdcan1, FDCAN_RX_FIFO0, &RxHeader, RxData) != HAL_OK)
    " |$ W/ d! `. [1 f' Q
  2.   {
      ~4 S- H" I7 K" \# Q
  3.     Error_Handler();
    - }8 w" _" C* t
  4.   }
复制代码
  Z2 d; e7 q  `: x/ _6 W& r) L
————————————————
) j2 S$ I' K6 p. {1 W7 @4 E版权声明:少侠来一本秘籍吧: r/ c: L$ u2 t- L

) i* s; ]/ r3 r, }
) l7 U2 B) r6 X9 T
赞 收藏 评论0 发布时间:2022-10-2 23:45

举报

0个回答

所属标签

相似技术帖

官网相关资源

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