1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,小弟最近在学习DSP28335,在CAN通信时遇到了点问题,CAN 收发都调试成功了,但是总觉得程序不够完善,想请教下各位。
1、没有错误处理机制,所以我查了一些资料,现在加了个总线关闭时初始化ECan的操作,还没调试,不知道这样处理是否可行。另外想问下,还由其他必要的系统中断和邮箱中断要处理吗? 例如邮箱超时等。 Code: //系统中断 interrupt void ECAN0INTA_ISR(void) // eCAN-A { struct ECAN_REGS ECanaShadow; do{ ECanaShadow.CANGIF0.all=ECanaRegs.CANGIF0.all; }while(ECanaShadow.CANGIF0.all & 0x3FF00 == 0x00000000); //总线关闭 if(ECanaShadow.CANGIF0.bit.BOIF0==1){ InitECan(); Msg0x440.configMbx(&Msg0x440); Msg0x100.configMbx(&Msg0x100); Msg0x200.configMbx(&Msg0x200); } PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; EINT; // Next two lines for debug only to halt the processor here // Remove after inserting ISR Code //asm (" ESTOP0"); //for(;;); } //邮箱中断 interrupt void ECAN1INTA_ISR(void) // eCAN-A { // Insert ISR Code here //If mailbox n contains a received message, bit RMP[n] of this register is set struct ECAN_REGS ECanaShadow; do{ ECanaShadow.CANRMP.all=ECanaRegs.CANRMP.all; }while(ECanaShadow.CANRMP.all & 0xFFFF0000 == 0x00000000); if(ECanaShadow.CANRMP.bit.RMP16==1){ ECanaRegs.CANRMP.all=0x00010000; Msg0x100.BYTE[0]=ECanaMboxes.MBOX16.MDL.byte.BYTE0; Msg0x100.BYTE[1]=ECanaMboxes.MBOX16.MDL.byte.BYTE1; Msg0x100.BYTE[2]=ECanaMboxes.MBOX16.MDL.byte.BYTE2; Msg0x100.BYTE[3]=ECanaMboxes.MBOX16.MDL.byte.BYTE3; Msg0x100.BYTE[4]=ECanaMboxes.MBOX16.MDH.byte.BYTE4; Msg0x100.BYTE[5]=ECanaMboxes.MBOX16.MDH.byte.BYTE5; Msg0x100.BYTE[6]=ECanaMboxes.MBOX16.MDH.byte.BYTE6; Msg0x100.BYTE[7]=ECanaMboxes.MBOX16.MDH.byte.BYTE7; } if(ECanaShadow.CANRMP.bit.RMP17==1){ ECanaRegs.CANRMP.all=0x00020000; Msg0x200.BYTE[0]=ECanaMboxes.MBOX17.MDL.byte.BYTE0; Msg0x200.BYTE[1]=ECanaMboxes.MBOX17.MDL.byte.BYTE1; Msg0x200.BYTE[2]=ECanaMboxes.MBOX17.MDL.byte.BYTE2; Msg0x200.BYTE[3]=ECanaMboxes.MBOX17.MDL.byte.BYTE3; Msg0x200.BYTE[4]=ECanaMboxes.MBOX17.MDH.byte.BYTE4; Msg0x200.BYTE[5]=ECanaMboxes.MBOX17.MDH.byte.BYTE5; Msg0x200.BYTE[6]=ECanaMboxes.MBOX17.MDH.byte.BYTE6; Msg0x200.BYTE[7]=ECanaMboxes.MBOX17.MDH.byte.BYTE7; } // To receive more interrupts from this PIE group, acknowledge this interrupt PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; EINT; // Next two lines for debug only to halt the processor here // Remove after inserting ISR Code //asm (" ESTOP0"); //for(;;); } 2、CAN的断电模式是否只在器件要进入低功耗模式时用到? |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
3296 浏览 0 评论
801 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
3730 浏览 0 评论
4484 浏览 1 评论
1396 浏览 1 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 01:14 , Processed in 0.496304 second(s), Total 69, Slave 54 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号