ECan总线模块

合集下载

can总线知识点梳理

can总线知识点梳理

can总线知识点梳理CAN总线是一种串行通信网络,用于实现分布式实时控制。

它是由德国的BOSCH公司开发的,具有传输速度快、通信距离远、无损位仲裁机制、多主结构等优点。

CAN总线标准只规定了物理层和数据链路层,需要用户自定义应用层。

CAN总线采用差分电压传送,使用两条信号线(CAN_H和CAN_L),静态时均为2.5V左右,显性时,通常电压值为:CAN_H=3.5V,CAN_L=1.5V。

在CAN总线中,多个节点连接,只要有一个为低电平,总线就为低电平,只有所有节点输出高电平时,才为高电平。

CAN总线有5个连续相同位后,就插入一个相反位,产生跳变沿,用于同步,从而消除累积误差。

CAN总线的数据帧结构包括帧起始、仲裁段、控制段、数据段、CRC校验段、应答段和帧结束。

其中,仲裁段决定了报文的优先级,ID值越低,优先级越高。

控制段中包含数据长度代码(DLC),表示数据段的长度。

数据段包含发送的数据,可以有0~8个字节。

此外,CAN总线还支持扩展帧和标准帧两种格式,IDE位表示帧类型(0为标准帧,1为扩展帧),RTR位表示帧类型(0为数据帧,1为远程帧)。

在实际应用中,MCU负责实现对功能电路和CAN控制器的控制,包括初始化CAN控制器参数、通过CAN控制器读取和发送CAN 帧、处理CAN控制器的中断异常、根据接收到的数据输出控制信号等。

同时,接口管理逻辑解释MCU指令,寻址CAN控制器中的各功能模块的寄存器单元,向主控制器提供中断信息和状态信息。

在具体的CAN应用场景中,如汽车行业,现在每一辆汽车上都装有CAN总线。

同时,为了实现不同的功能,不同的CAN标准仅物理层不同,而应用层协议也有多种选择,如CANOpen、DeviceNet、J1939、iCAN等。

各类总线的介绍

各类总线的介绍

总线一.总线的概念总线是一组用于计算机之间各部件之间进行数据和命令的传送的公用信号线。

二.总线的分类(一)总线(微机通用总线)按功能和规范可分为三大类型:(1)片总线(Chip Bus, C-Bus) 又称元件级总线,是把各种不同的芯片连接在一起构成特定功能模块(如CPU模块)的信息传输通路。

(2)内总线(Internal Bus, I-Bus) 又称系统总线或板级总线,是微机系统中各插件(模块)之间的信息传输通路。

例如CPU模块和存储器模块或I/O接口模块之间的传输通路。

(3) 外总线(External Bus, E-Bus) 又称通信总线,是微机系统之间或微机系统与其他系统(仪器、仪表、控制装置等)之间信息传输的通路,如EIA RS-232C、IEEE-488等。

(现场总线CAN属于外总线)三类总线在微机系统中的地位和关系其中的系统总线,即通常意义上所说的总线,一般又含有三种不同功能的总线,即数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control Bus)。

(二)总线按照传输数据的方式划分:可以分为串行总线和并行总线。

串行总线中,二进制数据逐位通过一根数据线发送到目的器件;并行总线的数据线通常超过2根。

常见的串行总线有SPI、I2C、USB及RS232等。

(三)总线按照时钟信号是否独立划分:可以分为同步总线和异步总线。

同步总线的时钟信号独立于数据,而异步总线的时钟信号是从数据中提取出来的。

SPI、I2C是同步串行总线,RS232采用异步串行总线。

按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。

三.各类总线介绍内部总线1.I2C总线是同步通信的一种特殊形式,具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优点。

在主从通信中,可以有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。

ECan总线模块资料

ECan总线模块资料

ECan总线模块访问ECAN模块可分为控制/状态寄存器和32个邮箱的访问。

每个邮箱都有一个可编程接受屏蔽寄存器,其所占用的512字节RAM 都可以配置为发送或接收邮箱。

每个邮箱包括8字节数据区,29位标识符和几个控制位,每个邮箱都是有4个32位的寄存器构成。

即:ECAN控制器总共有15个32位的控制寄存器,控制着位定时器、邮箱的发送或接收使能、错误状态及CAN中断等。

其控制寄存器的状态寄存器只能允许32位访问,而接收屏蔽、时间标识寄存器、超时寄存器和邮箱所在的CAN范围则可以以8位、16位和32位方式访问。

该程序中都是进行32位访问,通过设置影子寄存器可实现对位进行操作。

如以下程序:struct ECAN_REGS ECanbShadow;EALLOW; // EALLOW enables access to protected bits ECanbShadow.CANTIOC.all = ECanbRegs.CANTIOC.all;ECanbShadow.CANTIOC.bit.TXFUNC=1; //发送ECanbRegs.CANTIOC.all = ECanbShadow.CANTIOC.all;EALLOW是指允许对受保护的寄存器操作,通常和EDIS配套使用,EDIS是指恢复被保护寄存器的状态。

#define EALLOW asm(" EALLOW")#define EDIS asm(" EDIS") (device.h)初始化CAN步骤:1.使能GPIO口(GPIO8为CANTX,GPIO10为CANRX);2.设置CANTX和CANRX为CAN的通信引脚;3.选择是增强型还是标准型;4.相关寄存器清零;(邮箱控制寄存器清0;复位TA;RMP寄存器所有位置1,表示邮箱中存在发送的数据;清除所有中断标志)5.设置时间配置寄存器的三个步骤(设置CCR=1,等待CER=1,然后设置CANBTC);ECanbShadow.CANMC.all = ECanbRegs.CANMC.all;R = 1 ;ECanbRegs.CANMC.all = ECanbShadow.CANMC.all;ECanbShadow.CANES.all = ECanbRegs.CANES.all;do{ECanbShadow.CANES.all = ECanbRegs.CANES.all;} while(E != 1 );配置时钟程序此处省略。

汽车CAN总线详细教程

汽车CAN总线详细教程

