当前位置:文档之家› SJA1000 独立的 CAN 控制器应用指南

SJA1000 独立的 CAN 控制器应用指南

SJA1000 独立的 CAN 控制器应用指南
SJA1000 独立的 CAN 控制器应用指南

sja1000 can 驱动程序演示实验

SJA1000 CAN驱动程序演示实验 一.实验目的 本驱动程序展示了如何在Small RTOS中编写SJA1000 的驱动程序。通过调用CAN 程序库SJA1000_PEI.LIB 的基本函数,实现实验板上CAN 节点的初始化以及CAN 节点数据 收发测试。 二.实验设备及器件 PC 机一台 DP-51PROC 单片机综合仿真实验仪一台 CAN PARK 模块一台 CAN 连接线一根 三.实验步骤 1、将CAN-bus PARK 插入到A6 区中,用导线连接A6 区的P1_IO2 到A2 区的P1 0, 连接A6 区的P1_CS1 到A2 区的A15。 2、使用导线把A2 区的P16 和P17 分别于D5 区的SCL 和SDA 相连。使用导线把D 5 区的/RST 与VCC 相连。 3、由于本程序使用中断方式响应SJA1000 中断,故将A5 区的P1_INT 接到A2 区的INT0。 4、利用CAN 连接线将两台已经安装了CAN-Bus 模块的DP-51PROC 连接起来,以组成简单的CAN 网络实现CAN 的接收和发送。 5、本驱动程序已经将输出文件路径设置为“E:\Temp”,用户可自行更改输出文件路径。将路径“E:\Temp”中的CAN. hex 文件下载到两台DP-51PROC 中运行。 四.实验参考程序主要部分 /****************************************************** *描述:独立的CAN 控制器SJA1000PeliCAN 在small rtos 中的应用示例 *文件名: PELIRTOS.c *应用语言: KEIL C51 *应用系统: small rtos *版本: V1.0

CAN总线在多机通信中的应用

CAN总线在多机通信中的应用 随着微处理器的发展,利用微处理器对工业生产过程进行控制已成为趋势。在工业控制过程中,由于大量数据信息的共享和传输,传统的串行通信模式已不能满足要求。在工业控制领域中,需要一种抗干扰性强、可靠性高、传输速度快和传输距离长的总线结构。CAN总线技术不仅满足上述要求,而且还能实现多点间的信息传递。本文使用PCI9810-cAN适配卡上的CAN总线组成局域网络,实现多微处理器间的信息传递和PC机对多处理器的检控、通信。 1 CAN总线简介 CAN(Controller Area Networks)总线,最早是由德国Bosch公司开发用于局域网控制的总线技术。CAN总线采用传统的双线串行通信方式,具有诊断能力,抗电磁干扰,其最陕传输速率可达1 Mb·s-1,最长通信距离可达10 km(此时的传输速率大约为40 kb·s-1)。在CAN总线组成的局域网络中,通信节点之间不采用主从方式,而是具有总线访问优先权,通信方式灵活,可实现点对点,一点对多点及广播方式传输数据。 2 系统通信模块的硬件设计 CAN总线是由PCI9810-CAN适配卡提供,本文主要完成通信节点的设计。通信节点不仅可以和PC机进行信息交换,还可独立与其他各节点通信。微处理器在需要和主机或其它节点通信时,其通过P0口向SJA1000T的寄存器发送信息,再由PCA82C250把信息传递到CAN总线上。主机和其他通信节点判断接收报文的标识符,将对接收到的信息作相应的处理,从而实现通信功能,。 在设计过程中,为了满足多微处理器间通信的实时性和可靠性要求,结合CAN控制器的特点,对图1作简单介绍: (1)收发器PCA82C250的引脚8(Rs)有3种工作方式:高速,斜率控制和待机。斜率控制方式具有抗射频干扰的功能,所以采用47 kΩ的电阻连接引脚8,实现斜率控制方式。 (2)图1中应为两个高速光电耦合隔离器件6N137,由于6N137输出引脚的驱动能力不够,需要连接一个约390 Ω的上拉电阻,以增加输出引脚的驱动能力。两个光电耦合隔离器件6N137的电源信号采用5 V的DC-DC隔离模块WRA0505P,以增强系统的抗干扰能力。 (3)收发器PCA82C250的CANH和CANL引脚各自由通过一个5 Ω的电阻与CAN总线相连,电阻起到一定的限流作用,保护PCA82C250免受CAN总线上的过流冲击。 (4)收发器PCA82C250的CANH和CANL引脚与电源地之间分别反接一个保护二极管和30 pF的电容,可以起到CAN总线的过压保护作用和过流冲击。 (5)CAN控制器SJA1000T输入方式有2种:Intel输入方式和Motorola输入方式。在此采用Intel输入方式,所以SJA1000T的MODE引脚接高电平。 (6)设计仅用到TX0和RX0引脚,根据SJA1000T 通信协议所要求的输入/输出逻辑电平关系,SJA1000T的TX1脚悬空,RX1引脚的电位必须维持在0.5 Vcc以上,所以在TX1引脚接上约6.8 kΩ和3.6 kΩ分压电阻。 (7)微处理器C51的引脚P2.7接CAN控制器SJA1000T的片选信号/CS,可知CAN控制器SJA1000T 的寄存器首地址为8000H。处理器C41和CAN控制器SJA1000T共用12 MHz的晶振,以提高通信速率。通过上述分析,设计的电路原理图,。 3 系统通信模块的软件设计通信模块的软件由3部分组成:初始化程序,发送程序和接受程序。仅这3部分程序,就能完成通信节点间信息的传递。要将CAN总线应用于更复杂的通信系统中,还要考虑CAN总线的错误处理,超载处理等功能和节点间的计算方法。由于每个通信节点都有自己的MCU,所以它们之间可以自由通信。通过CAN收发器PCA82C250的引脚CANH和CANL对总线输出,使总线表现“显性”,这时可发送信息。判断总线表现为“显性”时,就要为接受信息做好准备。3.1 CAN控制器SJA1000T初始化程序该程序首先进入复位状态,设置SJAl000T的模式寄存器MR为Basic CAN模式,验收码寄存器ACR和屏蔽码寄存器AMR,再设置定时器0和定时器1,输出控制寄存器OCR,

电子信息工程测控技术与仪器外文翻译外文文献英文文献SJA1000独立的CAN控制器应用指南

外文出处: Springer-Link 电子期刊 附件1:外文资料翻译译文 SJA1000独立的CAN空制器应用指南 1介绍 SJA100(是一个独立的CA控制器,它在汽车和普通的工业应用上有先进的特征。由于它和PCA82C200在硬件和软件都兼容,因此它将会替代 PCA82C200SJA1000 有一系列先进的功能适合于多种应用,特别在系统优化、诊断和维护方面非常重要。 本文是要指导用户设计基于SJA1000的完整的CAN?点。同时本文还提供典型的应用电路图和编程的流程图。 2概述 SJA1000独立的CA控制器有2个不同的操作模式: BasicCAh模式(和PCA82C20)兼容 PeliCAN 模式 BasicCAN莫式是上电后默认的操作模式。因此,用PCA82C20开发的已有硬件和软件可以直接在SJA100C上使用,而不用作任何修改。 PeliCAN模式是新的操作模式,它能够处理所有CAN2.0B规范的帧类型。而且它还提供一些增强功能使SJA100C能应用于更宽的领域。 2.1 CAN节点结构 通常,每个CAN模块能够被分成不同的功能块。SJA100C使用[3] [4] [5]最优化的CA收发器连接到CAN。收发器控制从CAI控制器到总线物理层或相反的逻辑电平信号。 上面一层是一个CAN控制器,它执行在CA规范[8]里规定的完整的CAN fc、议。它通常用于报文缓冲和验收滤波,而所有这些CA功能,都由一个模块控制器控制它负责执行应用的功能。例如,控制执行器、读传感器和处理人机接口(MM)。 如图1所示,SJA1000虫立的CAN6制器通常位于微型控制器和收发器之间,大多数情况下这个控制器是一个集成电路。

CAN总线控制器 SJA1000源程序(c语言)

CAN总线控制器sja1000源程序 SJA1000 是一种独立控制器用于移动目标和一般工业环境中的区域网络控制CAN 它是PHILIPS 半导体PCA82C200 CAN 控制器BasicCAN 的替代产品而且它增加了一种新的工作模式PeliCAN , 这种模式支持具有很多新特性的CAN 2.0B 协议。 1 特性 和PCA82C200 独立CAN 控制器引脚兼容 和PCA82C200 独立CAN 控制器电气兼容 PCA82C200 模式即默认的BasicCAN 模式 扩展的接收缓冲器64 字节先进先出FIFO 和CAN2.0B 协议兼容PCA82C200 兼容模式中的无源扩展帧 同时支持11 位和29 位识别码 位速率可达1Mbits/s PeliCAN 模式扩展功能 --可读/写访问的错误计数器 --可编程的错误报警限制 --最近一次错误代码寄存器 --对每一个CAN 总线错误的中断 --具体控制位控制的仲裁丢失中断 --单次发送无重发 --只听模式无确认无活动的出错标 志 --支持热插拔软件位速率检测 --验收滤波器扩展4 字节代码4 字节屏蔽 --自身信息接收自接收请求 24MHz 时钟频率 对不同微处理器的接口 可编程的CAN 输出驱动器配置 增强的温度适应-40-+125 #include #include #include //-----------------------沿袭引脚和变量---------------------------------------------- #define uchar unsigned char //宏定义 #define uint unsigned int //宏定义 void MCU_init(void); /*P2口的管脚定义*/ sbit LED1 = P2^6; sbit LED2 = P2^5; sbit SJA_CS = P2^7; //SJA1000片选管脚,低电平有效 //sbit SJA_RST = P1^2; /*P3口的管脚定义*/

