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

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

  C1CTRL1bits.REQOP=4;

  while(C1CTRL1bits.OPMODE!=4); //请求进入配置模式

  ecan1ClkInit(); //调用波特率设置函数

  C1FCTRLbits.DMABS=0b000; //在DMA RAM 中设置4个CAN报文缓冲

  ecan1WriteRxAcptFilter(1,0x36,0,2,0); //配置接过收滤寄存器

  /*配置接收屏蔽寄存器,要注意的是,这里设为“1”的位是非屏蔽位,设为“0”的位为屏蔽位。这里的0x7FF将会对标准帧ID的每一位都进行检查是否对应的过滤器相匹配*/

  ecan1WriteRxAcptMask(0,0x7ff,0);

  C1CTRL1bits.REQOP=0;

  while(C1CTRL1bits.OPMODE!=0); //进入正常模式

  /*以下语句设置CAN报文的发射接收控制*/

  C1RXFUL1=C1RXFUL2=C1RXOVF1=C1RXOVF2=0x0000;

  C1TR01CONbits.TXEN0=1; /*ECAN1的0缓冲器为发射缓冲 */

  C1TR01CONbits.TXEN1=0; /* ECAN1的1缓冲器为接收缓冲 */

  C1TR01CONbits.TX0PRI=0b11; /* 发射缓冲的优先级*/

  }

  数据的发射和接收

  写报文ID

  下面的函数将一个报文ID写到ECAN1的发射缓冲区,其中各个参数代表的含义如下:

  /*buf -> 发射寄存器号

  txIdentifier ->发射报文的ID

  ide -> "0" 报文为标准帧

  "1" 报文为扩展帧

  remoteTransmit -> "0" 报文为正常报文

  "1" 报文为远程报文 */

  void ecan1WriteTxMsgBufId(unsigned int buf, long txIdentifier, unsigned int ide, unsigned int remoteTransmit)

  {

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

关键词: CAN TJA1054 dsPIC33FJ128MC506

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

或用微信扫描左侧二维码

相关文章

查看电脑版