求助 C8051F500单片机CAN的初始化问题

2020-01-23 14:48发布

本人以前未接触过CAN,现要用的时候看了一堆英文资料也没大看明白。
   
单片机选择的是C8051F500 ,C8051F500单片机内嵌有BOSCH的CAN控制器,现请教怎么初始化CAN,
特别是屏蔽寄存器和滤波寄存器具体怎么配置去实现报文滤波。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
cuimeng
1楼-- · 2020-01-23 18:46
为什么 没人回我贴啊 难道没人用过博士CAN控制器做过东西? 不支于啊,C8051F040就内嵌的博士CAN控制器啊。
虽然单片机是比较新款的 但这报文滤波和单片机没多大关系啊!!!
cookie
2楼-- · 2020-01-23 20:26
回复【1楼】cuimeng
-----------------------------------------------------------------------

我的是用的sja1000的模块的。好像是屏蔽寄存器里是可以接受的ID号,滤波寄存器设置他的有效位
cuimeng
3楼-- · 2020-01-23 21:11
 精彩回答 2  元偷偷看……
linghu2
4楼-- · 2020-01-23 22:34
LZ看来已经清楚了,直接Msk28—18=1就可以了,不行再Msk28—18=0呗,...反正就四种组合
tracy2223
5楼-- · 2020-01-24 00:22
高手分享一下?500的头文件和初始化程序
l310091170
6楼-- · 2020-01-24 01:04
回复【5楼】tracy2223  

我是新手,你看看下面的程序,希望你会受到启发。
-----------------------------------------------------------------------
// F500_Ports_SwitchLED.c


SBIT (LED, SFR_P1, 3);                 // LED == 1 means ON
SBIT (SW1, SFR_P1, 4);                 // SW1 == 0 means switch depressed



void OSCILLATOR_Init (void);
void PORT_Init (void);



void main (void)
{
   SFRPAGE = ACTIVE_PAGE;              // Set SFR Page for PCA0MD

   PCA0MD &= ~0x40;                    // Disable the watchdog timer

   PORT_Init ();                       // Initialize Port I/O
   OSCILLATOR_Init ();                 // Initialize Oscillator

   while (1)
   {
      if (SW1 == 0)                    // If switch depressed
      {
         LED = 1;                      // Turn on LED
      }
      else
      {
         LED = 0;                      // Else, turn it off
      }
   }                                   // end of while(1)
}                                      // end of main()

//-----------------------------------------------------------------------------
// Initialization Subroutines
//-----------------------------------------------------------------------------



void OSCILLATOR_Init (void)
{
   U8 SFRPAGE_save = SFRPAGE;
   SFRPAGE = CONFIG_PAGE;

   OSCICN = 0x84;                      // Configure internal oscillator for
                                       // 24 MHz / 8

   SFRPAGE = ACTIVE_PAGE;

   RSTSRC = 0x04;                      // Enable missing clock detector

   SFRPAGE = SFRPAGE_save;
}


void PORT_Init (void)
{
   U8 SFRPAGE_save = SFRPAGE;
   SFRPAGE = CONFIG_PAGE;

   P1MDIN |= 0x08;                     // P1.3 is digital
   P1M

一周热门 更多>