28335 ECAN测试完整程序和实验记录.docx

上传人:b****5 文档编号:29894448 上传时间:2023-08-03 格式:DOCX 页数:24 大小:270.52KB
下载 相关 举报
28335 ECAN测试完整程序和实验记录.docx_第1页
第1页 / 共24页
28335 ECAN测试完整程序和实验记录.docx_第2页
第2页 / 共24页
28335 ECAN测试完整程序和实验记录.docx_第3页
第3页 / 共24页
28335 ECAN测试完整程序和实验记录.docx_第4页
第4页 / 共24页
28335 ECAN测试完整程序和实验记录.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

28335 ECAN测试完整程序和实验记录.docx

《28335 ECAN测试完整程序和实验记录.docx》由会员分享,可在线阅读,更多相关《28335 ECAN测试完整程序和实验记录.docx(24页珍藏版)》请在冰豆网上搜索。

28335 ECAN测试完整程序和实验记录.docx

28335ECAN测试完整程序和实验记录

 

Cold_Miracle

2015

Dsp28335实验源码库

[键入文档副标题]

letchgo

MARS

DSP28335文库源代码系列1:

一:

说明:

DSP28335ECAN测试:

声明:

由于XX文库不能上传代码,故将can通讯测试程序整理到word文档,大家可以参考,并配有实验结果,只需要简单的移植既可以使用,请勿盗版!

上图为参考C文件,在官方例程中都有,下面贴出重要C文件的代码。

二:

代码部分

两个主要C文件的代码,其他C文件大家自己添加就可以了,本部分程序是AB两个can口之间相互通讯,如果需要源代码,可以发我:

letchgo@163.

DSP2833x_ECan:

//TIFile$Revision:

/main/8$

//Checkin$Date:

June25,200815:

19:

07$

//###########################################################################

//

//FILE:

DSP2833x_ECan.c

//

//TITLE:

DSP2833xEnhancedCANInitialization&SupportFunctions.

//

//###########################################################################

//$TIRelease:

DSP2833x/DSP2823xC/C++HeaderFilesV1.31$

//$ReleaseDate:

August4,2009$

//###########################################################################

#include"DSP2833x_Device.h"//DSP2833xHeaderfileIncludeFile

#include"DSP2833x_Examples.h"//DSP2833xExamplesIncludeFile

 

//---------------------------------------------------------------------------

//InitECan:

//---------------------------------------------------------------------------

//ThisfunctioninitializestheeCANmoduletoaknownstate.

//

voidInitECan(void)

{

InitECana();

#ifDSP28_ECANB

InitECanb();

#endif//ifDSP28_ECANB

}

voidInitECana(void)//InitializeeCAN-Amodule

