给你提供一些思路

1、sja1000初始化

2、发送子程序

3、中断方式接收

下面是一些程序段

你参考下(已用于产品)

/**********SJA1000初始化***********//

void Init_SJA1000(void)

{

uchar state;

uchar ACRR[4]={0XAA,0XFF,0X22,0X11};// 接收代码寄存器

uchar AMRR[4]={0xff,0xff,0xff,0xff};// 接收屏蔽寄存器

//uchar AMRR[4]={0x00,0x00,0xff,0xff};// 接收屏蔽寄存器

do// 使用do--while语句确保进入复位模式

{

MODR = 0x09; // 设置MOD.0=1--进入复位模式,以便设置相应的寄存器

state = MODR;

}

while( !(state & 0x01) );

// 对SJA1000部分寄存器进行初始化设置

CDR = 0x88; // CDR为时钟分频器,CDR.3=1--时钟关闭, CDR.7=0---basic CAN, CDR.7=1---Peli CAN

BTR0 = 0x04;//0x31; // 总线定时寄存器0 ;总线波特率设定

BTR1 = 0x1c;//0x1c; // 总线定时寄存器1 ;总线波特率设定

IER = 0x01; // IER.0=1--接收中断使能; IER.1=0--关闭发送中断使能

OCR = 0xaa; // 配置输出控制寄存器

CMR = 0x04; // 释放接收缓冲器

ACR0 = ACRR[0];// 初始化接收代码寄存器

ACR1 = ACRR[1];

ACR2 = ACRR[2];

ACR3 = ACRR[3];

AMR0 = AMRR[0];// 初始化接收屏蔽寄存器

AMR1 = AMRR[1];

AMR2 = AMRR[2];

AMR3 = AMRR[3];

do// 使用do--while语句确保退出复位模式

{

MODR = 0x08; //MOD.3=0--双滤波器模式

state = MODR;

}

while( state & 0x01 );

}//

//**********CAN发送数据到CAN-Bus***********//

void CAN_TXD(void)