◆1992年,CIA(CAN in Automation)用户组织成立,之 后制定了第一个CAN应用层“CAL”。 ◆ 1994年开始有了国际CAN学术年会(ICC)。 ◆ 1994年美国汽车工程师协会以CAN为基础制定了 SAEJ1939标准,用于卡车和巴士控制和通信网络。 ◆ 到今天,几乎每一辆欧洲生产的轿车上都有CAN;高级客 车上有两套CAN,通过网关互联;1999年一年就有近6千万个 CAN控制器投入使用;2000年销售1亿多CAN的芯片;2001 年用在汽车上的CAN节点数目超过1亿个 。 ◆ 但是轿车上基于CAN的控制网络至今仍是各大公司自成系 统,没有一个统一标准。
(6)通信速率最高可达1MB/s(此时距离最长40m)。
(7)节点数实际可达110个。
(8)采用短帧结构,每一帧的有效字节数为8个。
(9)每帧信息都有CRC校验及其他检错措施,数据出错率极低。
(10)通信介质可采用双绞线,同轴电缆和光导纤维,一般采用 廉价的双绞线即可,无特殊要求。
(11) 节点在错误严重的情况下,具有自动关闭总线的功能,切 断它与总线的联系,以使总线上的其他操作不受影响。
带有三个中央控制单元和总线系统的车
带有三个中央控制单元的CAN驱动网络
车用网络发展原因
电子技术发展----线束增加 线控系统(X-BY-WIRE) 计算机网络的广泛应用 智能交通系统的应用
汽车发展带来的问题
(1)汽车电子技术的发展汽车上电子装置越来 越多汽车的整体布置空间缩小
(2)传统电器设备多为点到点通信导致了庞大 的线束
(3)大量的连接器导致可靠性降低。 粗大的线束与汽车中有限的可用空间之间的矛
盾越来越尖锐,电缆的体积、可靠性和重量成为越 来越突出的问题,而且也成为汽车轻量化和进一步 电子化的最大障碍,汽车的制造和安装也变得非常 困难。 (4)存在冗余的传感器。

BMS中基于MKE06Z64芯片的CAN总线通信模块设计

BMS中基于MKE06Z64芯片的CAN总线通信模块设计

收稿日期:2018-10-13基金项目:国家自然科学基金(61672369)作者简介:彭楠楠(1992—),男,江苏省人,硕士,主要研究方向为嵌入式系统。

BMS 中基于MKE06Z64芯片的CAN 总线通信模块设计彭楠楠,王宜怀,丁伟,殷姚吉(苏州大学计算机科学与技术学院,江苏苏州215000)摘要:在搭载CAN 总线的电池管理系统中,电池管理系统通过CAN 总线完成对电池的电压、电流、温度等信息的采集,以此来实现对电池的保护。

通过介绍以MKE06Z64为主控芯片,以ML5238作为电池采集芯片的电池管理系统,对其中的CAN 总线通信模块进行设计,包括CAN 控制器、CAN 收发器以及光耦隔离模块,介绍了CAN 总线模块的软件设计和硬件设计,同时以PC 上位机进行测试,测试结果表明所设计的CAN 总线通信模块在以MKE06Z64为主控芯片的电池管理系统中具有可靠性好、通信性能稳定等特点。

关键词:MKE06Z64芯片;锂电池管理系统;CAN 总线;PC 机中图分类号:TM 921.5文献标识码:A文章编号:1002-087X(2019)05-0873-04Design of CAN bus communication module in lithium battery management system based on MKE06Z64chipPENG Nan-nan,WANG Yi-huai,DING Wei,YIN Yao-jiAbstract:In the battery management system equipped with CAN bus,the battery management system completes the collection of battery voltage,current,temperature and other information through the CAN bus,in order to achieve the protection of batteries.Through the introduction of MKE06Z64as the main chip,ML5238was adopted as a battery management system for battery acquisition chip,to design the CAN bus communication module,including CANcontroller,CAN transceiver and optical isolation module,and the software design and hardware design of CAN bus module were introduced.The designed lithium battery management system with MKE06Z64as the main chip was tested with the PC test.The test results show that the CAN bus communication module has the characteristics of good reliability and stable communication performance in the battery management system.Key words:MKE06Z64chip;lithium battery management system;CAN bus;PC machine CAN 总线是一种应用广泛的串行通信协议之一,主要应用于对数据完整性有严格需求的汽车电子和工业控制领域。

eCAN模块课件

eCAN模块课件

是一块可编程的逻辑电路,片上集成CAN总线数据传输协议,通过硬件实
现CAN总线编码和解码的功能,方便CAN总线技术在实际开发中的应用。 • CAN总线控制器提供与微处理器的物理线路接口,通过对它的编程,CPU可
以设置它的工作方式,控制它的工作状态,进行数据的发送和接收。
• CAN总线控制器分为两种类型。 一种是独立的,片内集成对CAN总线的编解码协议,它可以与多种类型的 单片机、微处理器的标准总线进行接口连接。另一种是将CAN总线控制器 与微处理器作在一起,简化了电路设计。
消息邮箱
• eCAN模块有32个不同的消息邮箱,每个消息对象可以配置 成发送或接收邮箱,每个消息目标都有自己的接收滤波器. • 消息邮箱用来存储接收到的CAN消息,或存放等待发送的 CAN消息。 • 消息邮箱映射到DSP的RAM存储器,当消息邮箱没有存放消
息时,CPU可以将相应的RAM空间当做通用存储器使用。
简介eCAN模块的控制状态寄存器
• 邮箱使能寄存器(CANME)Mailbox Enable Register • 邮箱方向寄存器(CANMD)Mailbox Direction Register • 发送请求置位寄存器(CANTRS) Transmission Request Set Register • 发送请求复位寄存器(CANTRR)
现场总线控制系统
• 现场总线控制系统(FCS)既是一个开放的通讯网络,又 是一种全分布控制系统。作为智能设备的联系纽带,把挂 接在总线上、作为网络节点的智能设备连接为网络系统,
并进一步构成自动化系统,实现基本控制、补偿计算、参
数修改、报警、显示、监控、优化及控管一体化的综合自 动化功能。
• 现场总线其规模属于局域网、总线型结构,它简单但能满

ECan总线模块讲解

ECan总线模块讲解

ECa n总线模块访问ECAN模块可分为控制/状态寄存器和32个邮箱的访问。

每个邮箱都有一个可编程接受屏蔽寄存器,其所占用的 512字节RAM 都可以配置为发送或接收邮箱。

每个邮箱包括 8字节数据区,29位标识符和几个控制位,每个邮箱都是有4个32位的寄存器构成。

即:ECAN空制器总共有15个32位的控制寄存器,控制着位定时器、邮箱的发送或接收使能、错误状态及CAN中断等。

其控制寄存器的状态寄存器只能允许32位访问,而接收屏蔽、时间标识寄存器、超时寄存器和邮箱所在的CAN范围则可以以8位、16位和32位方式访问。

该程序中都是进行32位访问,通过设置影子寄存器可实现对位进行操作。

