找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3992|回復(fù): 0
收起左側(cè)

眾拳STM8的CAN總線標(biāo)識(shí)符過濾實(shí)驗(yàn)附代碼

[復(fù)制鏈接]
ID:170279 發(fā)表于 2017-11-30 10:23 | 顯示全部樓層 |閱讀模式
TB2ZUvHqVXXXXc2XpXXXXXXXXXX_!!85243700.jpg
實(shí)驗(yàn)?zāi)康模?/strong>
通過對(duì)CAN過濾器的設(shè)置,屏蔽總線上其他無用的報(bào)文,只接收自己需要的報(bào)文。
標(biāo)識(shí)符過濾模式
● 可變的位寬
  每個(gè)過濾器組的位寬都可以獨(dú)立配置,以滿足應(yīng)用程序的不同需求。根據(jù)位寬的不同,每個(gè)過濾器組可提供:
  ─  1 個(gè) 32 位過濾器,包括:STDID[10:0]/EXTID[28:18]、IDE、EXID[17:0]和 RTR 位;
  ─  2 個(gè) 16 位過濾器,包括:STDID[10:0]/EXTID[28:18]、IDE 和 RTR 位;
  ─  4 個(gè) 8 位過濾器,包括:STDID[10:3]/EXTID[28:21],其他位可以不用關(guān)心;
  ─  1 個(gè) 16 位過濾器和 2 個(gè) 8 位過濾器,具體的過濾器描述如上16位和8位過濾器描述。

FMLx位定義該寄存器組的低半組(CAN_FxR1-4寄存器)的模式,
FMHx位定義該寄存器組的高半組(CAN_FxR5-8寄存器)的模式,
32位過濾器組設(shè)

1.png



FMHx=0 高位寄存器工作在屏蔽位模式。          FMLx =0 低位寄存器工作在屏蔽位模式。
FMHx=1 高位寄存器工作在標(biāo)識(shí)符列表模式。   FMLx =1 低位寄存器工作在標(biāo)識(shí)符列表模式。


FMLx和FMHx位必須擁有相同的值以確保4個(gè)屏蔽位/標(biāo)識(shí)符過濾器位處于相同的模式。
16位過濾器組設(shè)置
2.png

FMHx=0 高位寄存器工作在屏蔽位模式。          FMLx =0 低位寄存器工作在屏蔽位模式。
FMHx=1 高位寄存器工作在標(biāo)識(shí)符列表模式。   FMLx =1 低位寄存器工作在標(biāo)識(shí)符列表模式。
16/8位過濾器組設(shè)置
3.png

FMHx=0 高位寄存器工作在屏蔽位模式。          FMLx =0 低位寄存器工作在屏蔽位模式。
FMHx=1 高位寄存器工作在標(biāo)識(shí)符列表模式。   FMLx =1 低位寄存器工作在標(biāo)識(shí)符列表模式。

8位過濾器組設(shè)置
4.png

FMHx=0 高位寄存器工作在屏蔽位模式。          FMLx =0 低位寄存器工作在屏蔽位模式。
FMHx=1 高位寄存器工作在標(biāo)識(shí)符列表模式。   FMLx =1 低位寄存器工作在標(biāo)識(shí)符列表模式。


stm8單片機(jī)源程序如下:
  1. /***********************************************************************
  2. *   說    明: CAN轉(zhuǎn)發(fā)數(shù)據(jù)實(shí)驗(yàn)
  3. *   開發(fā)平臺(tái): 劍齒虎STM8開發(fā)板        
  4. *   作    者: 劉洋 張殿東
  5. *   版    本: V1.0
  6. *   IAR開發(fā)環(huán)境    版本 V2.20.1
  7. *   ST庫函數(shù)       版本 V2.2.0
  8. ***********************************************************************/

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

  10. void BSP_Configuration(void);//硬件初始化函數(shù)聲明

  11. /***********************************************************************
  12. *   函 數(shù) 名: main
  13. *   功能說明: c程序入口
  14. *   形    參:無
  15. *   返 回 值: 錯(cuò)誤代碼(無需處理)
  16. ***********************************************************************/
  17. int main(void)
  18. {
  19.   BSP_Configuration();//硬件驅(qū)動(dòng)初始化函數(shù)
  20.   
  21.   while(1)//主程序循環(huán),反復(fù)執(zhí)行循環(huán)體里的語句
  22.   {
  23.     //LED_Demo1();//在主程序中調(diào)用LED_Demo1()函數(shù)
  24.     //LED_Demo2();//在主程序中調(diào)用LED_Demo2()函數(shù)
  25.     //UART1_Printf_Demo();
  26.     //CAN_SendData_Demo2();
  27.   }
  28. }
  29. /***********************************************************************
  30. *   函 數(shù) 名: BSP_Configuration
  31. *   功能說明: 初始化硬件設(shè)備。只需要調(diào)用一次。該函數(shù)配置CPU寄存器和外設(shè)的寄存器并初始化一些全局變量。
  32. *   形    參:無
  33. *   返 回 值: 無
  34. ***********************************************************************/
  35. void BSP_Configuration(void)
  36. {  
  37.   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//時(shí)鐘速度為內(nèi)部16M,1分頻,
  38.   UART1_Congfiguration();//調(diào)用RS232串口1初始化函數(shù)
  39.   LED_Init();//調(diào)用LED初始化函數(shù)
  40.   CAN_Configuration();//調(diào)用CAN初始化函數(shù)
  41.   rim();//打開總中斷
  42. }

  43. /*斷言函數(shù):它的作用是在編程的過程中為程序提供參數(shù)檢查*/
  44. #ifdef USE_FULL_ASSERT
  45. ……………………

  46. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼


【眾拳】劍齒虎STM8開發(fā)板的實(shí)驗(yàn)代碼下載:
眾拳STM8的CAN總線標(biāo)識(shí)符過濾實(shí)驗(yàn)程序.zip (1.65 MB, 下載次數(shù): 24)

眾拳STM8的CAN總線數(shù)據(jù)轉(zhuǎn)發(fā)實(shí)驗(yàn)源程序與詳細(xì)教程  請(qǐng)查下面鏈接查看
http://www.torrancerestoration.com/bbs/dpj-99891-1.html


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表