dsp调试can一点心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
dsp调试can一点心得
调试的过程也就是学习的过程,无前人领路,只有自己摸索,
不免要耗费更多的时间和精力,从看书到调试到完全调通,用了差不多一星期的时间,当然不是全满,嘿嘿,偶尔还是要玩玩,在这里总结一下,脑子不好用,日后必定就忘记了这宝贵的经历。
1:如何配置can的问题
首先要按照书上所讲的做基本配置,(ECanaShadow == ECanaRegs)
GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6 = 1; //定义为can功能
GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7 = 1; //定义为can功能ECanaShadow.CANTIOC.bit.TXFUNC = 1; //定义为can发送功能
ECanaShadow.CANRIOC.bit.RXFUNC = 1; //定义为can接收功能
然后再不使能邮箱的情况下作如下设置:ECanaRegs.CANME.all = 0; //不使能邮箱ECanaRegs.CANMD.all = 0xFFFF0000; /*0~15 is TX,16~31 is RX*/
设置邮箱ID号:
/*发送邮箱的ID号*/
ECanaMboxes.MBOX0.MID.all = 0xa0000000; //mid.aam=1 自动应答模式ECanaMboxes.MBOX1.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX2.MID.all = 0x9555AAA2;
ECanaMboxes.MBOX3.MID.all = 0x9555AAA3;
ECanaMboxes.MBOX4.MID.all = 0x9555AAA4;
ECanaMboxes.MBOX5.MID.all = 0x9555AAA5;
ECanaMboxes.MBOX6.MID.all = 0x9555AAA6;
ECanaMboxes.MBOX7.MID.all = 0x9555AAA7;
ECanaMboxes.MBOX8.MID.all = 0x9555AAA8;
ECanaMboxes.MBOX9.MID.all = 0x9555AAA9;
ECanaMboxes.MBOX10.MID.all = 0x9555AAAA;
ECanaMboxes.MBOX11.MID.all = 0x9555AAAB;
ECanaMboxes.MBOX12.MID.all = 0x9555AAAC;
ECanaMboxes.MBOX13.MID.all = 0x9555AAAD;
ECanaMboxes.MBOX14.MID.all = 0x9555AAAE;
ECanaMboxes.MBOX15.MID.all = 0x9555AAAF;
/*接收邮箱的ID号*/
ECanaMboxes.MBOX16.MID.all = 0x80000000;
ECanaMboxes.MBOX17.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX18.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX19.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX20.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX21.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX22.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX23.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX24.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX25.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX26.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX27.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX28.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX29.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX30.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX31.MID.all = 0x9555AAA1;
在这里,邮箱号可以自己随便设定,就是一个标识符,要注意的是,该MID寄存器种地30~31位有特殊含义,参照书上所讲设定。
/*32个邮箱使能*/
ECanaRegs.CANME.all = 0xFFFFFFFF;
ECanaRegs.CANMIM.all = 0xFFFFffff; //使能所有接受和发送中断R = 1; //cpu请求对scc的配置寄存器canbtc
//和接收屏蔽寄存器进行写操作
do
{
ECanaShadow.CANES.all = ECanaRegs.CANES.all; //
}while(E != 1); //如果拒绝cpu对配置寄存器进行写操作
设定波特率:
EALLOW;
/*(BRPREG+1)=10 feeds a 150MHz CAN clock*/
ECanaShadow.CANBTC.bit.BRP = 9;
/*150/10=15*/
ECanaShadow.CANBTC.bit.TSEG2 = 5;
ECanaShadow.CANBTC.bit.TSEG1 = 7;
ECanaRegs.CANBTC.all = ECanaShadow.CANBTC.all;
R = 0; //配置完成
do
{
ECanaShadow.CANES.all = ECanaRegs.CANES.all;
}while(E != 0);
EALLOW;
ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
ECanaShadow.CANMC.bit.STM = 0; //1自检模式 0普通模式
ECanaShadow.CANMC.bit.SCM = 1; //选择ecan模式
ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
EDIS;
EALLOW;
ECanaRegs.CANMIM.all = 0xFFFFffff;
ECanaRegs.CANMIL.all = 0; //在中断线0上产生邮箱中断
ECanaRegs.CANGIF0.all = 0xFFFFFFFF; //全局中断标志寄存器
ECanaRegs.CANGIF1.all = 0xFFFFFFFF; //全局中断标志寄存器
ECanaRegs.CANGIM.bit.I0EN = 1; //使能所有中断