|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
can通信配置can.c
! i# l+ w$ Q' r j8 M#include “can.h”7 a- X7 M0 _* |) d8 S( C N7 M) r1 U
long int i;+ V' y% ~7 L0 g9 ^( D* R
long loopcount = 0;
% i: {% \( Y0 E# _% `" Kvoid Ecan_Config(void)( o2 F% l7 O$ r1 P( ?
{0 a1 z1 j" o P9 ^
struct ECAN_REGS ECanaShadow;0 J- P; P5 O3 {* @/ g; k
struct ECAN_REGS ECanbShadow;
. L/ s2 M7 K& ?% L9 n( X& n$ d// Step 5. User specific code:
' `% l; j# ~; n
: k9 b( \; L1 y/* Write to the MSGID field */
3 a; |9 V, {* E0 k: k9 Z$ @" I- t
ECanaMboxes.MBOX0.MSGID.all = 0x95555555; // Extended Identifier
8 x1 T6 f% u- W, L2 g) ?ECanaMboxes.MBOX15.MSGID.all = 0x95555555; // Extended Identifier
* g3 B% g/ w& _ m0 I+ w5 ^2 C/ hECanbMboxes.MBOX25.MSGID.all = 0x95555555; // Extended Identifier
, l' _( i) b Q. F9 t% C4 BECanbMboxes.MBOX0.MSGID.all = 0x95555555; // Extended Identifier( d; ? ]$ }, x
1 R& n! t9 {& D: ?
/* 配置CANA 邮箱0为发送邮箱 */
( `( c) T9 M" F0 XECanaShadow.CANMD.all =ECanaRegs.CANMD.all;
3 m, y) r2 C/ q3 k3 NECanaShadow.CANMD.bit.MD0 = 0;: T& O- Q* ^$ J* K9 T6 W
ECanaRegs.CANMD.all = ECanaShadow.CANMD.all;
; v6 K8 [! b) F" r6 [5 j
" [9 s' f% b1 u* f3 R//配置CANB 邮箱25为接受邮箱: p4 y3 W7 ~" U) [
ECanbShadow.CANMD.all = ECanbRegs.CANMD.all;
, O- c! G7 {2 h S5 m0 cECanbShadow.CANMD.bit.MD25 = 1;7 y. o/ o- b: u* x# K+ o( W
ECanbRegs.CANMD.all = ECanbShadow.CANMD.all;& c" F- v& X( b6 l; O- K
7 H: V j0 e9 D, o/ q//配置CANA 邮箱0使能0 [; w- S5 E( H( f0 c
ECanaShadow.CANME.all = ECanaRegs.CANME.all;
4 A4 l1 ~9 q, W, z* o/ G, SECanaShadow.CANME.bit.ME0 = 1;5 l; E2 [3 [1 S
ECanaRegs.CANME.all = ECanaShadow.CANME.all;# h6 Q3 }- T' m% j j: U
- K* b# k5 {4 Z2 x6 z//配置CANB 邮箱25使能- J7 C# w5 y2 ]* `+ h
ECanbShadow.CANME.all = ECanbRegs.CANME.all;
6 R1 e6 R+ `! x' e5 }9 B/ C" iECanbShadow.CANME.bit.ME25 = 1;
8 |* Y6 N( c- N. ]) Y& y) PECanbRegs.CANME.all = ECanbShadow.CANME.all;" ~ Z4 h) X; @) Z5 |
& J1 ]4 C! @' P) U8 ~4 B2 g. j/* Write to DLC field in Master Control reg */
9 e; a; a& Y; w, Z; G2 x QECanaMboxes.MBOX0.MSGCTRL.bit.DLC = 8;6 U: B6 c7 A8 j! d: h9 v6 I x
ECanbMboxes.MBOX25.MSGCTRL.bit.DLC = 8;
" r O7 u$ g/ b/ e1 U' p5 {: a) m6 b. _5 Y
//CANA 邮箱0发送信息3 H" ~, z R' l3 e% Q b% R8 n0 U
ECanaMboxes.MBOX0.MDL.all = 0x12345678;
: X' S e% q& D0 k0 ]' M; rECanaMboxes.MBOX0.MDH.all = 0x87654321; \' z( o7 V- _2 ]1 p" u
/ R/ x( o7 m& V6 a# c// ECanbMboxes.MBOX25.MDL.all = 0x12345678;0 G. W0 P6 ~9 O! b8 S
// ECanbMboxes.MBOX25.MDH.all = 0x87654321;
% |# w" X2 i9 F5 ?; D2 C2 t//3 b, Z& y8 w( E
// //配置为自检模式,实验现象表明可以正常发送数据! D3 S }) T" j
// EALLOW;/ m6 a; F# G, @$ O( |# `
// ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;8 y1 k4 M4 A- P7 c. i5 m
// ECanaShadow.CANMC.bit.STM = 1; // Configure CAN for self-test mode/ I' j! i: F/ B3 Y( D! |
// ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
/ Y" m6 Q8 d( s// EDIS;
/ j7 v5 \% {& S3 `. f
1 t6 \0 Y6 }! s9 T; afor( i=0; i < 1000; i++)5 X! \: J6 L l( i6 r) a# N' U& O) [
{
4 L- O9 \: J( RECanaShadow.CANTRS.all = 0;& `& e/ R/ o0 g9 H7 U: T4 x
ECanaShadow.CANTRS.bit.TRS0 = 1; // Set TRS for mailbox under test
/ D- x; u" I9 oECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;
# V0 U* W6 o1 R+ {; H+ K3 \" D//单步运行卡在此处,需检查CAN总线是否挂载另一个节点,GPIO配置,CANA,CANB配置等问题
' v" a( e1 L0 X0 z6 c( A$ ndo
) D* k: J. d. Y, K8 ^4 \{- n+ g$ M+ e% M2 [% R
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
- \, E* f/ ~4 h2 v} while(ECanaShadow.CANTA.bit.TA0 == 0 ); // Wait for TA5 bit to be set…
& K6 `; M/ I. C' a4 T+ L7 z8 G. O7 x1 U
ECanaShadow.CANTA.all = 0;
/ g% T T+ |$ V1 S5 |. j( Y ECanaShadow.CANTA.bit.TA0 = 1; // Clear TA5
h _! W/ s, {* w C ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;
! r, U/ a/ U. M% ?4 r5 e4 ]$ H9 M( e; N$ K
loopcount ++;2 T6 D7 z- X! ^2 Y' g6 x
}
/ o( M; u5 O4 s ECanaShadow.CANTA.all = 0;
- G; r" h* i9 @) a ECanaShadow.CANTA.bit.TA0 = 1; // Clear TA5
; b/ M V% c( C ECanaRegs.CANTA.all = ECanaShadow.CANTA.all; d R# J/ I' l$ a6 Q: b' K# v
4 E7 K( u/ _; E/ A' G9 I2 A loopcount ++;
! w5 L3 ?/ O8 c) i) k4 a }* c2 M p; c! Z$ B) W9 n
, _: c2 _5 E7 I3 W9 b, E: ~5 u}
" [* w E/ @! c x- r1 J# ]& F& p
CAN通信的can.h文件
3 c" a- _ d& O0 ~#ifndef CAN_H
7 E# `5 `. u% h. k/ m1 {#define CAN_H
, F! L8 j" ?$ M& z; e `( D/ O g* @9 e( w8 A! ]1 `7 h" |
#include “DSP2833x_Device.h” // DSP2833x 头文件% x5 i! W7 O- S! e+ Q6 {0 i5 Q2 U! o
#include “DSP2833x_Examples.h” // DSP2833x 例子相关头文件
' _* Z+ M" T V# n6 ^void Ecan_Config(void);
! j0 T: `0 {9 n1 [3 m5 u
0 |. B& o2 V" ^& @( ~' ~#endif /* APP_CAN_H_ */5 T( @3 B+ z$ K, [ K
- O# M2 x1 P# v& P1 J4 W
在主程序中运行该程序,则通过CAN分析仪可在PC机上看到发出1000次信息。) R& J" I& J5 }- I4 ?: k( }$ ^+ H# Q, J
0 K- z6 @, }, ^6 b9 ~. w' _7 \9 s |
|