基于SJA1000的CAN总线控制系统的设计与实现

( 铜陵学院工业控制网络小论文 题目基于SJA1000的CAN总线控制系统的设计与实现~ 姓名张三 院系电气工程学院 ) 学号 XXXXXXXX 班级 A / 2017-05-19

CAN-bus(Controller Area Network)即控制器局域网是国际上应用最广泛的现场总线之一。最初CAN-bus被设计作为汽车环境中的微控制器通讯工具,用于在车载各电子控制装置ECU之间交换信息,从而形成汽车电子控制网络。如今,CAN-bus作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,已被广泛应用到各个自动化控制系统中。而且CAN-bus总线在通信能力、可靠性、实时性、灵活性、易用性、传输距离等方面较RS-485总线有着明显的优势。因而用CAN总线取代RS-485总线将是大势所趋。 1 CAN总线的主要特性 CAN总线与其它通信网的不同之处有二:一是报文传送中不包含目标地址,它是以全网广播为基础,各接收站根据报文中反映数据性质的标识符来过滤报文,该收的收下,不该收的弃而不用。其好处是可在线上网下网、即插即用和多站接收;二是特别强化数据安全,可满足控制系统及其它较高数据要求的系统需求。CAN具有以下主要技术特性: (1)CAN遵从ISO模型,采用了其中的物理层、数据链路层与应用层。采用双绞线,通信速率最高可达到1 Mbps/40 m,直接传输距离最远可达10 kin/5 kbps。同一段总线内最多可挂接110个设备。 ? (2)CAN的信号传输采用短帧结构,每一帧有效字节数为8个。因而传输时间短,受干扰的概率低。当节点发生严重错误时,CAN可自动关闭该节点,同时切断与总线的联系,以使总线上其它节点不受影响,因此CAN总线具有很强的抗干扰能力。 (3)CAN可支持多主工作方式,网络上任一节点在任何时候均可主动向其它节点发送信息,同时也支持点对点、一点对多点和全局广播方式来接收/发送数据。处于优先级低的节点会主动停止发送,以此来避免总线冲突。 2 CAN总线接口硬件电路的设计 硬件电路的设计主要是CAN通信控制器与微处理器之间和CAN总线收发器与物理总线之间的接口电路的设计。CAN通信控制器是CAN总线接口电路的核心,主要完成CAN的通信协议,而CAN总线收发器的主要功能是增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰(RFI),实现热防护等。