如以下程序:struct ECAN_REGS ECa nbShadow;EALLOW; // EALLOWnables access to protected bitsECa nbShadow.CANTIOC.all = ECa nbRegs.CANTIOC.all;ECa nbShadow.CANTIOC.bit.TXFUNC=1; // 发送ECa nbRegs.CANTIOC.all = ECa nbShadow.CANTIOC.all;EALLOV是指允许对受保护的寄存器操作,通常和EDIS配套使用,EDIS是指恢复被保护寄存器的状态。

#defi ne EALLOW asm(" EALLOW")#define EDIS asm(" EDIS") ( device.h)初始化CAN步骤:1.使能 GPIO 口( GPIO8为 CANTX,GPIO1O为 CANRX);2.设置CANTX和CANRX为CAN的通信引脚;3.选择是增强型还是标准型;4.相关寄存器清零;(邮箱控制寄存器清0;复位TA;RMP寄存器所有位置1,表示邮箱中存在发送的数据;清除所有中断标志)5.设置时间配置寄存器的三个步骤(设置CCR=1,等待CER=1,然后设置CANBTC);ECa nbShadow.CANMC.all = ECa nbRegs.CANMC.all;ECa R = 1 ;ECa nbRegs.CANMC.all = ECa nbShadow.CANMC.all;ECa nbShadow.CANES.all = ECa nbRegs.CANES.all;do{ECa nbShadow.CANES.all = ECa nbRegs.CANES.all;} while(ECa E 匸1 );配置时钟程序此处省略6.配置CANBTC确认TSEG和TSEG不等于0,如果这两个同时为0, 则CAN 模块不能退出初始化模式。

can总线通讯实例

can总线通讯实例

can总线通讯实例Can总线通讯实例一、引言Can总线是一种常用于工业控制系统中的通信协议,具有高可靠性和抗干扰能力。

本文将以一个实际的Can总线通讯实例为例,介绍Can总线的工作原理以及在实际应用中的优势和应用场景。

二、Can总线的工作原理Can总线采用了CSMA/CD(载波监听多点接入/碰撞检测)的工作方式,可以实现多个设备之间的高效通信。

Can总线由两根线组成,分别是CAN_H和CAN_L,通过这两根线实现数据的传输和通信。

Can总线中的设备分为两类,分别是Can控制器和Can节点。

Can控制器负责控制总线的传输速率和数据的发送和接收,而Can节点则是实际的设备,可以是传感器、执行器等。

Can节点通过Can控制器与Can总线进行连接。

当Can节点需要发送数据时,首先会监听总线上是否有其他节点正在发送数据,如果没有,就可以将数据发送到总线上。

如果多个节点同时发送数据,会发生碰撞。

Can总线会检测到碰撞的发生,并根据一定的算法进行冲突解决,以保证数据的准确传输。

三、Can总线的优势1. 高可靠性:Can总线具有很高的抗干扰能力,能够在噪声较大的环境下正常工作。

这使得Can总线广泛应用于工业控制系统等对可靠性要求较高的领域。

2. 高效性:Can总线采用了CSMA/CD的工作方式,可以实现多个设备之间的高效通信。

Can总线的通信速率可以达到几百kbps甚至几Mbps,满足了大部分实时通信的需求。

3. 灵活性:Can总线支持多主机的工作方式,可以实现多个设备之间的灵活通信。

同时,Can总线还支持节点的热插拔,方便系统的维护和升级。

4. 成本低廉:Can总线的硬件成本相对较低,同时由于其高可靠性和抗干扰能力,可以减少系统的维护成本和故障率。

四、Can总线的应用场景Can总线广泛应用于工业控制系统、汽车电子控制系统等领域。

以下是一些Can总线的典型应用场景:1. 汽车电子控制系统:Can总线在汽车电子控制系统中被广泛应用,例如发动机控制模块、制动系统、空调系统等。

CAN 总线高速隔离模块说明书

CAN 总线高速隔离模块说明书

CAN总线高速隔离模块安装使用说明书1.产品用途与简介CAN总线隔离模块适合CAN总线的扩展以及工业现场的隔离要求。

隔离器采用高速光电隔离技术,对端口的数据进行透明传输,因此能兼容任何CAN上层协议。

经实践认证,本总线隔离模块能够稳定可靠地应用于任何CAN总线仪器设备的总线扩展。

2.技术规格a)通讯速率100Kbps-500Kbps自动适应(其他速率请订货时说明)b)适应协议物理层透明传输,适应任何CAN总线高层协议c)终端电阻A侧和B侧均内置120欧姆终端电阻d)供电电源:+9-30V DC,功耗<2W,带反接过流保护e)隔离电压2000V rms,电源、CANA、CANB之间均相互隔离f)总线保护ESD保护功能,TVS瞬变保护管防总线过压g)工作温度-40℃-+85℃h)相对湿度≤90%i)大气压力86-106kPaj)安装DIN导轨(35mm)安装k)尺寸(长×宽×高)115×90×40mm3.接线端子说明AH,AL:CAN总线A端的CAN+,CAN-信号Vin:+9-30V DC供电电源输入正端0V:供电电源输入负端BH,BL:CAN总线 B端的CAN+信号,CAN-信号4.安装步骤a)将隔离中继器的AH、AL端子分别与CAN总线的CANH、CANL连接,BH、BL端接线方法相同,A侧与B侧可以完全互换。

b)在Vin端和0V端接入+9-30V DC的电源输入信号。

c)出厂已经默认接入A侧和B侧的终端电阻120Ω,因此如果原来的CAN网络的终端电阻匹配正常,经过本隔离器分割为2个子网络后,子网络的终端电阻匹配也是正常的。

特殊应用中如果需要断开隔离器上的中断电阻,请将A/B侧端子旁边的RT3/RT4电阻焊掉即可。

d)上电以后,电源指示灯应常亮,否则请检查电源输入电压和极性。

e)当CAN总线上有通讯数据时,通讯指示灯闪烁,其亮度与总线通讯速率和数据量有关。

CAN总线的查找及连接方法

CAN总线的查找及连接方法

CAN总线的查找及连接方法CAN总线是一种常用的控制器局域网络,用于在不同设备之间进行通信。

CAN总线可以用于汽车、工业自动化、通信设备等领域,可以实现实时性高、稳定性好的数据传输。

在实际使用中,需要先查找并连接CAN总线才能实现通信功能。

下面将介绍CAN总线的查找及连接方法。

