打印
[PIC®/AVR®/dsPIC®产品]

dspic33fj128gp706 CAN环回模式 收发数据

[复制链接]
977|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jxwhf2007|  楼主 | 2018-11-19 14:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教有懂的大侠们,dspic33fj128gp706 CAN环回模式 能收到自己发送的数据 但是通过DMA送到DMA RAM内存时,好像数据出错了,比如发送的数据是2222 收到的是0222  ;发送3333时 收到1333,高三位变成了000;我的DMA ram定义如下:

ECAN1MSGBUF ecan1TXmsgBuf __attribute__((space(dma),aligned(4*16)));
ECAN1MSGBUF ecan1RXmsgBuf __attribute__((space(dma),aligned(4*16)));

void dma3init(void){

         DMACS0=0;
     DMA3CON=0x2020;
         DMA3PAD=0x0442;        /* ECAN 1 (C1TXD) */
         DMA3CNT=7;
         DMA3REQ=0x0046;        /* ECAN 1 Transmit */
//         DMA3STA=  __builtin_dmaoffset(ecan1TXmsgBuf);
     DMA3STA=  __builtin_dmaoffset(&ecan1TXmsgBuf);       
         DMA3CONbits.CHEN=1;
         
}


/* Dma Initialization for ECAN1 Reception */
void dma2init(void){

         DMACS0=0;
     DMA2CON=0x0000;
         DMA2PAD=0x0440;        /* ECAN 1 (C1RXD) */
         DMA2CNT=7;
         DMA2REQ=0x0022;        /* ECAN 1 Receive */
//         DMA2STA= __builtin_dmaoffset(ecan1RXmsgBuf);
     DMA2STA= __builtin_dmaoffset(&ecan1RXmsgBuf);
         DMA2CONbits.CHEN=1;
         
}
DMA发送按外设间接寻址模式,接收采用寄存器间接寻址!

希望有懂的大侠帮忙解答下。
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

37

帖子

0

粉丝