CAN总线学习笔记五:SJA1000硬件电路设计

AN总线学习笔记五:SJA1000硬件电路设计 首先对CAN总线控制器SJA1000的管脚我们必须熟悉。下面是其各个管脚的功能参数。

各个管脚的符号功能什么的上面的表里介绍的很详细,我就不多废话了。 接着我们看SJA1000的这些管脚在实际电路中是怎么进行连接的,因为只谈SJA1000的硬件电路设计,所以就截一张PIAE提供的电路原理图里关于SJA1000的部分。 下面我们要具体解析这个电路图。 AD0-AD7是地址/数据复用总线。因为这个电路是把SJA1000做外部RAM扩展了,所以它的电路连接也势必要符合外部RAM的连接要求。(特权同学也是第一次接触单片机的外部存储器扩展应用,所以开始的时候也很是纳闷,然后拿起课本一阵恶补后才恍然大悟。)先补一下外部扩展RAM的知识,然后再谈这个电路就容易多了:51单片机外部RAM的扩展最多是可以寻址64KB的,也就是最多可以有16条地址线来寻址,P0口是低八位地址扩展

口,P2口是高八位地址扩展口。如果外部RAM不需要用到全部16条地址线(SJA1000就只有8条地址线),那么只要把低位地址线和外部RAM的相应地址线连接,高位的地址线在寻址时都默认为1,比如这里的SJA1000,它的8条地址线是和P0口相连接的,所以对SJA1000的寄存器寻址时的地址应该是FF00H-FFFFH,但是为什么PIAE提供的程序里的地址定义却是FE00H-FEFFH呢?这就要讨论CS信号的连接问题了,我们知道,CS是片选输入信号,只有当它是低电平时才能访问SJA1000。再看看它和谁连了?是P2.0口,正好是地址线高八位的最低位,如果按常理来说,寻址FF00H,那么P2.0就是高电平,SJA1000就不能被访问。所以寻址FE00H时才选通SJA1000,这时才是SJA1000寄存器的地址。 上面讨论了寻址的问题,只是就事论事,如果还不理解,我建议找本书详细了解下单片机的外部存储器的扩展后就会明白的。另外,我们知道单片机的P3.0和P3.1有第二功能,就是做RD和WR用,所以它们就和外部寄存器(这里指SJA1000)的RD和WR相连接了。单片机的ALE脚和存储器的ALE脚也必须相连接。以上的这些连接使得SJA100成为了单片机的外部存储器。 再看INT脚是和单片机的INT1相连,也就是作为接收中断信号来告诉单片机接收到了新的数据帧。RST脚是复位脚,接P2.3成为可编程的。 TX0\RX0连接82C250的对应脚,数据帧是通过这两个脚传送出去的(具体的工作原理可以参考82C250的资料,这里就不讨论了)。MODE脚接正,说明工作在INTER模式下。XTAL1和XTAL2两个脚接16MHz的晶体,SJA1000的工作是有一定的时序的,它可以完成数据的发送以及数据的校验等功能,这完全是IC设计者考虑的东西,我们只要了解它的工作原理,通过单片机配置SJA1000的工作方式,并且向SJA1000写数据或者读数据就可以达到CAN总线通信的目的了。

