查看: 8655|回复: 17

[其他] 孙同景老师 的CAN通信例子

[复制链接]

该用户从未签到

19

主题

35

帖子

0

新手上路

Rank: 1

积分
186
最后登录
1970-1-1
发表于 2011-3-11 23:47:30 | 显示全部楼层 |阅读模式
/*                           来自孙同景 老师教材
使用说明:
本例演示了如何利用MSCAN的接收中断接收总线上的数据,基本原理如下:
================================================================
CAN4发送数据,CAN0接收数据。
================================================================
1、在各模块初始化时,把CAN0的接收中断打开,以便接收数据时产生中断;/
2、编写相应的中断服务程序并设置好中断向量;
3、在中断服务程序中根据客户需要决定是否存储当前的数据。
*/
#include       /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#pragma LINK_INFO DERIVATIVE "MC9S12XEP100"
void delay()
{
  //long j=240000;       //1s
  //long j=120000;       //0.5s
  long j=60000;       //0.25s
  while(j--);
}
void CAN_init() {
 /*进入初始化模式*/
  CAN0CTL0_INITRQ=1;    //初始化模式请求位  1=初始化模式;0=正常模式
  CAN4CTL0_INITRQ=1;
 
  while((CAN0CTL1_INITAK==0)&&(CAN4CTL1_INITAK==0)); //初始化模式确认  1=确认进入初始化模式;0=未进入初始化模式
  /*等待应答信号*/
  CAN0IDAC=0x20;
  CAN0IDMR0=0xff;
  CAN0IDMR1=0xff;
  CAN0IDMR2=0xff;
  CAN0IDMR3=0xff;        
  CAN0IDMR4=0xff;
  CAN0IDMR5=0xff;
  CAN0IDMR6=0xff;
  CAN0IDMR7=0xff;
  CAN0BTR0=0x47;  //设置波特率  总线:16M   波特率:250K
  CAN0BTR1=0x14;
  CAN0CTL1=0x80;
  CAN0CTL0_INITRQ=0;
 
  CAN4IDAC=0x20;
  CAN4IDMR0=0xff;
  CAN4IDMR1=0xff;
  CAN4IDMR2=0xff;
  CAN4IDMR3=0xff;
  CAN4IDMR4=0xff;
  CAN4IDMR5=0xff;
  CAN4IDMR6=0xff;
  CAN4IDMR7=0xff;
  CAN4BTR0=0x47;
  CAN4BTR1=0x14;
  CAN4CTL1=0x80;
  CAN4CTL0_INITRQ=0;
 
  while((CAN0CTL1_INITAK==1)&&(CAN4CTL1_INITAK==1));
  /*等待应答信号*/
  CAN0RIER_RXFIE=1;
}
void CAN4_TX() {
  uchar i;
  i=CAN4TFLG;/*选择缓冲区*/
  CAN4TBSEL=i;             
  i=CAN4TBSEL;
  //========CAN ID 号    ==================
  CAN4TXIDR0=0xC7;
  CAN4TXIDR1=0xFA;
  CAN4TXIDR2=0x06;
  CAN4TXIDR3=0x94;
  //========CAN 数据DATA寄存器 ============ 
  CAN4TXDSR0=0x01;
  CAN4TXDSR1=0x02;
  CAN4TXDSR2=0x03;
  CAN4TXDSR3=0x04;
  CAN4TXDSR4=0x05;
  CAN4TXDSR5=0x06;
  CAN4TXDSR6=0x07;
  CAN4TXDSR7=0x08;
  CAN4TFLG=i;
}
 
 
void main(void) {
  /* put your own code here */
 

 EnableInterrupts;
  DDRB=0xFF;
  CAN_init();
 
  for(;;) {
    CAN4_TX();
    delay();
  }
}
#pragma CODE_SEG NON_BANKED
void interrupt 38 CAN0_RX(void) {
  CAN0CTL0_RXFRM=1; /*清除接收标志*/
  PORTB=CAN0RXIDR0;
  PORTB=CAN0RXIDR1;
  PORTB=CAN0RXIDR2;
  PORTB=CAN0RXIDR3;
 
  PORTB=CAN0RXDSR0;
  delay();
  PORTB=CAN0RXDSR1;
  delay();
  PORTB=CAN0RXDSR2;
  delay();
  PORTB=CAN0RXDSR3;
  delay();
  PORTB=CAN0RXDSR4;
  delay();
  PORTB=CAN0RXDSR5;
  delay();
  PORTB=CAN0RXDSR6;
  delay();
  PORTB=CAN0RXDSR7;
  CAN0RFLG=0x01;/*清除CAN0接收中断标志位*/
 
 
}
 
 
挖宝活动: fsl_k60.jpg
我知道答案 目前已有16人回答

main.rar

1.2 KB, 下载次数: 219, 下载积分: 威望 1

回复

使用道具 举报

该用户从未签到

65

主题

204

帖子

0

中级会员

Rank: 3Rank: 3

积分
270
最后登录
1970-1-1
发表于 2011-3-12 20:37:53 | 显示全部楼层

RE:孙同景老师 的CAN通信例子

thank you ,参考下!

该用户从未签到

0

主题

32

帖子

0

新手上路

Rank: 1

积分
45
最后登录
1970-1-1
发表于 2011-4-4 14:40:09 | 显示全部楼层

回复:孙同景老师 的CAN通信例子

学习了,谢谢分享

该用户从未签到

0

主题

2

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
发表于 2011-5-5 16:00:53 | 显示全部楼层

RE:孙同景老师 的CAN通信例子

学习了,谢谢分享

该用户从未签到

0

主题

22

帖子

0

新手上路

Rank: 1

积分
12
最后登录
1970-1-1
发表于 2011-5-5 22:31:33 | 显示全部楼层

回复:孙同景老师 的CAN通信例子

无难度~~~~~~~~~~~~~~~~~

该用户从未签到

0

主题

33

帖子

0

新手上路

Rank: 1

积分
43
最后登录
1970-1-1
发表于 2011-6-16 15:15:11 | 显示全部楼层

RE:孙同景老师 的CAN通信例子

非常感谢孙老师的例程,非常感谢hikuaidian 的发表,看了之后顿悟很多,谢谢。

该用户从未签到

0

主题

12

帖子

0

新手上路

Rank: 1

积分
17
最后登录
1970-1-1
发表于 2011-6-22 08:52:58 | 显示全部楼层

RE:孙同景老师 的CAN通信例子

顶一个。。。多谢分享。。。

该用户从未签到

0

主题

10

帖子

0

新手上路

Rank: 1

积分
1
最后登录
1970-1-1
发表于 2011-6-23 16:10:01 | 显示全部楼层

RE:孙同景老师 的CAN通信例子

谢谢lz!!!!!!!!!!!!!!

该用户从未签到

0

主题

25

帖子

0

新手上路

Rank: 1

积分
2
最后登录
1970-1-1
发表于 2011-6-23 22:53:11 | 显示全部楼层

RE:孙同景老师 的CAN通信例子

谢谢分享!我是新手!

该用户从未签到

0

主题

13

帖子

0

新手上路

Rank: 1

积分
16
最后登录
1970-1-1
发表于 2011-7-9 09:59:01 | 显示全部楼层

RE:孙同景老师 的CAN通信例子

RE:孙同景老师 的CAN通信例子
  新手上路,多谢分享!
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 22:55 , Processed in 0.188587 second(s), 31 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表