EDA365电子论坛网

标题: TMS320F28335 CAN通信 [打印本页]

作者: RNGxiaohu    时间: 2021-11-16 14:14
标题: TMS320F28335 CAN通信
can通信配置can.c
. V* d9 z- a1 K3 V4 J5 B& }#include “can.h”( ^( Y& G3 A0 d" W6 c0 Z
long int i;/ P3 W2 p8 S: t, T8 Q3 ]( ~& {
long loopcount = 0;9 u1 M3 t' h5 P! }
void Ecan_Config(void)
& j3 `& q( r* V' V1 M$ r$ k1 o{
  c* T+ V5 i2 h9 p  @: Tstruct ECAN_REGS ECanaShadow;
, H; e3 r0 p( R1 h3 ]; @struct ECAN_REGS ECanbShadow;
6 P# m. C- j  ]) W9 i// Step 5. User specific code:0 v+ h8 a& ^2 c# `
( W9 a8 R3 C! Y/ \# S- L
/* Write to the MSGID field */
' l. @1 Q: I) ^* d2 O
5 H2 p  O" n( y; z( X1 |4 pECanaMboxes.MBOX0.MSGID.all = 0x95555555; // Extended Identifier
: V  o5 L) U3 K) _' `ECanaMboxes.MBOX15.MSGID.all = 0x95555555; // Extended Identifier
2 Y. i% k6 K0 g  g0 u, E8 c4 b+ nECanbMboxes.MBOX25.MSGID.all = 0x95555555; // Extended Identifier
' d/ a& q! s4 p) J# _ECanbMboxes.MBOX0.MSGID.all = 0x95555555; // Extended Identifier6 N$ K. ?. x' f/ ^1 }0 W. Y
  e* V: [' A3 M' s* E9 ?7 {7 d6 g
/* 配置CANA 邮箱0为发送邮箱 */$ i1 o6 {5 H$ C. s
ECanaShadow.CANMD.all =ECanaRegs.CANMD.all;
/ [3 V; y( p+ q, z' I% [- [7 vECanaShadow.CANMD.bit.MD0 = 0;5 M3 l* q! F# z* a3 T* }+ {2 p
ECanaRegs.CANMD.all = ECanaShadow.CANMD.all;
, A5 E  U& m  ~. U9 h+ m8 ]) D4 M7 z+ L8 R6 ^# S2 [
//配置CANB 邮箱25为接受邮箱
& x" N7 A: m. N  HECanbShadow.CANMD.all = ECanbRegs.CANMD.all;( w% G5 ^: o. \1 p+ I
ECanbShadow.CANMD.bit.MD25 = 1;
7 ^1 [! T" {# n' R2 nECanbRegs.CANMD.all = ECanbShadow.CANMD.all;
5 X  n# O8 y2 G
- S1 \2 D3 e* |8 Z* F7 p9 N//配置CANA 邮箱0使能
& H, r2 s( t' [& n4 f- A, |ECanaShadow.CANME.all = ECanaRegs.CANME.all;' ]9 ?% s, Y% E0 Y6 `& q
ECanaShadow.CANME.bit.ME0 = 1;, J0 e0 C. }7 L6 }. o1 _
ECanaRegs.CANME.all = ECanaShadow.CANME.all;
1 s' E+ y! z; m  R, v; I5 C
) f# a! J: f" n5 P//配置CANB 邮箱25使能
% h' }; K6 z* O3 z8 k% Y. `; _ECanbShadow.CANME.all = ECanbRegs.CANME.all;
/ [( G% o- ?+ s% F/ A" tECanbShadow.CANME.bit.ME25 = 1;
. _7 X8 e; }1 w  x: _) rECanbRegs.CANME.all = ECanbShadow.CANME.all;
. i) N# B2 D6 p) U( [3 _7 m0 j' r; Q2 C: v
/* Write to DLC field in Master Control reg */
7 a, ]/ a" O) i% ZECanaMboxes.MBOX0.MSGCTRL.bit.DLC = 8;
& _0 }- g6 Z: H7 {& T, F" ?ECanbMboxes.MBOX25.MSGCTRL.bit.DLC = 8;
3 b! _" o. r& _0 x
) p* I" i$ e3 |- k//CANA 邮箱0发送信息
% w& J+ Y7 U2 X) xECanaMboxes.MBOX0.MDL.all = 0x12345678;; p. E; \# q4 ^' x. c( g; N
ECanaMboxes.MBOX0.MDH.all = 0x87654321;
. f- R9 L4 z# o9 }6 S2 ^0 G. ?7 Z$ I- Y8 N1 ]* r' ^% z
// ECanbMboxes.MBOX25.MDL.all = 0x12345678;
. V2 v9 l% M( `* ~& g3 y// ECanbMboxes.MBOX25.MDH.all = 0x87654321;
: t1 q% t3 S5 H9 d//0 X6 n/ e. x/ I) Q
// //配置为自检模式,实验现象表明可以正常发送数据
' L' ~% A1 L1 w9 I8 q# U5 D// EALLOW;  w3 t: I1 W0 ?5 W7 z
// ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;2 V  \3 F5 w/ _0 r9 s
// ECanaShadow.CANMC.bit.STM = 1; // Configure CAN for self-test mode
$ H+ j: A3 R  W: `8 V- M# d& ~) z// ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;( ]' ^( f8 D# y4 H
// EDIS;$ r  ?* N3 }. o3 f! c- k/ x
; w. z) T: M' v% Q
for( i=0; i < 1000; i++)* W/ o+ ]3 }# T1 O( P; U
{3 h% D% F4 z' `( I: `
ECanaShadow.CANTRS.all = 0;) @6 s' l$ f6 O2 u
ECanaShadow.CANTRS.bit.TRS0 = 1; // Set TRS for mailbox under test
3 _0 E6 n3 v. ~ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;
' A  R) R9 x& j# U//单步运行卡在此处,需检查CAN总线是否挂载另一个节点,GPIO配置,CANA,CANB配置等问题
/ X% g) {( L7 k$ e+ q. hdo5 x3 @" P4 ]/ j% z5 R' k
{
2 }7 @9 A$ s6 a- i$ v5 G4 O4 [ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
+ j% n" O: q3 m. r} while(ECanaShadow.CANTA.bit.TA0 == 0 ); // Wait for TA5 bit to be set…/ |$ M& Z' t& {8 P) j. O

5 c- J0 u4 t. l; R6 X1 ?" F    ECanaShadow.CANTA.all = 0;
" r/ {1 q9 K& {: w; X    ECanaShadow.CANTA.bit.TA0 = 1;               // Clear TA5. u' I; W6 P2 q8 B6 d" j- C
    ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;4 ]& N7 M& ~. N# q! J
( x: ]/ Y8 }: F
    loopcount ++;
) x+ P$ [& D- o7 v+ q3 W }
, ]5 w: x. B; q) }    ECanaShadow.CANTA.all = 0;: R1 h8 ^9 h6 J
    ECanaShadow.CANTA.bit.TA0 = 1;               // Clear TA5