一、CAN总线的查找方法1.查看设备手册:首先,在需要使用CAN总线的设备手册中查看是否支持CAN总线通信。

设备手册中会详细说明CAN总线的参数、接口类型、通信速率等信息,从而确定是否支持CAN总线。

2.查看设备外部连接接口:如果设备支持CAN总线通信,可以通过查看设备的外部连接接口来确认CAN总线的接口类型和连接方式。

通常情况下,CAN总线的接口是一个圆形的9针插座,也有一些设备采用其他类型的接口,需要根据具体设备来确认。

3.使用专用工具进行扫描:如果无法确定设备是否支持CAN总线通信或者找不到外部接口,可以使用专用的CAN总线扫描工具来扫描设备,看是否可以检测到CAN总线信号。

扫描工具通常可以识别CAN总线的信号并显示通信状态,从而确认设备是否支持CAN总线通信。

二、CAN总线的连接方法1.准备CAN总线设备:在确认设备支持CAN总线通信后,需要准备好CAN总线设备,包括CAN总线模块、CAN总线数据线等。

2.连接CAN总线模块:将CAN总线模块插入设备上的CAN总线接口,确保插入正确,避免损坏设备。

通常情况下,CAN总线模块插入后会有“咔嚓”声,表示已连接成功。

3.连接CAN总线数据线:将CAN总线数据线连接到CAN总线模块上的引脚上,通常情况下,CAN总线数据线有两根线,一根为CAN_H,另一根为CAN_L,需要分别连接到CAN总线模块上对应的引脚上。

4.设置CAN总线参数:连接好CAN总线设备后,需要设置CAN总线的参数,包括通信速率、数据位率、校验方式等。

设置参数需要按照设备手册上的说明进行,确保设备之间能够正常通信。

现场总线模块 CTEU 安装系统 CTEL说明书

现场总线模块 CTEU 安装系统 CTEL说明书

现场总线模块CTEU/安装系统CTELSubject to change –2017.062→Internet:/catalogue/...主要特性该系统概览•CTEU 现场总线模块,用于阀岛•Festo 专有接口(I-Port)•输入模块CTSL 用于检测传感器信号•接口,用于Festo 安装系统CPI •通过现场总线接口直接方便地实现阀岛和其它设备的组网•用途广泛,防护等级可高达IP65/67•通用接口技术(Sub-D,M12,端子条)•可选分散式安装总线节点,用于连接两个阀岛•基本诊断:欠压、短路CTEU 兼容各种阀岛。

Festo 专有、统一明确的接口(I-Port)让现场总线模块能用于多种不同类型的阀岛。

目前支持以下协议:•CANopen •设备Net •CC-LINK •PROFIBUS •EtherCAT •AS-I 接口•PROFINET •EtherNet/IP阀岛配置器官网:→官网上的阀岛配置器可帮助您完成阀岛的正确选型。

选择带I-Port 接口的阀岛,订购相对应的CTEU 总线节点。

后面只需要把总线节点放到阀岛上。

阀岛的识别代码明确了阀功能、阀数量、未占用阀位以及附加功能和气源处理。

与所有Festo 产品一样,所有阀岛供货时:•已完全装配好•按要求配备接头•电气功能已经过测试•气动功能已经过测试•包装牢固•用户文档可免费下载主要特性现场总线系统兼容CTEUCANopenCANopen原先由博世公司领头的的合资企业为汽车行业而开发。

自1995年来,一直由CiA(CAN inAutomation)维护,直到2002年底,被标准化为欧盟EN50325-4标准。

设备Net设备Net是一种开放式现场总线,由罗克韦尔自动化公司基于CAN协议开发而来。

设备Net已被标准化为欧盟EN50325标准。

CC-Link“控制和通信连接"(CC-Link)由三菱电气开发而来,自1999年来,一直是作为开放式现场总线网络。

基于TMS320F28335的CAN总线通信设计

基于TMS320F28335的CAN总线通信设计

摘 要 :根 据 CAN 总线通 信规 范 和 TMS320F28335处理 器 eCAN外设 特 点 ,设 计 了 CAN 总
线 多节点 通 信 网络 连 接 方 式及 接 口电路 ;根 据 TMS320F28335处理 器 eCAN模 块 的 配 置 规
则 ,设计 了 CAN 总线 数 据 帧格 式 ,并 给 出 了设 置 示 例 ,对 该模 块进 行 了软件 配 置 ,实 现 了
目前 ,飞 行 器 内 部 常 用 总 线 有 CAN 总 线 、 MIL—STD一1553B总 线 等 。1553B采 用 的 是 指 令/ 响 应 方式 异 步 操 作 和 双余 度 设 计 ,具 有 更 高 的可 靠 性 ,但 成 本 较 高 ,而 CAN总 线 却 有 更 高 的性 能 价 格 比 ,能 有 效 的 降低 飞行 器 的研 制 成 本 。 为 满 足 某项 目多 节 点 高 可靠 总 线 通 信 的需 求 ,本 文 从 低 成 本 、低 功 耗 、高 性 能 的 角 度 设 计 了 一 种 基 于 TMS320F28335的 CAN 总 线 通 信 协 议 与 软 件 配 置
第 2期 2018年 06月
电 光 系 统
Electronic and Electro-optical System s
No.2 Jun.2018
基 于 TMS320F28335的 CAN 总 线 通 信 设 计
宋耀 东 ,李 明 ,杜 雪 ,魏 枫
中国 电子 科技 集 团公 司 第二 十七研 究所 ,郑 州 450047
CAN是控 制 局 域 网 络 的 简 称 ,它 是 一 种 有 效 支 持 分 布 式 控 制 或 实 时 控 制 的 串 行 通 信 网 络 。 CAN总线 中数 据在 串联 总线 上 可 以一个 接 一 个 地 传 送 ,所 有参 加 CAN 总线 的分 系统 都 可 以通 过其 控 制 单元 上 的 CAN总 线 接 口进 行 数 据 的 发 送 和 接 收 。CAN总线 是 一 个 多 路 传 输 系 统 ,当某 一 单 元 出现故 障 时不会 影 响其他 单 元 的工 作 。CAN 总 线 符合 ISO11898标 准 ,最 大 传 输 速 率 为 1 MB/s 时 ,传输距 离 最大 为 40 Ill;传 输速 率 为 5 kB/s时 , 最 大传输 距离 为 10 km。CAN总 线 的传 输 介 质 可 为 双绞线 、同轴 电缆等 。

can 隔离模块 电路

can 隔离模块 电路

