[ZLG-MCU] 流明的CAN模块问题

[复制链接]
 楼主| 疯子8972 发表于 2009-6-24 16:24 | 显示全部楼层 |阅读模式
流明的CAN模块问题<br />最近使用流明的CAN模块,如果我的CAN信号线和ZLG&nbsp;CAN分析仪连接上<br />发送一帧后&nbsp;&nbsp;分析仪显示一帧数据&nbsp;&nbsp;&nbsp;&nbsp;并且流明单片机进入中断<br />我读中断的结果temp1&nbsp;=&nbsp;CANStatusGet(CAN0_BASE,&nbsp;CAN_STS_CONTROL);<br />temp1值为0x48,即CAN_STATUS_EWARN和CAN_STATUS_TXOK<br />奇怪,为什么既然已经成功TXOK了,还有警报呢?<br /><br />如果把拔掉CAN线,发送一帧,<br />进入中断temp1为0x63,分别是代表4种错误<br />CAN_STATUS_LEC_STUFF,CAN_STATUS_LEC_FORM,<br />CAN_STATUS_EWARN,CAN_STATUS_EPASS<br />而且不停的进入中断,读出一直是这四种错误,就算我不再发送也是这样<br />请问谁用过流明的CAN模块&nbsp;&nbsp;能给点思路<br /><br />
 楼主| 疯子8972 发表于 2009-6-25 09:37 | 显示全部楼层

问题部分解决

问题部分解决<br />发现波特率有问题&nbsp;&nbsp;现在正常发送没有问题了<br />但是一旦线路有问题&nbsp;&nbsp;&nbsp;状态位中CAN_STATUS_EWARN,CAN_STATUS_EPASS这两位就一直存在,请问如何将这两个错误清除呢,错误计数器的值都是只读的,该怎么清零呢?
ijk 发表于 2009-6-29 17:23 | 显示全部楼层

复位

&nbsp;&nbsp;复位CAN模块。
LM CAN Support 发表于 2009-7-1 09:14 | 显示全部楼层

流明的CAN模块问题

回复1楼:<br />“不停的进入中断”是因为使能了CAN“状态中断”所致,实际应用中通常只需要设置报文挂起中断及总线错误中断,即按如下设置:<br /><br />···<br />CANIntEnable(ptCanNode-&gtulBaseAddr,&nbsp;CAN_INT_MASTER&nbsp;|&nbsp;CAN_INT_ERROR);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;允许挂起中断及错误中断&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />···<br /><br />当线路有问题时,则进入错误中断,CAN驱动包(zlg_can.c、zlg_can.h&nbsp;(V1.4之前为my_can.c、my_can.h)可到www.zlgmcu.com相关板块下载)提供的解决方案是在错误中断中设置相关标志,再在main()函数中延时一段时间后重新将CAN控制器接入总线,即调用驱动包的函数canNodeBusOn(&nbsp;)即可。
LM CAN Support 发表于 2009-7-1 09:30 | 显示全部楼层

CAN 错误中断处理

&nbsp;&nbsp;&nbsp;&nbsp;在错误中断中通常也只需要处理“脱离总线”错误,处理方法就是复位CAN模块使其重新接入总线,CAN驱动包里的canNodeBusOn(&nbsp;)函数即干了这件事。<br />&nbsp;&nbsp;&nbsp;&nbsp;当出现脱离总线故障时,不建议立即复位CAN模块,因为出现脱离总线故障有可能是CAN节点自身的问题,如果立即接入总线则有可能使得挂在CAN总线上的其他正常节点无法正常通信(总线上的通信受到问题节点的干扰),对脱离总线的错误中断处理通常作适当延时后再接入总线即可。
xiaoxin1986 发表于 2009-7-4 16:39 | 显示全部楼层

不错,学些了

  
linhai1986 发表于 2009-7-7 21:52 | 显示全部楼层

学习了

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

本版积分规则

32

主题

576

帖子

37

粉丝
快速回复 在线客服 返回列表 返回顶部