在使用DSP28335的CAN通讯模块与PC及通过CAN分析仪联调的时候出现了一些问题。具体如下:
第一次DSP的MBOX0和MBOX1自动发送数据帧时,数据可以正常发送出来。然后经过一些设置让DSP进入循环等待中,我用PC机发送了一个与MBOX0的ID相同的远程帧请求,然后MBOX0响应了一个数据帧回来,但是这个数据帧时空的,查看DSP变量表里面,MBOX内容并没有改变,但是发不出数据了。退出刚刚的循环等待,进入下一次原本的正常MBOX0和MBOX1的发送,MBOX1可以像之前一样正常发送,但是,MBOX0发送出来的数据依然为空的。不管我中途对MBOX里面的数据进行怎样的修改(DSP仿真器里面可以看到值的变化,修改是成功的)但是,自从第一次响应了远程帧之后,MBOX1就发不出数据了,只能把仿真停止,重新运行,才会在第一次远程帧发出之前,MBOX0有正常的输出。这个问题出在哪里了呢?CAN分析仪得到的数据结果如下(其中MBOX0的ID是15550093,MSGID设置的是B5550093,想的是AAM(29位)=1:使能自动响应,AME(30位)=0:不使用接收屏蔽,RTR设为0):
相关的代码附在下方:设置ID
设置RTR和初值
第一次发送:
等待PC机发送远程帧,并进行新的赋值及发送
如果有做过这一块的伙伴,麻烦指点一下!非常感谢!
之前用自响应调试实在找不到问题在哪里,代码详见另一个帖子https://bbs.21ic.com/icview-3017624-1-1.html。感兴趣的朋友也可以过去看一下那个帖子里面的问题。
|