请教XS128MAL的CAN接收问题(已解决)
本帖最后由 FSL_TICS_ZP 于 2014-3-4 13:11 编辑我正在编写一个检测仪表,传感器探头发出的是CAN消息,软件环境是CW+PE。之前做过的测试程序还挺正常,当我正式编写程序的时候遇到了问题:我想实时检测CAN接收标志位,目的是间接监测我的传感器硬件是否正常连线。我每次读完CAN0RFLG_RXF(定时中断0.25s执行一次)以后都主动重新给它置位,可是我发现无论是否插入传感探头,都会进入读标错误累加,不走正常分支。
另,我怀疑该错误的出现存在三种可能性:1、我曾经使用PE自动初始化CAN模块,但一直报错;后联系了freescale的SAE,给我一个license,但还是存在错误。于是CAN部分我自己配置了寄存器,现在我依然怀疑是软件权限的问题(codewarrior锁了CAN部分)。
2、每次清标志位前必须读出数据帧,只读标志位是无效操作?我正在确认该种情况。
3、我的程序思路本身存在问题。
期待高手解答我的困惑,共同交流!
如下是我的相关程序段:
while(CAN_Wait_Flag) //检测循环,正常情况下探头每1s上传一次数据
{
if(CAN_check_flag) //定期执行CAN信号检测,CAN_check_flag来自定时中断
{
if(CAN0RFLG_RXF)
{
CAN_error=0; //收到信号即时清零
}
else
{
CAN_error++;
}
CAN_check_flag=0;
CAN0RFLG_RXF=1; //清标志位
}
if(CAN_error>8) //连续丢失8次信号判断为CAN信号丢失,程序从头开始执行
{
Display(tab8);//
Cpu_Delay100US(30000);//
CAN_Wait_Flag=0; //退出检测循环
CAN_Receive_Error=1; //略过报文解析环节
}
if(timer>24) //正常等待期间,0.25s累加一次,程序正常向下执行
{
Display(tab9);//
Cpu_Delay100US(30000);//
timer=0;
CAN_error=0;
CAN_Wait_Flag=0;
}
} 你好,请问你用的PE里面是否带有CAN 模块的典型应用,你可以通过选中CAN模块,右击help查看。如果有,建议你先按照典型应用程序配置与调试。
一般情况下,CW是不会对部分模块进行限制的,如果有license,应该是都可以使用的。
页:
[1]