can 隔离模块电路CAN(Controller Area Network)隔离模块电路是一种常用于汽车领域的电子设备,用于实现CAN信号的隔离传输。

CAN总线是一种多主机、多从机的串行通信总线,广泛应用于汽车电子系统中,如发动机控制、车载网络、车身控制等。

由于CAN总线上的信号传输需要具备高可靠性和抗干扰能力,而隔离模块电路能有效地提供信号隔离和噪声抑制,保证CAN总线的稳定运行。

隔离模块电路主要由隔离器件、驱动电路和电源电路组成。

隔离器件是实现CAN信号隔离的核心部件,常用的隔离器件有光耦和磁耦,其原理是利用光电转换或电磁感应将输入信号与输出信号电气隔离开来。

驱动电路用于使隔离器件能够正确地传递CAN信号,通常包括驱动电流放大和信号滤波等功能。

电源电路用于为隔离模块提供稳定的工作电压,以保证其正常运行。

CAN隔离模块电路的工作原理是将输入信号经过隔离器件隔离后,再由驱动电路放大和滤波,最终输出到CAN总线上。

隔离模块电路能够有效地隔离CAN总线和外部环境之间的干扰信号,提高系统的抗干扰能力。

另外,隔离模块电路还能够解决CAN总线上的接地问题,减少接地回路对信号传输的影响。

隔离模块电路在汽车电子系统中的应用非常广泛。

首先,它能够保护CAN总线免受来自其他电子设备的干扰。

在汽车中,各个电子设备可能会产生电磁干扰,干扰信号可能会通过CAN总线传递到其他设备,导致系统故障或错误操作。

通过使用隔离模块电路,可以有效地隔离这些干扰信号,提高系统的可靠性和稳定性。

隔离模块电路还能够解决CAN总线上的接地问题。

在传统的CAN 总线连接中,各个设备的接地可能存在差异,导致接地回路不完整,影响信号传输。

隔离模块电路通过隔离输入和输出信号的地线,解决了接地问题,确保信号的可靠传输。

隔离模块电路还能够提高CAN总线的传输距离。

CAN总线的传输距离受限于信号衰减和干扰程度,隔离模块电路能够提供更好的信号放大和滤波功能,使得信号能够在长距离传输时保持较好的质量。

CAN总线基础知识介绍

CAN总线基础知识介绍

什么是CAN ?CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。

最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU 之间交换信息,形成汽车电子控制网络。

比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。

一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。

实际应用中,节点数目受网络硬件的电气特性所限制。

例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。

CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。

另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。

CAN 是怎样发展起来的?CAN最初出现在80年代末的汽车工业中,由德国Bosch公司最先提出。

当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。

提出CAN总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。

于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。

1993年,CAN 已成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。

CAN是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。

当信号传输距离达到10Km时,CAN 仍可提供高达50Kbit/s的数据传输速率。

由于CAN总线具有很高的实时性能,因此,CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用。

CAN 是怎样工作的?CAN通讯协议主要描述设备之间的信息传递方式。

CAN层的定义与开放系统互连模型(OSI)一致。

每一层与另一设备上相同的那一层通讯。

ETA701 CAN 总线扩展模块 说明书 V1.0

ETA701 CAN 总线扩展模块 说明书 V1.0

ETA701 CAN总线扩展模块英创信息技术有限公司2004年11月1ETA9701功能概述ETA701是一款与英创嵌入式PC模块配套使用的扩展电路板,主要用于数据的远程或实时高可靠传输系统ETA701采用了PHILIPS半导体公司的SJA1000 CAN总线控制器和PCA82C250 CAN总线收发器通过板上的精简ISA总线接受来自英创嵌入式PC模块的操作指令和数据ETA701可提供高达1Mbps的数据传输速率这使实时控制变得非常容易当采用5Kbps的的数据传输速率时其通讯距离最高可达到10KM,硬件的错误检定特性也增强了CAN的抗电磁干扰能力,这给数据的远程可靠传输提供了有利保证CAN全称为Controller Area Network即控制器局域网是国际上应用最广泛的现场总线之一SJA1000是一款独立的控制器主要用于汽车和一般工业环境中的控制器局域网络(CAN)它是PHILIPS半导体PCA82C200 CAN控制器(BasicCAN)的替代产品而且它增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新特性的CAN 2.0B协议ETA701可广泛应用于汽车电子领域智能楼宇系统小区防盗系统电力通讯控制工业自动化控制工业数据采集和矿业远程通讯等领域 是RS485总线系统升级的理想选择ETA701 CAN总线通讯模块通过精简ISA总线与英创公司的嵌入式PC模块相连接口关系简单明了不需要任何其它接口电路目前能与ETA701直接接口的模块包括NetBox-II NB100ETR100ETR186ETR232i等模块ETA701根据用户的需要分为两种一种带光电隔离一种不带光电隔离带光电隔离ETA701 CAN总线通讯模块的CAN收发器端的所有信号和电源与其它部分完全隔离可承受至少1Kv(有效值)的电压冲击ETA701的外形尺寸为50mm x 60mm2ETA701外观与接口定义从使用上看ETA701 P1为精简ISA 总线接口实现与CPU 板的连接各接口所在物理位置如下图所示接口P1为IDC 方式管脚间距0.1”方焊盘为1#管脚具体接口控制信号如下:序号 信号名称 方向 功能描述 1 RESET# 输入 复位信号输入低有效2 A0 输入 地址总线输入最低有效位3 D0 双向 双向数据总线最低有效位4 A1 输入 地址总线输入5 D1 双向 双向数据总线6 A2 输入 地址总线输入7 D2 双向 双向数据总线8 A3 输入 地址总线输入9 D3 双向 双向数据总线 10 A4 输入 地址总线输入 11 D4 双向 双向数据总线12WE#输入CPU 把数据写入ETA701的控制脉冲低有效13 D5 双向 双向数据总线14RD#输入 CPU 从ETA701读出数据的控制脉冲低有效15 D6 双向 双向数据总线16 CS1# 输入 CPU 对ETA701进行控制操作低有效ETA701需占用3个IO 端口通常为0x3000x301和0x30217 D7 双向 双向数据总线最高有效位18 VCC 电源 +5V 电源输入19 IRQ 输出 ETA701中断请求输出高有效20 GND电源公共地3ETA701 技术指标支持CAN2.0B协议兼容CAN2.0A协议符合ISO 11898规范CAN控制器波特率在5Kbps1Mbps之间可选同时支持11位和29位识别码在汽车环境中对总线提供瞬变保护斜率控制以降低射频干扰(RFI)差动接收器具有宽共模范围有很强的抗电磁干扰(EMI)的能力 热保护对电源和地的短路保护一个未供电的节点不会干扰总线采用光电隔离模块隔离电压1000V (Rms)至少可挂110个节点提供支持中断收发的C语言驱动程序库4ETA701 函数简介英创公司ETA701 CAN总线扩展模块提供在DOS环境下运行支持中断收发的驱动程序函数库ETR_CAN.LIB函数库采用BC3.1大模式编译上层应用程序只需在工程文件中加入ETR_CAN.LIB在应用程序模块中包含ETR_CAN.H就可调用CAN的接口函数了以下给出CAN总线的调用函数1int InitCAN int IOPort, int IRQnum, int BrateIdx ;2int ReadCAN void* DatBuf, int BufLength ;3int WriteCAN int Address, void* DatBuf, int DatLength ;4int TermCAN5int CANAddress6int CANDataReady// 返回发方CAN地址7int CANState8void OpenCanBus(void);功能描述安装CAN通讯模块2void CloseCanBus(void);功能描述卸载CAN通讯模块3int CanInit(int can,int rate,int can_add);功能描述初始化CAN控制器输入参数int can CAN通讯模块基地址+1如 0x301int rate CAN通讯模块波特率0x005Kbps0x0110Kbps0x0220Kbps0x0340Kbps0x0550Kbps0x06100Kbps0x07200Kbps 0x08250Kbps0x09300Kbps0x10500Kbps0x11600Kbps0x121Mbps int can_add CAN通讯模块物理地址来自拨码开关D0--D6D7无效返回值初始化CAN控制器若正确返回0若错误返回>04int CDataWrite(int can,unsigned char obj, unsigned chardatalen ,unsigned char far* SendData);功能描述写数据到发送缓冲区输入参数int can CAN通讯模块基地址+1如 0x301unsigned char obj 发送数据对方地址0x00-0x7F0x80为广播地址 unsigned char datalen 发送数据长度0x00-0x08unsigned char far* SendData 发送数据数组指针数组长度为11包括3个头字节和8个数据字节头字节SendData[2]低3位无效返回值若正确返回0若错误返回15int CDataRead(unsigned char far* ReceiveData);功能描述读出接收到的数据输入参数unsigned char far* ReceiveData 接收数据数组指针数组长度为13包括5个头字节和8个数据字节头字节ReceiveData [0]低4位表示数据长度头字节ReceiveData [1]为目的地址头字节ReceiveData [4] 低3位无效返回值若有数据则返回1数据被放在ReceiveData数组中数组长度为13若无数据则返回0。