{

/*CreateashadowregisterstructurefortheCANcontrolregisters.Thisis

needed,sinceonly32-bitaccessisallowedtotheseregisters.16-bitaccess

totheseregisterscouldpotentiallycorrupttheregistercontentsorreturn

falsedata.Thisisespeciallytruewhilewritingto/readingfromabit

(orgroupofbits)amongbits16-31*/

structECAN_REGSECanaShadow;

EALLOW;//EALLOWenablesaccesstoprotectedbits

/*ConfigureeCANRXandTXpinsforCANoperationusingeCANregs*/

ECanaShadow.CANTIOC.all=ECanaRegs.CANTIOC.all;//配置GPIO引脚为CAN通讯

ECanaShadow.CANTIOC.bit.TXFUNC=1;

ECanaRegs.CANTIOC.all=ECanaShadow.CANTIOC.all;

ECanaShadow.CANRIOC.all=ECanaRegs.CANRIOC.all;

ECanaShadow.CANRIOC.bit.RXFUNC=1;

ECanaRegs.CANRIOC.all=ECanaShadow.CANRIOC.all;

/*ConfigureeCANforHECCmode-(reqdtoaccessmailboxes16thru31)*/

//HECCmodealsoenablestime-stampingfeature事件抽样特征

ECanaShadow.CANMC.all=ECanaRegs.CANMC.all;

ECanaShadow.CANMC.bit.SCB=1;

ECanaRegs.CANMC.all=ECanaShadow.CANMC.all;

/*Initializeallbitsof'MasterControlField'tozero*/

//SomebitsofMSGCTRLregistercomeupinanunknownstate.Forproperoperation,

//allbits(includingreservedbits)ofMSGCTRLmustbeinitializedtozero

ECanaMboxes.MBOX0.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX1.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX2.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX3.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX4.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX5.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX6.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX7.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX8.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX9.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX10.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX11.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX12.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX13.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX14.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX15.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX16.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX17.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX18.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX19.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX20.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX21.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX22.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX23.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX24.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX25.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX26.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX27.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX28.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX29.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX30.MSGCTRL.all=0x00000000;

ECanaMboxes.MBOX31.MSGCTRL.all=0x00000000;

//TAn,RMPn,GIFnbitsareallzerouponresetandareclearedagain

//asamatterofprecaution.

ECanaRegs.CANTA.all=0xFFFFFFFF;/*ClearallTAnbits*/

ECanaRegs.CANRMP.all=0xFFFFFFFF;/*ClearallRMPnbits*/

ECanaRegs.CANGIF0.all=0xFFFFFFFF;/*Clearallinterruptflagbits*/

ECanaRegs.CANGIF1.all=0xFFFFFFFF;

 

/*ConfigurebittimingparametersforeCANA*/

ECanaShadow.CANMC.all=ECanaRegs.CANMC.all;

ECanaShadow.CANMC.bit.CCR=1;//SetCCR=1

ECanaRegs.CANMC.all=ECanaShadow.CANMC.all;

ECanaShadow.CANES.all=ECanaRegs.CANES.all;

do

{

ECanaShadow.CANES.all=ECanaRegs.CANES.all;

}while(ECanaShadow.CANES.bit.CCE!

=1);//WaitforCCEbittobeset..

ECanaShadow.CANBTC.all=0;

#if(CPU_FRQ_150MHZ)//CPU_FRQ_150MHzisdefinedinDSP2833x_Examples.h

/*Thefollowingblockforall150MHzSYSCLKOUT(75MHzCANclock)-default.Bitrate=1Mbps

SeeNoteatEndofFile*/

ECanaShadow.CANBTC.bit.BRPREG=4;

ECanaShadow.CANBTC.bit.TSEG2REG=2;

ECanaShadow.CANBTC.bit.TSEG1REG=10;

#endif

#if(CPU_FRQ_100MHZ)//CPU_FRQ_100MHzisdefinedinDSP2833x_Examples.h

/*Thefollowingblockisonlyfor100MHzSYSCLKOUT(50MHzCANclock).Bitrate=1Mbps

SeeNoteatEndofFile*/

ECanaShadow.CANBTC.bit.BRPREG=4;

ECanaShadow.CANBTC.bit.TSEG2REG=1;

ECanaShadow.CANBTC.bit.TSEG1REG=6;

#endif

 

ECanaShadow.CANBTC.bit.SAM=1;

ECanaRegs.CANBTC.all=ECanaShadow.CANBTC.all;

ECanaShadow.CANMC.all=ECanaRegs.CANMC.all;

ECanaShadow.CANMC.bit.CCR=0;//SetCCR=0

ECanaRegs.CANMC.all=ECanaShadow.CANMC.all;

ECanaShadow.CANES.all=ECanaRegs.CANES.all;

do

{

ECanaShadow.CANES.all=ECanaRegs.CANES.all;

}while(ECanaShadow.CANES.bit.CCE!

=0);//WaitforCCEbittobecleared..

/*DisableallMailboxes*/

ECanaRegs.CANME.all=0;//RequiredbeforewritingtheMSGIDs

EDIS;

}

 

