3938|0

554

帖子

1236

TA的资源

纯净的硅(中级)

楼主
 

Hercules之Tms570ls20206 can总线滤波及中断问题分享 [复制链接]

tms570ls20206的can总线中,为什么设置了屏蔽寄存器,可是还是所有的CAN的ID都产生中断,且中断清不掉?
DCAN模块本身是不严格区分发送或接收中断的。只有IE0和IE1两个bit控制的DCANxINT0和DCANxINT1两个中断。   也就是常说的High和Low中断。
   建议用不同的中断ISR来响应发送或接收中断。
   无论用哪个中断ISR来响应发送中断,清除INTPND的方法都是使用IFxCMD的CLRINTpnd清除。
   如果使用同一个ISR来响应发送和接收中断,那么需要在ISR中稍加判断了。
   还有就是,如果使用中断的方式来完成连续发送,您可能需要考虑总线繁忙(busy)问题。
   另一种方法是使用时间片来完成发送,通过轮询TxRqst位来判断当前数据是否发送完成,进而进行后面的报文发送。
   这样的做法更便于实现超时监控(Timeout monitor).
请先查看570的TRM,关于IFxMSK寄存器一节(16.15.19 IF1/IF2 Mask Registers (DCAN IF1MSK, DCAN IF2MSK))。
MASK的工作方式是:
0:  The corresponding bit in the identifier of the message object is not used for acceptance filtering (don’t care).
1:  The corresponding bit in the identifier of the message object is used for acceptance filtering.
以11bit ID为例,如果把ID为0x501的MsgObj的MASK设置成0x7FF,那么这个MsgObj只能接收0x501 ID的报文。
如果把MASK设置成0x7FE,也就是ID的最后一个bit不关心(don't care),那么0x500和0x501就都能接收进来了。

将MsgObj 4的MASK设置成0x7FE,那么本来ID是0x500的MsgObj4也可以接收0x501 ID的报文了。

关于清中断,请参考TI的DEMO例程的方法。
正常情况下,进入中断后,通过IFxCMD寄存器的ClrIntPnd位来清楚中断标志。

[ 本帖最后由 anvy178 于 2012-11-29 17:03 编辑 ]
 
点赞 关注(1)

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表