CAN-bus现场总线基础教程【第3章】CAN控制器驱动-SJA1000编程基础(9)

第3章 CAN 控制器驱动 1.1 SJA1000编程基础 1.1.1 MCU 访问SJA1000 SJA1000使用并行总线接口与MCU 连接,对MCU 来说,SJA1000可以认为是1个外扩的RAM 芯片,51系列MCU 通过地址线、数据线和控制线与SJA1000连接,如图3.1所示。 AD[0:7]是低8位地址与数据总线复用的,MCU 在操作总线时,在该接口上先输出低8位地址线,然后再进行数据操作(读或写)。SJA1000内部带有地址锁存器,由ALE 信号实现数据与地址的分离。因为SJA1000的地址宽度为8位,所以寻址空间范围是0x00~0xFF 。假如每个地址都对应一个寄存器,那么SJA1000最多支持256个寄存器。而实际上SJA1000在BasicCAN (CAN2.0A )模式下只有32个寄存器,在FullCAN (CAN2.0B )模式下则有128个寄存器。 虽然SJA1000寄存器的访问地址会因为硬件设计不同而不同,但SJA1000内部寄存器的位置关系是固定的。如果我们给SJA1000每个内部寄存器的地址都定义绝对地址(如程序清单3.1所示),那么在硬件设计发生变化时,特别是器件编址变化时,要修改的寄存器地址定义将会非常多。 为了提高驱动的可移植性,在实际访问SJA1000内部寄存器时,常采用基地址加偏移量的方式进行寄存器访问(如程序清单3.2所示)。如果把SJA1000内部寄存器看做数组的话,那基地址就是这个数组的首地址,偏移量就是数组的下标,即成员在数组中的位置。 程序清单3.1 采用绝对编址的寄存器定义 1 #define REG_CAN_MOD 0xA000 // 内部控制寄存器 2 #define REG_CAN_CMR 0xA001 // 命令寄存器 3 #define REG_CAN_SR 0xA002 // 状态寄存器 4 #define REG_CAN_IR 0xA003 // 中断寄存器 5 #define REG_CAN_IER 0xA004 // 中断使能寄存器 6 ...... 程序清单3.2 采用基地址加偏移量方式的寄存器定义 7 #define REG_BASE_ADD 0xA000 // SJA1000寄存器基地址 8 #define REG_CAN_MOD 0x00 // 内部控制寄存器 9 #define REG_CAN_CMR 0x01 // 命令寄存器 10 #define REG_CAN_SR 0x02 // 状态寄存器 11 #define REG_CAN_IR 0x03 // 中断寄存器 12 #define REG_CAN_IER 0x04 // 中断使能寄存器 13 ...... 通常MCU 的总线上会挂载很多器件,除了SJA1000外,可能还有RAM 和ROM 等器件。所以数据总线和地址总线上的信息并不一定都是给SJA1000的。因此当MCU 在访问SJA1000 图3.1 SJA1000与MCU 扩展总线连接

