TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F280049: Dcan 中断问题

Part Number:TMS320F280049Other Parts Discussed in Thread:C2000WARE

想请教下Dcan接收中断配置的问题。

想要实现的功能:用MailBox1做为接收邮箱,打开邮箱1的数据接收中断,进入中断后判断是否接收到新数据,如果收到新数据,就对数据作相应处理

问题:一直无法触发Can中断

详细情况:我当时以为这个符合芯片资料 CAN Interrupt Topology 2中的描述,按照这个图和文字描述,相关寄存器配置:

CanaRegs.CAN_IF1MCTL.bit.RxIE = 1;

CanaRegs.CAN_IP_MUX21 = 0xFFFFFFFD;   //Bit 1 is for mailbox 1

CanaRegs.CAN_CTL.bit.IE0 = 1;

CanaRegs.CAN_GLB_INT_EN.bit.GLBINT0_EN = 1;

CanaRegs.CAN_GLB_INT_CLR.bit.INT0_FLG_CLR = 1;

PieCtrlRegs.PIEACK.all = 0xFFFF;

但是中断无法被触发,

1、相同的配置下,PIEACK_GROUP9的其它中断触发没有问题;

2、如果增加一句 CanaRegs.CAN_CTL.bit.SIE = 1;,接受中断那个函数就会一直被触发,看来Can这边另一条中断通路也是通的;但通过这种方式进了中断之后,再去读CanaRegs.CAN_NDAT_21标志位,发现邮箱1并没有接收到新数据。

3、这个板子在Can其他工况下可以正常工作,硬件接口没有问题

所以我想知道Can的数据接收中断配置是哪里出错了吗?还有哪些寄存器是一定要配置的?另外Can中断的触发一定需要Can数据正常吗?还是像SCI一样,不管数据怎样,只要有符合格式的数据就可以触发到中断?我现在不清楚问题出在哪里

Green Deng:

你好,看代码没看出来什么问题,推荐你参考一下TI提供的官方例程进行设置:C:\ti\c2000\C2000Ware_3_04_00_00\driverlib\f28004x\examples\can

,

qian gao:

试了一下,好像是msgID不匹配无法触发中断,但是修改之后又有新的问题,CanaRegs.CAN_GLB_INT_CLR寄存器无法写1,导致CAN_GLB_INT_FLG标志位一直是1,不能清零。看了例程,函数调用最终结果也是在地址0x48058写1去清中断标志,为什么我实现不了?操作这个寄存器有前置条件吗?

现在只有把CAN_GLB_INT_EN写零,才能改写CAN_GLB_INT_FLG和CAN_GLB_INT_CLR,但是重新使能CAN_GLB_INT_EN,CAN_GLB_INT_FLG又会变成1了

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280049: Dcan 中断问题
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1