#if(DSP28_ECANB)

voidInitECanb(void)//InitializeeCAN-Bmodule

{

/*CreateashadowregisterstructurefortheCANcontrolregisters.Thisis

needed,sinceonly32-bitaccessisallowedtotheseregisters.16-bitaccess

totheseregisterscouldpotentiallycorrupttheregistercontentsorreturn

falsedata.Thisisespeciallytruewhilewritingto/readingfromabit

(orgroupofbits)amongbits16-31*/

structECAN_REGSECanbShadow;

EALLOW;//EALLOWenablesaccesstoprotectedbits

/*ConfigureeCANRXandTXpinsforCANoperationusingeCANregs*/

ECanbShadow.CANTIOC.all=ECanbRegs.CANTIOC.all;

ECanbShadow.CANTIOC.bit.TXFUNC=1;

ECanbRegs.CANTIOC.all=ECanbShadow.CANTIOC.all;

ECanbShadow.CANRIOC.all=ECanbRegs.CANRIOC.all;

ECanbShadow.CANRIOC.bit.RXFUNC=1;

ECanbRegs.CANRIOC.all=ECanbShadow.CANRIOC.all;

/*ConfigureeCANforHECCmode-(reqdtoaccessmailboxes16thru31)*/

ECanbShadow.CANMC.all=ECanbRegs.CANMC.all;

ECanbShadow.CANMC.bit.SCB=1;

ECanbRegs.CANMC.all=ECanbShadow.CANMC.all;

/*Initializeallbitsof'MasterControlField'tozero*/

//SomebitsofMSGCTRLregistercomeupinanunknownstate.Forproperoperation,

//allbits(includingreservedbits)ofMSGCTRLmustbeinitializedtozero

ECanbMboxes.MBOX0.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX1.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX2.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX3.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX4.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX5.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX6.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX7.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX8.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX9.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX10.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX11.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX12.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX13.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX14.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX15.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX16.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX17.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX18.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX19.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX20.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX21.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX22.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX23.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX24.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX25.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX26.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX27.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX28.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX29.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX30.MSGCTRL.all=0x00000000;

ECanbMboxes.MBOX31.MSGCTRL.all=0x00000000;

//TAn,RMPn,GIFnbitsareallzerouponresetandareclearedagain

//asamatterofprecaution.

ECanbRegs.CANTA.all=0xFFFFFFFF;/*ClearallTAnbits*/

ECanbRegs.CANRMP.all=0xFFFFFFFF;/*ClearallRMPnbits*/

ECanbRegs.CANGIF0.all=0xFFFFFFFF;/*Clearallinterruptflagbits*/

ECanbRegs.CANGIF1.all=0xFFFFFFFF;

 

/*ConfigurebittimingparametersforeCANB*/

ECanbShadow.CANMC.all=ECanbRegs.CANMC.all;

ECanbShadow.CANMC.bit.CCR=1;//SetCCR=1

ECanbRegs.CANMC.all=ECanbShadow.CANMC.all;

ECanbShadow.CANES.all=ECanbRegs.CANES.all;

do

{

ECanbShadow.CANES.all=ECanbRegs.CANES.all;

}while(ECanbShadow.CANES.bit.CCE!

=1);//WaitforCCEbittobecleared..

 

ECanbShadow.CANBTC.all=0;

#if(CPU_FRQ_150MHZ)//CPU_FRQ_150MHzisdefinedinDSP2833x_Examples.h

/*Thefollowingblockforall150MHzSYSCLKOUT(75MHzCANclock)-default.Bitrate=1Mbps

SeeNoteatendoffile*/

ECanbShadow.CANBTC.bit.BRPREG=4;

ECanbShadow.CANBTC.bit.TSEG2REG=2;

ECanbShadow.CANBTC.bit.TSEG1REG=10;

#endif

#if(CPU_FRQ_100MHZ)//CPU_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1