- Z# l9 L+ y2 k* P    ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;. n* w) S4 O! q1 U* E* S* H
. \/ _* V. k5 Y4 u8 j$ ]6 l
    loopcount ++;
! \2 t, S% V% F2 D: _/ C }
, j* |, j+ Z- W& \' _( j9 o' {
  [0 |6 r' |% R+ Z9 x/ T! I0 u; d}
6 I, A, h% V# Y) A- B: n
. T  t5 R. v( x$ pCAN通信的can.h文件$ h! L9 D- `2 Y6 A2 G/ S" b
#ifndef CAN_H
5 j' y- o, T. [& `7 j; r4 ?0 G#define CAN_H
. m4 H' n( x2 J+ r1 i% g' T+ F+ O4 C* F8 u
#include “DSP2833x_Device.h” // DSP2833x 头文件
: {: S' t3 Y& v; \#include “DSP2833x_Examples.h” // DSP2833x 例子相关头文件
0 j7 @/ C0 G/ ?; }& C( Y3 Bvoid Ecan_Config(void);+ z1 d5 F% B2 @) X

" r4 n3 O" i0 G/ D4 z! x* \8 L, E#endif /* APP_CAN_H_ */
5 \  [6 N( ^6 P
8 T7 V  q8 K* N4 q& }# |9 U' @在主程序中运行该程序,则通过CAN分析仪可在PC机上看到发出1000次信息。* m$ K& u6 P+ e9 W! G4 ^8 i2 t, y

' j. p( R2 j/ B5 N2 h; `
作者: CLBuu    时间: 2021-11-16 14:19
配置CANA 邮箱0使能
9 s+ ~) h/ _" h( @9 D, JECanaShadow.CANME.all = ECanaRegs.CANME.all;




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2