eCAN总线通信实验指导书

eCAN总线通信实验指导书

实验八CAN总线通信一、实验目的1、熟悉实验系统中实现CAN总线通信的硬件电路;2、掌握通过eCAN模块实现DSP间用CAN总线接口通信的方法。

二、实验背景知识1 eCAN接口电路DSP2812内置eCAN控制器。

在实验板上CAN总线收发器采用SN65HVD230。

它将CANTX、CANRX信号转化成CANH、CANL信号在CAN总线上传输。

在实验板上的接口电路原理如下:+3.32 eCAN的初始化初始化过程首先配置F2812的引脚GPIOF6(CANTXA)和GPIOF7(CANRXA)为外设模式,并需要配置eCAN的下列寄存器:◆CANTIOC和CANRIOC 配置eCAN的RX和TX分别为接收和发送引脚◆CANMC 配置eCAN工作在增强功能和自测试模式下◆MBOXn.MCF. 在初始化邮箱前,必先将其初始化为0◆CANTA 清除所有TAn位◆CANRMP. 清除所有RMPn位◆CANGIF0 清除除邮箱中断外的中断标志◆CANBTC 配置时序参数初始化方法可参见推荐教材中的函数InitECan ()三、实验要求1、熟悉实验系统中的CAN通信电路;2、掌握eCAN的功能设置和初始化、CAN通信的编程方法和发送、接收中断的处理;3、编写程序实现通过DSP的eCAN邮箱0向邮箱1发8个字节的数据。

4、在Watch window中观察邮箱1是否收到邮箱0发的数据。

四、实验步骤●在CCS中GEL files上单击右键,选择Load GEL中的F2812.gel项,然后选择菜单栏GEL/F2812/CAN regs,即可看到CAN寄存器的变量被显示到Watch window中。

●执行程序,观察CANBOX1中是否已收到发送的数据。

●改变通信波特率,考察保证正常通信所允许的最高波特率。

五、实验思考1、与串行通信接口(SCI)相比,采用eCAN通信接口有何特点?2、试比较并简述eCAN和SCI分别是如何实现多机通信的。

启动can模块及其发送程序

启动can模块及其发送程序

启动can模块及其发送程序一、CAN总线简介CAN(Controller Area Network)总线是一种串行通信协议,广泛应用于汽车、工业控制等领域。

它具有高速、可靠、抗干扰等优点,因此得到了广泛的应用。

二、CAN总线的启动方式1.硬件启动:通过硬件电路实现,可以自动完成CAN总线的初始化。

2.软件启动:需要通过编程实现CAN总线的初始化。

三、启动CAN模块的流程1.配置GPIO口:将GPIO口配置为CAN模块所需的功能。

2.初始化CAN模块:设置波特率、工作模式等参数,并开启CAN模块。

3.配置中断:根据需要配置中断,以便在接收到数据时能够及时处理。

4.发送数据:将要发送的数据写入发送缓存区,并触发发送操作。

四、启动CAN发送程序的流程1.创建socket:使用socket函数创建一个套接字。

2.绑定地址和端口号:使用bind函数将套接字与本地IP地址和端口号绑定。

3.设置目标地址和端口号:使用connect函数设置远程主机的IP地址和端口号。

4.循环读取输入数据并发送:使用send函数将输入数据发送给远程主机。