{

uchar state;

//初始化标示码头信息

TX_buffer[0] = 0x88; //.7=0--扩展帧;.6=0--数据帧; .0-.3=100--数据长度为8字节

// TX_buffer[1] = 0xFF; //本帧信息的ID

//TX_buffer[2] = 0xFF;

TX_buffer[3] = 0xFF;

TX_buffer[4] = 0xFF;

do //查询SJA1000是否处于接收状态,当SJA1000不处于接收状态时才可继续执行

{

state = SR; //SR为SJA1000的状态寄存器

}

while( state & 0x10 ); //SR.4=1 正在接收,等待

do //查询SJA1000是否处于发送完毕状态

{

state = SR;

}

while(!(state & 0x08)); //SR.3=0,发送请求未处理完,等待直到SR.3=1

do //查询发送缓冲器状态

{

state = SR;

}

while(!(state & 0x04)); //SR.2=0,发送缓冲器被锁。等待直到SR.2=1

//将待发送的一帧数据信息存入SJA1000的相应寄存器中

TBSR0 = TX_buffer[0];

TBSR1 = TX_buffer[1];

TBSR2 = TX_buffer[2];

TBSR3 = TX_buffer[3];

TBSR4 = TX_buffer[4];

TBSR5 = TX_buffer[5];

TBSR6 = TX_buffer[6];

TBSR7 = TX_buffer[7];

TBSR8 = TX_buffer[8];

TBSR9 = TX_buffer[9];

TBSR10 = TX_buffer[10];

TBSR11 = TX_buffer[11];

TBSR12 = TX_buffer[12];

CMR = 0x04; //置位发

sja1000 中断_SJA1000程序相关推荐

  1. sja1000 中断_SJA1000的错误中断处理

    SJA1000的错误处理好似还是比较复杂的的啦,下面是我自己的一些理解,有不对之处还请各位大虾多多指点啊! SJA1000的错误有: 仲裁丢失: 数据溢出: 总线错误: 错误状态有: 错误主动(Err ...

  2. sja1000 中断_SJA1000中断接收为什么接收中断不能被触发,不能进入中断接收子函数?看资料,里面说会自动触发中断的。...

    1.sja1000的int引脚你先不连接   sja1000通电后 (纯粹通电不运行程序) 你测试一下int 是否为高? 如果是高正常. 2.sja1000的int引脚你先不连接   运行程序    ...

  3. linux 中断 应用程序,Linux中断编程

    本文转载自[微信公众号:机械猿,ID:on_ourway]经微信公众号授权转载,如需转载与原文作者联系 基本概念 中断是指CPU在执行程序时,由于内外部事件或由程序预先安排的事件,导致CPU 暂停当前 ...

  4. stc 串口收发 c语言,STC12C5A60S2 串口中断接收程序

    原标题:STC12C5A60S2 串口中断接收程序 #define UART0_BUF_LEN 32 int UART1_Recv_count; //接收计数 bit UART1_Overflow_F ...

  5. sja1000 中断_CAN总线 SJA1000中断

    背景: 最近一直在使用C8051F340 + SJA1000来实现CAN通信,就SJA1000部分做个记录. 正文: 整个系统结构拓扑图如下: 两路CAN,C8051F340作为CPU,处理CAN与U ...

  6. sja1000 中断_[转载]SJA1000的错误中断处理

    SJA1000的错误处理好似还是比较复杂的的啦,下面是我自己的一些理解,有不对之处还请各位大虾多多指点啊! SJA1000的错误有: 仲裁丢失: 数据溢出: 总线错误: 错误状态有: 错误主动(Err ...

  7. sja1000 中断_关于单片机+SJA1000接收中断C语言编程的问题

    采用at89S52+sja1000的模块.一个节点发送,一个节点接收.可以确定发送节点能正确工作.但是接受节点无法接收到报文,接受节点采用中断0,程序如下voidCAN_RXD(void)interr ...

  8. 通讯中断 pc_S7程序RFID 与PC连接区别FB 65/UDT65

    同样是使用使用FB65但RFID与PC的连接DB用法有一定的区别: 首先说一下什么是FB65: 通过TCP和ISO on TCP使用 两个通信伙伴都调用FB 65 "TCON"来设 ...

  9. sja1000 中断_SJA1000PeliCAN模式下自收发问题

    /*************************************************************************MCU:ATmega16MCLK:内部震荡8M熔丝位 ...

最新文章

  1. 你在付费听《说好不哭》,我在这里免费看直播还送书 | CSDN新书发布会
  2. ISAPI_Rewrite规则
  3. 【转】2.3【MySQL】运行原理(三)InnoDB 逻辑存储结构
  4. C++基础1 数据类型 常量
  5. java windows编程,以编程方式控制Windows媒体播放器,最好是从Java
  6. python纳入小学课本了吗_Python语言为什么被推荐纳入高考和小学教材
  7. Fragment学习笔记
  8. [SOJ #538]好数 [CC]FAVNUM(2019-8-6考试)
  9. 英特尔处理器曝出重大安全漏洞,迫使 Linux 和 Windows 更新设计
  10. @ Before,@ BeforeClass,@ BeforeEach和@BeforeAll之间的区别
  11. 签到界面加图片java_签到功能实现,没有你想的那么复杂(二)
  12. python二维数据读取对齐_[Python ] Python 多维数组转换的维度对齐问题
  13. 优质前端掘金小册推荐及优惠购买链接
  14. python3.7源码剖析——python对象
  15. 面试阿里,看这一篇就够了!
  16. 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)
  17. [渝粤教育] 宁波财经学院 金融工程学 参考 资料
  18. flask_web 蓝本基模板继承问题
  19. 手机上怎么在线生成gif?1分钟教你手机图片合成gif
  20. KSO-2022年2月份PYPL编程语言排行榜

热门文章

  1. python --003--流程控制while,for
  2. 源码阅读技巧总结-Android
  3. 小明种苹果(100分)
  4. 人脸识别用哪种python库_python的face_recognition人脸识别库的使用
  5. 让后台Stopped的进程继续运行
  6. 办公室面积增大,实现wifi覆盖的解决方案
  7. Codeforces #308 C. Vanya and Scales
  8. 使用循环语句打印菱形梅花阵
  9. Flutter利用第三方插件Screen调节屏幕亮度
  10. DSPE-PEG-DBCO 磷脂-聚乙二醇-二苯并环辛炔 一种线性杂双官能聚乙二醇化试剂