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

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

  接收过滤寄存器和屏蔽寄存器的设置

  /* 下面的函数用来设置接收过滤器"n" ,各输入参数的意义分别为:

  n-> 过滤器号,范围为[0-15]

  identifier-> 合法的标识符

  exide -> 是否扩展数据帧,"0" 表示为标准数据帧,"1"表示为扩展数据帧

  bufPnt -> 过滤后的信息存放的缓冲区,范围为[0-15]

  maskSel -> 关连的屏蔽寄存器[0-3] */

  void ecan1WriteRxAcptFilter(int n, long identifier, unsigned int exide, unsigned int bufPnt, unsigned int maskSel)

  {

  /*定义局部变量*/

  unsigned long sid10_0=0, eid15_0=0, eid17_16=0;

  unsigned int *sidRegAddr,*bufPntRegAddr,*maskSelRegAddr, *fltEnRegAddr;

  /*因为将要设置的特殊寄存器要与别的寄存器共用地址,所以需设置控制位WIN*/

  C1CTRL1bits.WIN=1;

  /* 根据输入的参数,计算出相应寄存器的地址,包括滤波器n的地址、缓冲指针寄存器地址、相关的屏蔽寄存器的地址及接收过滤使能寄存器的相关位*/

  // 接过过滤寄存器的地址

  sidRegAddr = (unsigned int *)(&C1RXF0SID + (n << 1));

  //报文缓冲区地址

  bufPntRegAddr = (unsigned int *)(&C1BUFPNT1 + ((n >> 2)*2) ) ;

  //屏蔽寄存器地址

  maskSelRegAddr = (unsigned int *)(&C1FMSKSEL1 + ((n >> 3)*2));

  //过滤器使能地址

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

关键词: CAN TJA1054 dsPIC33FJ128MC506

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

或用微信扫描左侧二维码

相关文章

查看电脑版