搜索
bottom↓
回复: 2

万利的CAN和串口,I/O程序调通,但请教滤波器及地址的设置?【恢复】

[复制链接]

出0入0汤圆

发表于 2008-10-31 22:28:13 | 显示全部楼层 |阅读模式
点击此处下载 ourdev_477258.rar(文件大小:392K) (原文件名:万利CAN和串口调成功.rar) 



滤波器设置:

CAN_wrFilter (33, STANDARD_FORMAT);             // Enable reception of messages

子程序:

void CAN_wrFilter (unsigned int id, unsigned char format)  {

  static unsigned short CAN_filterIdx = 0;

         unsigned int   CAN_msgId     = 0;

  

  if (CAN_filterIdx> 13) {                       // check if Filter Memory is full

    return;

  }

                                                  // Setup identifier information

  if (format == STANDARD_FORMAT)  {                      // Standard ID

      CAN_msgId  |= (unsigned int)(id << 21) | CAN_ID_STD;

  }  else  {                                             // Extended ID

      CAN_msgId  |= (unsigned int)(id <<  3) | CAN_ID_EXT;

  }



  CAN->FMR  |=  CAN_FMR_FINIT;                    // set Initialisation mode for filter banks

  CAN->FA0R &=  ~(unsigned int)(1 << CAN_filterIdx); // deactivate filter



                                                  // initialize filter   

  CAN->FS0R |= (unsigned int)(1 << CAN_filterIdx);// set 32-bit scale configuration

  CAN->FM0R |= (unsigned int)(1 << CAN_filterIdx);// set 2 32-bit identifier list mode



  CAN->sFilterRegister[CAN_filterIdx].FR0 = CAN_msgId; //  32-bit identifier

  CAN->sFilterRegister[CAN_filterIdx].FR1 = CAN_msgId; //  32-bit identifier

   

  

                                                                                                               

  CAN->FFA0R &= ~(unsigned int)(1 << CAN_filterIdx);  // assign filter to FIFO 0

  CAN->FA0R  |=  (unsigned int)(1 << CAN_filterIdx);  // activate filter



  CAN->FMR &= ~CAN_FMR_FINIT;                     // reset Initialisation mode for filter banks



  CAN_filterIdx += 1;                             // increase filter index

}

请教大家本机地址是十进制33吗?我要使滤波器不屏蔽在哪里设置?这个程序我跟智林的扳子可以通讯,但跟SJA1000始终不能通讯,不知问题在哪里?

能够解释一下这是在干吗:1 << CAN_filterIdx,没有见过.

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2008-11-17 20:51:21 | 显示全部楼层
谢谢wizzly!

出0入0汤圆

发表于 2008-11-15 11:06:10 | 显示全部楼层
我已经回复你了,请见http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=1778829&bbs_id=3020

你所指SJA1000是指另外有一块板是用的SJA1000作为CAN控制器,你的板跟另外板通不上吗?

这里面你通讯不上,可能有几个问题:

1.你的波特率是不是相一致

2.你的标识符ID是否设置正确

3.你两块板位定时的设置不同(就是SJW,BS1,BS2还有速率的计算),你再详细的计算一下看看
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-16 14:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表