[讨论] dsPIC33FJ的ECAN问题

jpxuchao   2015-10-22 10:37 楼主
dsPIC33fj中ECAN中怎么实现不同帧ID输出不同数据?请大神解答

回复评论 (6)

ECAN有8个 发送/ 接收缓冲区控制寄存器,分别是TRB0~7,设计此寄存器,可设定不同帧,在其8个数据缓冲区设计对应帧的数据即可
点赞  2015-10-22 11:03
引用: dingzy_2002 发表于 2015-10-22 11:03
ECAN有8个 发送/ 接收缓冲区控制寄存器,分别是TRB0~7,设计此寄存器,可设定不同帧,在其8个数据缓冲区设计对 ...

  ecan1WriteTxMsgBufId(0,0x18010331,1,0);
    ecan1WriteTxMsgBufId(1,0x18010332,1,0);
    ecan1WriteTxMsgBufId(2,0x18010333,1,0);

ecan1WriteTxMsgBufData(0,8,data[0],data[1],data[2],data[3]);
     C1TR01CONbits.TXREQ0=1;
                                                                        
         ecan1WriteTxMsgBufData(1,8,data[4],data[5],data[6],data[7]);
     C1TR01CONbits.TXREQ1=1;
                                                                          
         ecan1WriteTxMsgBufData(2,8,data[8],data[9],data[10],data[11]);
     C1TR23CONbits.TXREQ2=1;
我是这样发的,不过不是按顺序执行的,等下我把结果发上来,你帮我看下,谢谢了
点赞  2015-10-22 12:03
1.png
点赞  2015-10-22 12:11

在我看来,这数据不是正常的吗?332ID的数据是050000060007000800
333ID的是0900100011001200;
不同ID的数据是不一样的,这正确呀?
关于空数据问题,主要还要看你发送数据是否正常.
点赞  2015-10-23 16:26
用PICKIT3之类的仿真工具,在发送第一个数据进,设置断点,查看寄存器内容.
点赞  2015-10-23 16:27
引用: dingzy_2002 发表于 2015-10-23 16:26
在我看来,这数据不是正常的吗?332ID的数据是050000060007000800
333ID的是0900100011001200;
不同ID的 ...

谢谢了,空的其实是我发送频率太快了,DMA来不及写入,我把触发的时间变长,就可以了。
点赞  2015-11-19 08:56
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复