找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3312|回复: 0
收起左侧

众拳STM8的CAN总线标识符过滤实验附代码

[复制链接]
ID:170279 发表于 2017-11-30 10:23 | 显示全部楼层 |阅读模式
TB2ZUvHqVXXXXc2XpXXXXXXXXXX_!!85243700.jpg
实验目的:
通过对CAN过滤器的设置,屏蔽总线上其他无用的报文,只接收自己需要的报文。
标识符过滤模式
● 可变的位宽
  每个过滤器组的位宽都可以独立配置,以满足应用程序的不同需求。根据位宽的不同,每个过滤器组可提供:
  ─  1 个 32 位过滤器,包括:STDID[10:0]/EXTID[28:18]、IDE、EXID[17:0]和 RTR 位;
  ─  2 个 16 位过滤器,包括:STDID[10:0]/EXTID[28:18]、IDE 和 RTR 位;
  ─  4 个 8 位过滤器,包括:STDID[10:3]/EXTID[28:21],其他位可以不用关心;
  ─  1 个 16 位过滤器和 2 个 8 位过滤器,具体的过滤器描述如上16位和8位过滤器描述。

FMLx位定义该寄存器组的低半组(CAN_FxR1-4寄存器)的模式,
FMHx位定义该寄存器组的高半组(CAN_FxR5-8寄存器)的模式,
32位过滤器组设

1.png



FMHx=0 高位寄存器工作在屏蔽位模式。          FMLx =0 低位寄存器工作在屏蔽位模式。
FMHx=1 高位寄存器工作在标识符列表模式。   FMLx =1 低位寄存器工作在标识符列表模式。


FMLx和FMHx位必须拥有相同的值以确保4个屏蔽位/标识符过滤器位处于相同的模式。
16位过滤器组设置
2.png

FMHx=0 高位寄存器工作在屏蔽位模式。          FMLx =0 低位寄存器工作在屏蔽位模式。
FMHx=1 高位寄存器工作在标识符列表模式。   FMLx =1 低位寄存器工作在标识符列表模式。
16/8位过滤器组设置
3.png

FMHx=0 高位寄存器工作在屏蔽位模式。          FMLx =0 低位寄存器工作在屏蔽位模式。
FMHx=1 高位寄存器工作在标识符列表模式。   FMLx =1 低位寄存器工作在标识符列表模式。

8位过滤器组设置
4.png

FMHx=0 高位寄存器工作在屏蔽位模式。          FMLx =0 低位寄存器工作在屏蔽位模式。
FMHx=1 高位寄存器工作在标识符列表模式。   FMLx =1 低位寄存器工作在标识符列表模式。


stm8单片机源程序如下:
  1. /***********************************************************************
  2. *   说    明: CAN转发数据实验
  3. *   开发平台: 剑齿虎STM8开发板        
  4. *   作    者: 刘洋 张殿东
  5. *   版    本: V1.0
  6. *   IAR开发环境    版本 V2.20.1
  7. *   ST库函数       版本 V2.2.0
  8. ***********************************************************************/

  9. #include "pbdata.h"//引入自定义公共头文件

  10. void BSP_Configuration(void);//硬件初始化函数声明

  11. /***********************************************************************
  12. *   函 数 名: main
  13. *   功能说明: c程序入口
  14. *   形    参:无
  15. *   返 回 值: 错误代码(无需处理)
  16. ***********************************************************************/
  17. int main(void)
  18. {
  19.   BSP_Configuration();//硬件驱动初始化函数
  20.   
  21.   while(1)//主程序循环,反复执行循环体里的语句
  22.   {
  23.     //LED_Demo1();//在主程序中调用LED_Demo1()函数
  24.     //LED_Demo2();//在主程序中调用LED_Demo2()函数
  25.     //UART1_Printf_Demo();
  26.     //CAN_SendData_Demo2();
  27.   }
  28. }
  29. /***********************************************************************
  30. *   函 数 名: BSP_Configuration
  31. *   功能说明: 初始化硬件设备。只需要调用一次。该函数配置CPU寄存器和外设的寄存器并初始化一些全局变量。
  32. *   形    参:无
  33. *   返 回 值: 无
  34. ***********************************************************************/
  35. void BSP_Configuration(void)
  36. {  
  37.   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//时钟速度为内部16M,1分频,
  38.   UART1_Congfiguration();//调用RS232串口1初始化函数
  39.   LED_Init();//调用LED初始化函数
  40.   CAN_Configuration();//调用CAN初始化函数
  41.   rim();//打开总中断
  42. }

  43. /*断言函数:它的作用是在编程的过程中为程序提供参数检查*/
  44. #ifdef USE_FULL_ASSERT
  45. ……………………

  46. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


【众拳】剑齿虎STM8开发板的实验代码下载:
众拳STM8的CAN总线标识符过滤实验程序.zip (1.65 MB, 下载次数: 24)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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