五、代码示例以下是一个基于STM32F103C8T6单片机的CAN发送程序示例:```#include "stm32f10x.h"#include "stm32f10x_can.h"void CAN_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;CAN_InitTypeDef CAN_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);NVIC_InitStructure.NVIC_IRQChannel =USB_LP_CAN1_RX0_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);CAN_DeInit(CAN1);CAN_StructInit(&CAN_InitStructure);CAN_InitStructure.CAN_TTCM=DISABLE;CAN_InitStructure.CAN_ABOM=DISABLE;CAN_InitStructure.CAN_AWUM=DISABLE;CAN_InitStructure.CAN_NART=ENABLE;CAN_InitStructure.CAN_RFLM=DISABLE;CAN_InitStructure.CAN_TXFP=ENABLE;CAN_InitStructur e.CAN_Mode=C AN_Mode_Normal ;C AN_InitStructur e.C AN_SJW=C AN_SJW_1tq ;C AN_InitStructur e.C AN_BS1=C AN_BS1_6tq ;C AN_InitStructur e.C AN_BS2=C AN_BS2_7tq ;C AN_InitStructur e.C AN_Prescaler=12 ;CAN_Init(CAN1, &CAN_InitStructure);CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);}void USB_LP_CAN1_RX0_IRQHandler(void){CanRxMsg RxMessage;if (CAN_GetITStatus(CAN1, CAN_IT_FMP0) != RESET) {CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); //处理接收到的数据CAN_ClearITPendingBit(CAN1, CAN_IT_FMP0);}}int main(void){uint8_t data[8] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};CAN_Configuration();while(1){//向ID为100的节点发送数据CanTxMsg TxMessage;TxMessage.StdId = 100;TxMessage.ExtId = 100;TxMessage.RTR = CAN_RTR_DATA;TxMessage.IDE = CAN_ID_STD;TxMessage.DLC = 8;for(int i=0; i<8; i++)TxMessage.Data[i] = data[i];if(CAN_Transmit(CAN1,&TxMessage)==CAN_NO_MB) break;Delay_ms(100);}}```六、总结启动CAN模块和发送程序需要仔细配置参数,确保通信正常。

《工业控制组态及现场总线技术》 6CAN总线的基本概念和技术标准

《工业控制组态及现场总线技术》 6CAN总线的基本概念和技术标准
来自一、总线的基本概念和技术标准
总线概念和报文格式
位仲裁
CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种 优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。当几个站同时发送报文时,站1的报 文标识符为011111;站2的报文标识符为0100110;站3的报文标识符为0100111。所有标识符都有相同的两位01,直到第3位进 行比较时,站1的报文被丢掉,因为它的第3位为高,而其它两个站的报文第3位为低。站2和站3报文的4、5、6位相同,直到第 7位时,站3的报文才被丢失。注意,总线中的信号持续跟踪最后获得总线读取权的站的报文。在此例中,站2的报文被跟踪。这 种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。所有 未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。 CAN具有较高的效率是因为总线仅仅被那些请求总线悬而未决的站利用,这些请求是根据报文在整个系统中的重要性按顺序处 理的。这种方法在网络负载较重时有很多优点,因为总线读取的优先级已被按顺序放在每个报文中了,这可以保证在实时系统 中较低的个体隐伏时间。对于主站的可靠性,由于CAN协议执行非集中化总线控制,所有主要通信,包括总线读取 (许可)控制, 在系统中分几次完成。这是实现有较高可靠性的通信系统的唯一方法。
一、总线的基本概念和技术标准
总线概念和报文格式
CAN总线概念
一、总线的基本概念和技术标准
总线概念和报文格式
CAN总线概念
应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻 辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法, 发送站可以保证网络中至少有一个站能正确接收到报文。报文的尾部由帧结束 标出。在相邻的两条报文间有一很短的间隔位,果这时没有站进行总线存取, 总线将处于空闲状态。

can总线的传输原理

can总线的传输原理

CAN总线的传输原理一、什么是CAN总线CAN总线(Controller Area Network)是一种广泛应用于汽车、工业领域以及其他领域的通信协议。

它是一种串行通信协议,能够实现多个设备之间的高速数据传输。

二、CAN总线的优点CAN总线相比其他通信协议具有以下几个优点:1.可靠性高:CAN总线采用差分信号传输,能够有效抵抗电磁干扰,提高数据传输的可靠性。

2.实时性好:CAN总线使用了非并行传输方式,可以实现实时数据的传输和处理。

3.扩展性强:CAN总线支持多主机和多设备并行通信,可以实现设备的灵活扩展和系统的模块化设计。

4.成本低廉:CAN总线采用了简单的硬件和软件实现方式,可以降低系统的成本。

三、CAN总线的传输原理CAN总线采用了一种基于事件驱动的传输方式,具体原理如下:1. 标识符和帧格式CAN总线的传输单位是帧(Frame),每个帧包括标识符(Identifier)、控制位(Control)、数据字段(Data)和校验位(CRC)。

其中标识符用于标识不同设备和数据类型,控制位用于控制数据传输的行为,数据字段用于存储实际传输的数据,校验位用于校验数据的准确性。

2. 差分信号传输CAN总线采用了差分信号传输,即使用两条线(CAN_H和CAN_L)传输数据。

在传输过程中,CAN_H和CAN_L的电压存在正负摆动,通过测量CAN_H和CAN_L之间的电压差来判断传输的数据是0还是1。

这种差分信号传输方式可以有效抵抗电磁干扰,提高数据传输的可靠性。

3. 碰撞检测和重发机制由于CAN总线支持多主机并行访问,可能会出现多个设备同时发送数据的情况,这时就会产生碰撞(Collision)现象。

为了解决碰撞问题,CAN总线采用了碰撞检测和重发机制。

当发生碰撞时,设备会检测到总线上的电压变化,通过退避算法重新发送数据,以确保数据传输的准确性。

4. 报文优先级CAN总线通过标识符来标识不同设备和数据类型,不同标识符的帧具有不同的优先级。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ECan总线模块
访问ECAN模块可分为控制/状态寄存器和32个邮箱的访问。

每个邮箱都有一个可编程接受屏蔽寄存器,其所占用的512字节RAM 都可以配置为发送或接收邮箱。

每个邮箱包括8字节数据区,29位标识符和几个控制位,每个邮箱都是有4个32位的寄存器构成。

即:
ECAN控制器总共有15个32位的控制寄存器,控制着位定时器、邮箱的发送或接收使能、错误状态及CAN中断等。

其控制寄存器的状态寄存器只能允许32位访问,而接收屏蔽、时间标识寄存器、超时寄存器和邮箱所在的CAN范围则可以以8位、16位和32位方式访问。

该程序中都是进行32位访问,通过设置影子寄存器可实现对位进行操作。

如以下程序:
struct ECAN_REGS ECanbShadow;
EALLOW; // EALLOW enables access to protected bits ECanbShadow.CANTIOC.all = ECanbRegs.CANTIOC.all;
ECanbShadow.CANTIOC.bit.TXFUNC=1; //发送
ECanbRegs.CANTIOC.all = ECanbShadow.CANTIOC.all;
EALLOW是指允许对受保护的寄存器操作,通常和EDIS配套使用,EDIS是指恢复被保护寄存器的状态。