基于SJA1000的CAN节点设计v1.0

基于SJA1000的CAN节点设计 文件信息 类别内容 关键词 SJA1000,CTM系列隔离CAN收发器 基于SJA1000的CAN节点设计 摘要 https://www.doczj.com/doc/5611437397.html,

修订历史 版本日期原因Rev X1 2006-12-13 内部制定初稿 Rev 1.0 2006-12-15 第一次发布

目录 1. 基于SJA1000的CAN节点设计 (3) 1.1 硬件设计电路 (3) 1.1.1收发器隔离电路设计 (3) 1.1.2 CAN总线接口设计 (4) 1.2 软件设计 (5) 程序清单1.1 定义片选地址 (5) 程序清单1.2 初始化SJA1000 (5) 程序清单1.3 发送报文 (6) 2. 应用实例 (7) 3. 声明 (1)

1.基于SJA1000的CAN节点设计 1.1 硬件设计电路 CAN总线是一种最有前途的现场总线,因其优异性能而在工业控制、汽车电子、安防等方面得到广泛应用。设计CAN-bus通讯接口是很重要的一个环节,设备的正确运行与其密切相关。如图 1.1给出了一个实际的CAN-bus通讯单元电路图,电路结构为:MCU(P89C52)+CAN控制器(SJA1000)+隔离CAN收发器(CTM Module)。 图 1.1 CAN-bus通讯单元原理图 如图 1.1所示,整个系统电源采用+5V电源输入,上电复位芯片(CAT810L)可保证上电时正确的启动系统。微处理器采用PHILIPS的P89C52单片机,该系列单片机是80C51微控制器的派生器件,采用先进的CMOS工艺制造,指令系统与80C51完全相同。CAN控制器采用PHILIPS的SJA1000,SJA1000是一款独立的控制器,用于汽车和一般工业环境中的控制器局域网络。它是PHILIPS半导体PCA82C200 CAN控制器(BasicCAN)的替代产品。而且,它增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新特性的CAN 2.0B 协议,是目前市面上用的最广的一款CAN控制器。该电路中采用了隔离CAN收发器模块,以确保在CAN总线遭受严重干扰时控制器能够正常运行,该模块介绍见以下1.1.1节收发器隔离电路设计: 1.1.1 收发器隔离电路设计 1.1.1.1 常规设计 图 1.2 常规设计方案

SJA1000调试

转自hua_cs 方案: 1、智能板卡上的通讯采用AT89S51+两块SJA1000的方式进行; 2、上位机通过PC104总线和一块CAN控制板卡连接,CAN控制板卡上同样采用AT89S51+两块 SJA1000的方案.AT89S51和上位机通过PC104总线共享内存(使用IDT的双口RAM); 3、采用西门子的组态软件进行WINCE下的板卡驱动开发; 由于以前没有做过CAN的东西,于是决定了先调试CAN通信,然后设计板卡的方案. 方案确定之后,首先是上https://www.doczj.com/doc/5611437397.html,上下载了全部的SJA1000和PCA82C250的资料.然后开 始设计电路板.采用了SJA1000应用指南中推荐的方案,采用SJA1000的时钟输出为AT89S51的时钟 ,没有采用光电隔离芯片,把TX1接地,TX0和RX0分别连接到PCA82C250的TXD和RXD引脚上,RX1连 接到PCA82C250的VR上;加上了5欧姆的限流电阻和120欧姆的匹配电阻(用110欧姆替代),另外加上 了一个调试用的串口.没有注意而且要命的是把SJA1000的复位引脚和单片机的复位引脚连接到了 一起. 第一次的板子用的加急,用了三天,结果那次的板子做的极差——连铜皮都翻起来了;我马上 让那个电路板厂重新做了三块.在做板的过程中我发现了复位引脚的错误,SJA1000的文档上提供的 是一个复位电路,但是没有给出电路的详细组成,于是我就误以为和单片机的复位电路是一样的了 .在设计这块电路板的时候,最担心的事情就是SJA1000的输出时钟能不能够驱动AT89S51,如果不 能够驱动,那么一切就OVER了,可惜的是我的担心成为了现实,板子焊好之后系统不工作,在

