基于dsPIC33FJ128MC506的CAN通信(07-100)

  作者:山东省科学院自动化研究所 张云 李明强 庄汝科 时间:2009-03-04来源:电子产品世界

  DMA2通道初始化为ECAN1接收:

  void dma2init(void)

  {

  DMACS0=0; //清DMA控制器状态位

  DMA2CON=0x0020; //DM为外设间接寻址模式,支持从DMA写,并读到外设

  DMA2PAD=0x0440; //DMA0PAD下载为ECAN1接收寄存器的地址

  DMA2CNT=0x0007; //传输计数寄存器为8

  DMA2REQ=0x0022; //DMA外设REQ编号选择位

  DMA2STA= __builtin_dmaoffset(&ecan1msgBuf[2][0]); //DMA起始地址位

  DMA2CONbits.CHEN=1;

  }

  上面程序中的“DMA0STA= __builtin_dmaoffset(ecan1msgBuf);”和“ DMA2STA= __builtin_dmaoffset(&ecan1msgBuf[2][0]); ”分别指明了DMA的起始地址位为ecan1msgBuf和(&ecan1msgBuf[2][0],ecan1msgBuf是一个两维数组,在相关头文件中定义,其语句为:

  ECAN1缓冲器的设置:

  #define ECAN1_MSG_BUF_LENGTH 4 //长度为4个字

  //缓冲区为二维数据

  typedef unsigned int ECAN1MSGBUF [ECAN1_MSG_BUF_LENGTH][8];

  //数组位于DMA空间

  extern ECAN1MSGBUF ecan1msgBuf __attribute__((space(dma)));

1 2 3 4 5 6 7 8 9 10 11 12 13 14

关键词: CAN TJA1054 dsPIC33FJ128MC506

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版