#define EALLOW asm(" EALLOW")
#define EDIS asm(" EDIS") (device.h)
初始化CAN步骤:
1.使能GPIO口(GPIO8为CANTX,GPIO10为CANRX);
2.设置CANTX和CANRX为CAN的通信引脚;
3.选择是增强型还是标准型;
4.相关寄存器清零;(邮箱控制寄存器清0;复位TA;RMP寄存
器所有位置1,表示邮箱中存在发送的数据;清除所有中断标志)
5.设置时间配置寄存器的三个步骤(设置CCR=1,等待CER=1,
然后设置CANBTC);
ECanbShadow.CANMC.all = ECanbRegs.CANMC.all;
R = 1 ;
ECanbRegs.CANMC.all = ECanbShadow.CANMC.all;
ECanbShadow.CANES.all = ECanbRegs.CANES.all;
do
{
ECanbShadow.CANES.all = ECanbRegs.CANES.all;
} while(E != 1 );配置时钟程序此
处省略。

6.配置CANBTC,确认TSEG1和TSEG2不等于0,如果这两个同时为0,则CAN模块不能退出初始化模式。

波特率计算公式:
波特率=SYSCLK/BRP*BT /*BRPreg,TSEG1,TSEG2存在于
CANBTC寄存器*/
BRP=BRPreg+1
BT =TSEG1+1+TSEG2+1+1
7.设置CANMC寄存器的位,请求正常运行,设置CCR=0,等待CER=0;
8.禁用所有邮箱;ECanbRegs.CANME.all = 0;
9.通过对邮箱寄存器的配置设置扩展性和给每个邮箱设置地址;
10.将0-15个邮箱设置为Tx,16-31设置为Rx;
ECanbRegs.CANMD.all = 0xFFFF0000;
11.使能所有邮箱;ECanbRegs.CANME.all = 0x00010001;
12.设置邮箱控制寄存器的DLC位;
ECanbMboxes.MBOXn.MSGCTRL.bit.DLC = 8;(0<=n<=15)
指定数据为8位;
13.设置邮箱中断级别。

ECanbRegs.CANMIL.all = 0x00000000;
14.使能接收邮箱全局中断。

ECanbRegs.CANMIM.all = 0xFFFF0000;
15.使能中断0;
ECanbRegs.CANGIM.all = 0x00000001;
ECAN以报文的形式发送或接收信息,报文格式分为标准数据帧格式和扩展数据帧格式;
标准数据帧格式:
RTR位用于区分数据帧和远程帧。

对于标准数据帧,RTR位清零。

仲裁字段之后是一个6位的控制字段,提供关于报文内容的更多信息。

控制字段中的第一位是标识符扩展(Identifier Extension,IDE)位,用于区分报文是标准数据帧还是扩展数据帧。

在发送IDE位期间,标准数据帧使用显性状态(逻辑电平0)指示。

控制字段中的第二位是保留(RB0)位,该位处于显性状态(逻辑电平0)。

控制字段中的最后4位表示数据长度编码(Data LengthCode,DLC),它规定了报文中包含的数据字节数。

控制字段之后是数据字段。

该字段承载报文数据——数据帧的实际有效载荷。

该字段的长度可变,范围为0至8字节。

字节数可由用户选择。

数据字段之后是循环冗余校验(CRC)字段,由一个15位的CRC序列和一个定界符位组成。

应答(ACK)字段以隐性位(逻辑电平1)发送,会被已正确接收数据的任意接收器改写为显性位。

不论接收过滤器比较的结果如何,接收器总是会应答报文。

最后一个字段是帧结束字段,由7个隐性位组成,指示报文结束。

扩展数据帧格式:
扩展数据帧以SOF位开始,后面跟随一个31位的仲裁字段。

扩展数据帧的仲裁字段包含29个标识符位,这些位分布在由替代远程请求(Substitute Remote Request,SRR)位和IDE位隔开的两个字段中。

SRR位决定报文是否是远程帧。

对于扩展数据帧,SRR=0。

IDE位指示数据帧类型。

对于扩展数据帧,IDE=1。

扩展数据帧的控制字段由7位组成。

第一位是RTR。

对于扩展数据帧,RTR=0。

接下来两位RB1和RB0是保留位,处于显性状态(逻辑电平0)。

控制字段中的最后4位是数据长度编码,它规定了报文中包含的数据字节数。

扩展数据帧中的其余字段在结构上与标准数据帧相同。

IDE为隐性(逻辑1);SRR为显性(逻辑0);
RTR为显性(逻辑0);RB0为显性(逻辑0);RB1为显性(逻辑0)。

ECAN发送数据:
ECanbMboxes.MBOX0.MDL.all = mdl;
ECanbMboxes.MBOX0.MDH.all = mdh;
往发送邮箱中写数据,分别写低32位4字节和高32位4字节.
CanTrsData = 0x00000001;
ECanbRegs.CANTRS.all = CanTrsData;
置位准备发送,将发送请求位置位,使能邮箱发送功能.
while(ECanbRegs.CANTA.all != CanTrsData)
{
temp = ECanbRegs.CANES.all;
ECanbRegs.CANES.all = temp;
if(temp&0x00070000)
{
CanSndErr = 0x1;
break;
}
如果CANES(错误状态寄存器)中的EW(Warning status),EP(Error Passive status),BO(Bus-off status)位为1,则说明发送错误;退出发送。

}
当邮箱的消息被成功发送时,发送应答位TA将置1
if(CanSndErr)
{
ECanbRegs.CANTRR.all = CanTrsData;
} 如果发送错误,取消这次发送请求ECanbRegs.CANTA.all = 0x0000FFFF;
写1清零,准备判别下一次发送与否
ECAN接收数据:
if((ECanbRegs.CANRMP.all&0x10000)!=z0)
当接收消息成功是CANRNP(接收待决寄存器)置1;
ECanbRegs.CANRMP.all=0x10000;
接收待决位通过写1清0;接受待决位若不清0则无法继续接收数据;
*rec=ECanbMboxes.MBOX16.MDL.all;
*(rec+1)=ECanbMboxes.MBOX16.MDH.all;
*(rec+2)=ECanbMboxes.MBOX16.MSGID.all;
配置接收地址
while((ECanbRegs.CANRMP.all&0x10000)!=0)
当接收消息成功是CANRNP(接收待决寄存器)置1 ECanbRegs.CANRMP.all=0x10000;
接收待决位通过写1清0;。

相关文档
最新文档