基于SJA1000的CAN总线测试程序

基于SJA1000的CAN总线测试程序 代码如下: /*************定义地址指针,指向基址***********/unsigned char xdata *SJA_base_Adr = SJA_BaseAdr; /*************定义SJA1000 读写缓冲区的数据结构***********/struct BASICCAN_BUFStruct{ unsigned char IDH8; unsigned char IDL_R_DLC; unsigned char Frame_Data[2]; }receive_BUF,send_BUF; /***************************************************************** 函数功能:写SJA1000 的寄存器*入口参数:地址SJAREG_ADR,数据setting*出口参数:无 ****************************************************************/void Write_SJA1000(unsigned char SJAREG_ADR, unsigned char setting){ *(SJA_base_Adr+SJAREG_ADR)=setting;} /***************************************************************** 函数功能:读SJA1000 的寄存器*入口参数:地址SJAREG_ADR,数据setting*出口参数:无 ****************************************************************/unsi gned char Read_SJA1000(unsigned char SJAREG_ADR){ unsigned char SJAREG_data; SJAREG_data=*(SJA_base_Adr+SJAREG_ADR); return(SJAREG_data);} /***************************************************************** 函数功能:测试SJA1000 是否正常连接*入口参数:无*出口参数:

SJA1000中CAN总线同步跳转宽度+波特率控制寄存器的设置

转:SJA1000中CAN总线同步跳转宽度+波特率控制寄存器的设置 SJA1000 CAN控制器对时序的设置真的一点也不马虎,到底是怎么样的不马虎法呢?这一篇笔记就让我们听听他的故事。 在总线时序寄存器0和1中,除了对总线的波特率可编程以外,还加了对采样位与同步跳转宽度位域的设置,我们一一的来探索吧: 采样位,也就是对[采样]动作进行设置的标志位,在总线时序寄存器1的最高位,也就是SAM位。 当SAM为逻辑1时,采样的次数为3次,反之SAM为逻辑0,采样次数为1次。这里就存在一个问题,那么什么时候才需要将SAM位置1呢?网络中有这样一个定义,当总线的波特率为中,低等级时,建议将SAM位置1,则当总线波特率为高时SAM位置为0,那么说得比较具体一点的,当总线波特率从100k起为高波特率,波特率从10k~99k之间为中波特率,波特率10k以下为低波特率。(以上的波特率区分等级是从网络中得知的,见笑了) 接下来要探索的就是同步跳转宽度位域,这个专业词听起来很像很可怖似的,但实际上只要明白后会发现到很容易理解的。在CAN 2.0 协议里,CAN使用了同步跳转宽度位域来兼容不同波特率的总线,视觉化的说法就是说,除了本身设定的波特率以外,该波特率还有上限下界的容差值 这些波特率的上限与下界容差换傻瓜的话来说,假设有一个节点将总线时序设置为10kbps,该节点除了支持目前与该它拥有同样总线时序的节点以外,该节点还支持接近总线时序容差值的节点,那么10kbps可以容差值可以假设为10.9kbps,11.2kbps, 9.2kbps , 8.5kbps ...等等,换另一句话来说就是,只要总线时序为 10kbps的节点一设置(启动)同步跳转宽度位域,那么如果其他节点拥有总线时序为9.X kbps的话,都会被节点一相互兼容。 那么控制同步跳转宽度位域的寄存器就是总线时序寄存器0的最高两位,SJW.0与 SJW.1 同步跳转宽度位域的公式如下: Tsjw的值是系统时钟Tscl乘于SJW.0~1的设置。(至于求出系统时钟Tscl的方法请参考学习笔记1,这里就不重复了,毕竟笔记文章有限。)这样说出来很陌生,那么还是假设一个例题吧...... 例题:假设我SJA1000 CAN控制器所拥有的晶体频率为16MHz,系统时钟Tscl为6.25微妙,SJW.1同SJW.0都被置一,请求出同步跳转宽度位域的时间是?

CD4051、6N137、PCA82C250T、SJA1000、ADC0809芯片介绍

CD4051、6N137、PCA82C250T、SJA1000、ADC0809芯片介 绍 CD4051芯片: CD4051相当于一个单刀八掷开关,开关接通哪一通道,由输入的3位地址码ABC来决定。INH”是禁止端,当“INH”=1时,各通道均不接通。此外,CD4051还设有另外一个电源端VEE,以作为电平位移时使用,从而使得通常在单组电源供电条件下工作的 CMOS电路所提供的数字信号能直接控制这种多路开关,并使这种多路开关可传输峰,峰值达15V的交流信号。例如,若模拟开关的供电电源VDD=,5V,VSS=0V,当VEE=,5V时,只要对此模拟开关施加0,5V的数字控制信号,就可控制幅度范围为,5V,,5V的模拟信号。使用十六进制代码就可以对CD4051进行操作了。比如说P1=0X07,这样CD4051就选择的是7号(二进制111)通道了。它的引脚图如下: 其中引脚说明如下表: 引脚号符号功能 1,2,4,5,12,13,14,15 IN/OUT 输入/输出端 9,10,11 A,B,C 地址端 3 OUT/IN 公共输入/输出端 6 INH 禁止端 7 VEE 模拟信号接地端 8 VSS 数字信号接地端 16 VDD 电源+

它的真值表如下: INPUT STATES 输入状态 ON INHIBIT 禁止 C B A CD4051 0 0 0 0 0 0 0 0 1 1 0 0 1 0 2 0 0 1 1 3 0 1 0 0 4 0 1 0 1 5 0 1 1 0 6 0 1 1 1 7 1 * * * NONE ADC0809芯片: ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。 其中ADC0809的引脚图如下: ADC0809主要信号引脚的功能说明如下:

mcp2515sja1000通讯调试记录

MCP2515 SJA1000通讯调试记录 一、CAN总线 CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO 11898)。SJA1000是飞利浦公司一款并行接口的CAN 协议控制器,为了减少IO口资源占用,Microchip推出SPI 接口CAN协议控制器,型号:MCP2515。这两款芯片都支持CAN V2.0B 技术规范,能发送和接收标准和扩展数据帧以及远程帧。 CAN电平: CAN数据格式: 标准帧 扩展帧 远程帧(省略) 二、原理图 2.1、MCP2515的原理图

2.2、SJA1000的原理图 三、调试思路 3.1、SPI接口调试 3.2、CAN接口调试 第一步:配置CLKOUT输出(CANCTRL寄存器配置CLKEN 和分频系数),通过示波器观察CLKOUT引脚输出。确认MCP2515受控。 第二步:环路测试(自发自收) 首先MCP2515配置成环路模式,下面是验证环路测试 1、配置RXB0禁止滤波屏蔽标识符功能 1、收发功能是否正常。验证:RXB0接收数据(可以读取接收缓冲区获取)和发送数据对比,是否一致。 2、开启CANINTE.TX0IE、CANINTE.RX0IE中断,监测/INT和/RX0B 引脚电平变化。

理论上: 1)成功发送数据,TXB0CTRL.TXREQ由1变成0和/INT引脚产生中断,且CANINTF.TX0IF发送中断标志位置1。 2)成功接收数据,/INT引脚产生中断,且CANINTF.RX0IF发送中断标志位置1。同时RX0BF引脚出现低电平(前提使能RX0BF 接收缓冲区满中断引脚,BFPCTRL.BxBFE和BFPCTRL.BxBFM 置1) 2、配置RXB0使能滤波屏蔽标识符功能(11位标准标识符) 1、发送两组数据帧:先发送不符合滤波码的数据帧,然后发送符合滤波码的数据帧。 验证方法:1、读取RX接收缓冲区,打印出来 2、通过/INT 和RX0BF引脚时序判断。理论:当成功发送第一帧数据是,中断引脚/INT置低,

相关主题
文本预览
相关文档 最新文档