• 大小: 320KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-24
  • 语言: 其他
  • 标签: MC9S12例程  

资源简介

基于飞思卡尔单片机MC9S12G128的CAN通信测试 很好用

资源截图

代码片段和文件信息

#include“file.h“

mscan_R_msg RxMsg;

/***CAN初始化*******************************************************/
void CAN_Init(void){

     CANCTL0_INITRQ = 1;       //启动CAN初始化
     while(!CANCTL1_INITAK)    //等待初始化响应
          ;
          
     CANCTL1 = 0xC0;           //CAN工作模式的设置 选择24M总线时钟
     
     CANBTR0_SJW = 3;          //同步跳跃脉宽设置 4Tq
     CANBTR0_BRP = 2;          //预分频数设置为3
    
     CANBTR1_SAMP = 0;         //采样数为1
     CANBTR1_TSEG_20 = 3;
     CANBTR1_TSEG_10 = 10;     //相位缓冲段SEG1、SEG2长度设置 411个Tq
     
     CANIDAC_IDAM = 1;         //选择消息的接受模式                                                  
     
     CANIDAR0 = 0x00;CANIDMR0 = 0xFF;
     CANIDAR1 = 0x00;CANIDMR1 = 0xFF;
     CANIDAR2 = 0x00;CANIDMR2 = 0xFF;
     CANIDAR3 = 0x00;CANIDMR3 = 0xFF;
     CANIDAR4 = 0x00;CANIDMR4 = 0xFF;
     CANIDAR5 = 0x00;CANIDMR5 = 0xFF;
     CANIDAR6 = 0x00;CANIDMR6 = 0xFF;
     CANIDAR7 = 0x00;CANIDMR7 = 0xFF;     //接受所有的地址的消息  

     CANCTL0_INITRQ = 0;       //关闭CAN初始化
     while(CANCTL1_INITAK)     //等待关闭初始化响应
          ;    
            
//     while(!CANCTL0_SYNCH)     //等待CAN同步(连到总线是需要判断同步)
//          ;

     CANRFLG_RXF = 1;          //清空消息接受缓冲器
     CANRIER_RXFIE = 1;        //使能接收消息中断
}

/***CAN接受函数*****************************************************/
void CAN_receive(void){        //接受8个数

     byte i;
     
     RxMsg.Rx_ID = (CANRXIDR0<<8)+CANRXIDR1;
     RxMsg.Rx_Length = CANRXDLR;
     
     for(i=0;i     
        RxMsg.Rx_Data[i] = *(&(CANRXDSR0) + i);
     }
}

/***CAN发送函数*****************************************************/
void CAN_send(mscan_T_msg msg){    //发送8个数

     byte Txbufferi;
     
       Txbuffer = 0;
       while(!CANTFLG)             //等待发送缓冲器可用
             ;
       CANTBSEL = CANTFLG;
       Txbuffer = CANTBSEL;        //选择可用的buffer     
     
       CANTXIDR0 = (byte) (msg.Tx_ID>>8);
       CANTXIDR1 = (byte) msg.Tx_ID;
       CANTXDLR = msg.Tx_Length;
       CANTXTBPR = msg.Tx_Prio;        
       for(i=0;i          *(&CANTXDSR0 + i) = msg.Tx_Data[i];                
        
       CANTFLG = Txbuffer;
}


/***中断函数********************************************************/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt VectorNumber_Vcanrx CAN_Rx_interrupt(void){      //接受中断函数

     CAN_receive();
     CANRFLG_RXF = 1;
}

/*void interrupt VectorNumber_Vcantx CAN_Tx_interrupt(void){      //发送中断函数


}*/















































 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-01-08 20:28  CAN测试-发送接收数据\
     目录           0  2012-01-08 20:25  CAN测试-发送接收数据\CAN-------------_Data\
     文件        4329  2012-01-08 20:29  CAN测试-发送接收数据\CAN-------------_Data\CWSettingsWindows.stg
     目录           0  2012-01-08 20:25  CAN测试-发送接收数据\CAN-------------_Data\Standard\
     目录           0  2012-01-08 20:25  CAN测试-发送接收数据\CAN-------------_Data\Standard\objectCode\
     文件        5365  2012-01-06 17:24  CAN测试-发送接收数据\CAN-------------_Data\Standard\objectCode\Start12.c.o
     文件        9327  2012-01-08 20:27  CAN测试-发送接收数据\CAN-------------_Data\Standard\objectCode\Timer.c.o
     文件       19698  2012-01-08 20:28  CAN测试-发送接收数据\CAN-------------_Data\Standard\objectCode\can.c.o
     文件        7497  2012-01-08 20:26  CAN测试-发送接收数据\CAN-------------_Data\Standard\objectCode\clock.c.o
     文件        9044  2012-01-06 17:24  CAN测试-发送接收数据\CAN-------------_Data\Standard\objectCode\datapage.c.o
     文件        4417  2012-01-06 17:24  CAN测试-发送接收数据\CAN-------------_Data\Standard\objectCode\main.c.o
     文件      159817  2012-01-06 17:24  CAN测试-发送接收数据\CAN-------------_Data\Standard\objectCode\mc9s12g128.c.o
     文件      537094  2012-01-08 20:28  CAN测试-发送接收数据\CAN-------------_Data\Standard\TargetDataWindows.tdt
     文件       98584  2011-12-28 08:04  CAN测试-发送接收数据\CAN测试-发送数据.mcp
     文件         855  2011-10-29 10:30  CAN测试-发送接收数据\C_Layout.hwl
     文件         161  2004-06-15 15:46  CAN测试-发送接收数据\Default.mem
     文件        2330  2011-12-30 13:08  CAN测试-发送接收数据\P&E_Multilink_USB.ini
     目录           0  2012-01-08 20:25  CAN测试-发送接收数据\Sources\
     文件       23855  2011-10-29 10:30  CAN测试-发送接收数据\Sources\Start12.c
     文件         951  2012-01-08 20:27  CAN测试-发送接收数据\Sources\Timer.c
     文件        2777  2012-01-08 20:28  CAN测试-发送接收数据\Sources\can.c
     文件         644  2012-01-08 20:26  CAN测试-发送接收数据\Sources\clock.c
     文件       69907  2011-10-29 10:30  CAN测试-发送接收数据\Sources\datapage.c
     文件         260  2011-10-29 10:30  CAN测试-发送接收数据\Sources\derivative.h
     文件        1031  2011-11-01 13:51  CAN测试-发送接收数据\Sources\file.h
     文件         333  2011-11-01 13:51  CAN测试-发送接收数据\Sources\main.c
     目录           0  2012-01-08 20:25  CAN测试-发送接收数据\bin\
     文件      176100  2012-01-08 20:28  CAN测试-发送接收数据\bin\Project.abs
     文件        1362  2012-01-08 20:28  CAN测试-发送接收数据\bin\Project.abs.phy
     文件        1352  2012-01-08 20:28  CAN测试-发送接收数据\bin\Project.abs.s19
     文件       94093  2012-01-08 20:28  CAN测试-发送接收数据\bin\Project.map
............此处省略11个文件信息

评论

共有 条评论

相关资源