资源简介
基于飞思卡尔单片机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\ob
文件 5365 2012-01-06 17:24 CAN测试-发送接收数据\CAN-------------_Data\Standard\ob
文件 9327 2012-01-08 20:27 CAN测试-发送接收数据\CAN-------------_Data\Standard\ob
文件 19698 2012-01-08 20:28 CAN测试-发送接收数据\CAN-------------_Data\Standard\ob
文件 7497 2012-01-08 20:26 CAN测试-发送接收数据\CAN-------------_Data\Standard\ob
文件 9044 2012-01-06 17:24 CAN测试-发送接收数据\CAN-------------_Data\Standard\ob
文件 4417 2012-01-06 17:24 CAN测试-发送接收数据\CAN-------------_Data\Standard\ob
文件 159817 2012-01-06 17:24 CAN测试-发送接收数据\CAN-------------_Data\Standard\ob
文件 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_Multili
目录 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个文件信息
评论
共有 条评论