找回密码
 注册
关于网站域名变更的通知
查看: 412|回复: 1
打印 上一主题 下一主题

TMS320F28335 CAN通信

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-11-16 14:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
can通信配置can.c7 r  |: @" D& e  ~; A! D
#include “can.h”+ n$ Z- h) ]9 Y9 m
long int i;  G# e( Q4 ]& ^5 h# \% B8 C
long loopcount = 0;
8 `7 t9 ^; R% v3 e  |8 uvoid Ecan_Config(void)
  \, A: T" T: T2 ^# Y{
6 @* E- ]: L" g4 _/ e9 d4 @( `struct ECAN_REGS ECanaShadow;
. T. ]/ e( p* J8 f% j4 wstruct ECAN_REGS ECanbShadow;
; B, [) P# E3 ~( x4 [' l0 j; S// Step 5. User specific code:
- M2 F, B3 s9 S6 m) y! n2 e. v$ x
& a  L1 q  x" U7 ?, }4 T+ f  Y3 E- Y( |/* Write to the MSGID field */
; x4 M7 M* y) `( C6 H1 ~. O/ K! S9 O$ i: x+ r
ECanaMboxes.MBOX0.MSGID.all = 0x95555555; // Extended Identifier
4 `" l% `) @7 ^ECanaMboxes.MBOX15.MSGID.all = 0x95555555; // Extended Identifier
0 E1 f' H' q; ?  SECanbMboxes.MBOX25.MSGID.all = 0x95555555; // Extended Identifier+ {. U( _; q% }7 M4 j
ECanbMboxes.MBOX0.MSGID.all = 0x95555555; // Extended Identifier
$ }% {# K* p  ?3 x5 _$ W# `, p2 E% ]& H& I) p4 m4 X8 y* X# d/ c
/* 配置CANA 邮箱0为发送邮箱 */) S  j4 l* R2 k4 {3 j" P: _
ECanaShadow.CANMD.all =ECanaRegs.CANMD.all;* b+ Z, N- O2 u2 S
ECanaShadow.CANMD.bit.MD0 = 0;
. a) ?+ V. q5 i1 dECanaRegs.CANMD.all = ECanaShadow.CANMD.all;" e' K* U- a7 J7 u+ {
% Z; ?. o. z. S/ h8 C5 X: o$ B
//配置CANB 邮箱25为接受邮箱
$ U" w, X/ f+ I4 g9 i( ^: g( s+ i4 sECanbShadow.CANMD.all = ECanbRegs.CANMD.all;4 t$ L2 J$ x3 u
ECanbShadow.CANMD.bit.MD25 = 1;+ Z3 Y/ A+ W9 H& Y& V
ECanbRegs.CANMD.all = ECanbShadow.CANMD.all;
' c: Q$ d0 t* N, b. x3 ~; S8 }9 a* X
//配置CANA 邮箱0使能
( S9 {& M( Q& N3 ~6 e1 |ECanaShadow.CANME.all = ECanaRegs.CANME.all;
0 ~: A1 X  v( A: ^4 ~ECanaShadow.CANME.bit.ME0 = 1;
$ T/ G( z, F1 y1 J& N% U' Z- {ECanaRegs.CANME.all = ECanaShadow.CANME.all;
' J) Z% l# G7 u1 c' [1 k% C% w% ~$ U: z: l
//配置CANB 邮箱25使能
6 h/ ~9 }6 L1 `ECanbShadow.CANME.all = ECanbRegs.CANME.all;
  E6 _9 U3 Z( W# \ECanbShadow.CANME.bit.ME25 = 1;% K) c3 O, z0 K3 a. X
ECanbRegs.CANME.all = ECanbShadow.CANME.all;! F" ]: @0 j1 t% k: s
0 w& D6 \+ v  G$ J( B+ R, J* i
/* Write to DLC field in Master Control reg */7 o2 r" A6 Q/ g  C" r6 V$ x
ECanaMboxes.MBOX0.MSGCTRL.bit.DLC = 8;7 s, i# K  ^& l9 ^
ECanbMboxes.MBOX25.MSGCTRL.bit.DLC = 8;- D, d: L7 {0 T9 p

  j5 X# v/ E: Y8 `6 u//CANA 邮箱0发送信息. y, ]0 B# h7 q$ j# b6 D
ECanaMboxes.MBOX0.MDL.all = 0x12345678;7 y. k- z! B; m1 X* {) j' X' s
ECanaMboxes.MBOX0.MDH.all = 0x87654321;; W" X" e0 u# U+ c
4 K  e0 C2 T5 ?$ }0 D% n
// ECanbMboxes.MBOX25.MDL.all = 0x12345678;! @3 X& V+ Z: G& N! |' t; Q& f3 ]
// ECanbMboxes.MBOX25.MDH.all = 0x87654321;
/ U. U! n: q* V9 f8 ^//
0 F2 z0 M9 y' F; a8 N3 b3 n( _// //配置为自检模式,实验现象表明可以正常发送数据2 t$ \7 ?$ y1 }9 `2 B
// EALLOW;* S& x: f/ @4 `5 s0 i% N  g* H/ S
// ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
- Z5 o" [% I  g  a/ S' x// ECanaShadow.CANMC.bit.STM = 1; // Configure CAN for self-test mode. l/ c) y- L# s$ z: D- ^# U8 ]4 @" Q2 j
// ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
& |* A: j7 K+ g+ W( k// EDIS;
! r! v2 b6 g; {% m/ {# Z5 N. b
for( i=0; i < 1000; i++)
) `' J) @8 r! A4 ^' y( [: Q8 \5 x' H5 @{+ U7 A; \2 A$ u% W
ECanaShadow.CANTRS.all = 0;5 w- q7 Q5 {% H4 e3 ]- H" ]
ECanaShadow.CANTRS.bit.TRS0 = 1; // Set TRS for mailbox under test
! |7 f5 @3 r; wECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;' V4 u$ c8 y! a8 s% Y' a/ @9 v
//单步运行卡在此处,需检查CAN总线是否挂载另一个节点,GPIO配置,CANA,CANB配置等问题
4 o, q: s0 R* odo9 C( t7 Q/ ]( }! ~& o# n
{5 h) c, N7 W) A
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;  |, f% I0 N( k2 p/ T6 p' _( ^4 C
} while(ECanaShadow.CANTA.bit.TA0 == 0 ); // Wait for TA5 bit to be set…
- A3 E; R2 H1 ~+ b2 L* m
  _* q5 C; H  T, W    ECanaShadow.CANTA.all = 0;
9 j* g' ]% S6 k  }5 k2 c    ECanaShadow.CANTA.bit.TA0 = 1;               // Clear TA5* `; ~- z! b8 w& j; D& ^
    ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;
' U* N2 o, [- ^7 w+ ^! x6 t% c) T6 a6 K  p) U5 _$ D7 F) C
    loopcount ++;
4 r4 R- Z6 ?- a$ u5 {8 X- g" { }# s& z5 v& J1 r4 H: `
    ECanaShadow.CANTA.all = 0;
4 E; {: c7 X+ _1 Z8 z    ECanaShadow.CANTA.bit.TA0 = 1;               // Clear TA5! |. z0 y( J9 g! A/ K: r6 ~
    ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;
* h5 w9 @( j8 g6 w' z3 x
  k/ d' a1 ?6 q% X    loopcount ++;
: Y1 x6 h2 t6 ^& j! W5 j) j }
; j9 q; C" O' y  M: s5 S
6 Z# u) U7 @# P6 ^9 x1 y}
  m4 H  w- y6 I1 |" ~6 A/ L, e; r
  {3 t# O# f3 T9 u) _CAN通信的can.h文件: m5 ?! Z" P1 }  X" I1 }; d: q
#ifndef CAN_H
# V3 ?4 j" C) X, o2 e* J% W#define CAN_H
4 v$ M0 u% I) B, T# R2 K6 C6 F: x  D9 [! {+ h$ k. p  w
#include “DSP2833x_Device.h” // DSP2833x 头文件
/ J) R, L3 I" P, J9 u#include “DSP2833x_Examples.h” // DSP2833x 例子相关头文件9 R$ A3 ?& i$ z/ \3 W4 Y
void Ecan_Config(void);
6 y+ [* j2 W/ C/ v3 v" o' W9 X6 B9 N( s& [/ E6 e/ D" ?& q
#endif /* APP_CAN_H_ */3 T8 X7 S. I+ q, A* f, W4 \2 s0 P
$ W" w* b! q" f4 _  n5 k
在主程序中运行该程序,则通过CAN分析仪可在PC机上看到发出1000次信息。- t" U9 C% b7 o$ t$ G- x
9 e8 c" n+ z/ W4 D

该用户从未签到

2#
发表于 2021-11-16 14:19 | 只看该作者
配置CANA 邮箱0使能2 F+ `% ~/ L( L# N  T* u, J
ECanaShadow.CANME.all = ECanaRegs.CANME.all;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-12 17:28 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表