⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mscan.c

📁 freescale s12系列单片机驱动集。作者自己编写
💻 C
字号:
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dt256.h>     /* derivative information */
#include "SCI.h"
#include "MC9S12.h"
#include "MSCAN.h"


extern unsigned char SCI_Recieve_Data[];


#if MSCAN_EN
//--------------------------------------------------------

#if CAN0_EN //自己定义要把系统自己预定义的给去掉,否则要出现冲突,但在908中没有,不知道为什么
 // volatile CanBufFrame Can0RxBuf @(REG_BASE + 0x00000160);
 // volatile CanBufFrame Can0TxBuf @(REG_BASE + 0x00000170);
  CanBufFrame	 Can0RxBuf;
  unsigned char Can_Rec_Int_Flg = 0;
  unsigned int i0 = 0;//8字节一帧,此次传的帧次序
#endif//CAN0_EN

void MSCAN_Init(void){//还没有考虑到睡眠,停止等应用,在网关时要用。
    //SCI_Transmit(0x55);
  #if CAN0_EN
    CAN0CTL1_CANE = 1;//CAN0使能
     
    CAN0CTL0_INITRQ = 1;//进入初始化,即软复位模式。
    while(!CAN0CTL1_INITAK);//软复位信号的握手信号。
    
    CAN0CTL1_LOOPB = 0;//退出自检测模式
    CAN0CTL1_LISTEN = 0;//退出监听模式
    CAN0CTL1_CLKSRC = 0;//时钟源来自晶振,而不是内部时钟
    
    CAN0IDAC_IDAM0 = 1;//4个16位过滤器模式
    CAN0IDAC_IDAM1 = 0;//      
    /****************************************************/
    //四个16位过滤器可以提供4个13位标准帧比较情况,收到一个标准帧只要满足其中的1个就命中它。
    //
    //扩展帧属于CAN2.0B,一帧要29位,需要两个过滤器结合。暂不考虑。
    /******************************************************/
    //以下要虚拟4个ID:01  02   04   08  方便调试
    CAN0IDAR0 = 0x00; //0 0 0 (0 0 0 0) (0   |   0 0 1) 0 0 0 0 0  
    CAN0IDAR1 = 0x20; //
    
    CAN0IDAR2 = 0x00; //0 0 0 (0 0 0 0) (0   |   0 1 0) 0 0 0 0 0  
    CAN0IDAR3 = 0x40; //
    
    CAN0IDAR4 = 0x00; //0 0 0 (0 0 0 0) (0   |   1 0 0) 0 0 0 0 0  
    CAN0IDAR5 = 0x80; //
    
    CAN0IDAR6 = 0x01; //0 0 0 (0 0 0 0) (1   |   0 0 0) 0 0 0 0 0  
    CAN0IDAR7 = 0x00; //
  
    CAN0IDMR0 = 0x00;//13位ID全部匹配接收
    CAN0IDMR1 = 0x07;
    
    CAN0IDMR2 = 0x00;//13位ID全部匹配接收
    CAN0IDMR3 = 0x07;
    
    CAN0IDMR4 = 0x00;//13位ID全部匹配接收
    CAN0IDMR5 = 0x07;
    
    CAN0IDMR6 = 0x00;//13位ID全部匹配接收
    CAN0IDMR7 = 0x07;
    
    /**********************************************************/
    //关于时钟源和波特率的寄存器设置说明
    //若用BDM调试时

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -