【疑问!急!】PIC24H的ECAN模块环回模式调试问题

[复制链接]
4040|7
 楼主| yy_allblue 发表于 2008-8-8 15:52 | 显示全部楼层 |阅读模式
各位好心并且帅气的高手、大虾、牛人们,小弟弟我在调试PIC24HJ64gp506的ECAN1通信,用环回模式,定义了DMA&nbsp;RAM缓冲区:<br /><br />typedef&nbsp;u_Word_Char&nbsp;ECAN1MSGBUF&nbsp;[4][8];<br /><br />extern&nbsp;ECAN1MSGBUF&nbsp;&nbsp;ecan1msgBuf&nbsp;__attribute__((space(dma)));<br />ECAN1MSGBUF&nbsp;ecan1msgBuf&nbsp;__attribute__((space(dma),aligned(ECAN1_MSG_BUF_LENGTH*16)));<br /><br />4*8的数组形式。<br />设置为:0,1区用于发,2,3区用于接。<br /><br />DMA设置如下:<br /><br />/*&nbsp;Dma&nbsp;Initialization&nbsp;for&nbsp;ECAN1&nbsp;Transmission&nbsp;*/<br />void&nbsp;dma0init(void)<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMACS0=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA0CON=0x2020;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA0PAD=0x0442;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;ECAN&nbsp;1&nbsp;(C1TXD's&nbsp;Reg&nbsp;Add)&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA0CNT=0x0007;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA0REQ=0x0046;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;ECAN&nbsp;1&nbsp;Transmit's&nbsp;TX&nbsp;IV&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA0STA=&nbsp;&nbsp;__builtin_dmaoffset(ecan1msgBuf);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA0CONbits.CHEN=1;<br />}<br />/*&nbsp;Dma&nbsp;Initialization&nbsp;for&nbsp;ECAN1&nbsp;Reception&nbsp;*/<br />void&nbsp;dma1init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMACS0=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA1CON=0x0020;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA1PAD=0x0440;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;ECAN&nbsp;1&nbsp;(C1RXD's&nbsp;Reg&nbsp;Add)&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA1CNT=0x0007;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA1REQ=0x0022;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;ECAN&nbsp;1&nbsp;Receive's&nbsp;RX&nbsp;IV&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA1STA=&nbsp;__builtin_dmaoffset(ecan1msgBuf);&nbsp;<br />&nbsp;&nbsp;&nbsp;IEC0bits.DMA1IE&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;IPC3bits.DMA1IP&nbsp;=&nbsp;0b010;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMA1CONbits.CHEN=1;<br />}<br /><br />在请求发送后,C1INTF的“发送中断标志”和“接收中断标志”都已经置1,而且C1RXFUL1的“接收缓冲区3满标志”也置1。<br /><br />1.但是观察接收缓冲区,却始终没有接收到数据。也不知道有没有正常发出。<br /><br />2.而且接收数组的第一个元素:ecan1msgBufRX[0][0],在请求发送的时候,发送的一瞬间,会变为“0x0100”,不知道为什么?<br /><br />请各位好心并且帅气的高手、大虾、牛人们不吝赐教!<br />
yewuyi 发表于 2008-8-8 17:15 | 显示全部楼层

呵呵,俺还不会伟大的CAN通讯

正在考虑什么时候学学,有朋友曾经找俺帮忙捣鼓CAN通讯,可惜不会。。。<br /><br /><br />呵呵,你搞懂了不妨教教俺。。。。
hq_y 发表于 2008-8-8 17:23 | 显示全部楼层

伟大的can通讯~~~~~~~~~`呵呵~~````

  
zuoyou 发表于 2008-8-8 17:40 | 显示全部楼层

re

look&nbsp;errdata.pdf
 楼主| yy_allblue 发表于 2008-8-10 15:56 | 显示全部楼层

errdata.pdf?

&nbsp;zuoyou&nbsp;发表于&nbsp;2008-8-8&nbsp;17:40&nbsp;PIC&nbsp;单片机&nbsp;←返回版面&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />4楼:&nbsp;re&nbsp;<br /><br />look&nbsp;errdata.pdf&nbsp;<br />&nbsp;<br />左右兄台,这个errdata.pdf是。。。?。。。能否言明?
 楼主| yy_allblue 发表于 2008-8-11 08:07 | 显示全部楼层

我用的是C30编译器,死活调不出来。。。

  
 楼主| yy_allblue 发表于 2008-8-12 08:57 | 显示全部楼层

怎么没有人啊。。。

  
 楼主| yy_allblue 发表于 2008-8-13 13:27 | 显示全部楼层

勘误表

左右兄说的是勘误表吧?才想起来。。。<br />errata.pdf<br />于是<br />我看了几个勘误表<br />发现:<br />“Work&nbsp;around:<br />Do&nbsp;not&nbsp;use&nbsp;Loopback&nbsp;mode.”<br />没办法了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

9

帖子

0

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