当前位置:首页 >> 职高对口 >>

基于ARM的CAN总线智能节点的设计.

基于 ARM 的 CAN 总线智能节点的设计
基于 ARM 的 CAN 总线智能节点的设计 类别:模拟技术 CAN(ControllerAreaNetwork)即控制器局域网,CAN 总线是国际上应 用最广泛的现场总线之一。它最早是由德国 Bosch 公司推出的,CAN 通信协议 是一种用于汽车内部测量与执行部件之间的数据通信协议。 作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯 控制方式,CAN 总线已被广泛应用于各个自动化控制系统中。例如,在汽车电 子、自动控制、智能大厦、电力系统、安防监控等各领域中,CAN 总线具有不 可比拟的优越性。本设计给出 CAN 总线节点方案。它采用内置多路 CAN 总线控 制器的 LPC2294 作为主控制器,使得该节点体积小、功耗低、抗干扰性好,因 而特别适用于汽车、工业控制以及医疗系统和容错维护总线中。 1 硬件设计 1.1LPC2294 的特点 ARM7 系列具有 ARM7TDMI 内核的 32 位嵌入式微处理器是目 前应用很广的嵌入式 RISC 处理器。该系列芯片体积小、功耗低、成本低,高性 能与灵活性相结合,有较多的寄存器,提供了扩充的增强的固定长的 16/32 位 双指令集。用 16 位的 Thumb 指令可以节省高达 35%的空间。另外它还实行流水 线作业,提供嵌入式 ICE2RT 逻辑,支持片上断点和调试点支持,具有先进的软 件开发和调试环境。 本设计选用的 LPC2294 是 PHILIPS 公司新推出的一款功能 强大的超低功耗的具有 ARM7TDMI 内核的 32 位微控制器。144 脚封装、两个 32 位定时器、八路 10 位 ADC、四路 CAN 通道和 PWM 通道以及多达九个的外部中 断,内部嵌入 256K 字节高速 Flash 存储器和 16K 字节静态 RAM,包含 76(使用 了外部存储器)~112(单片)个 GPIO 口。如此丰富的片上资源完全可以满足一般 的工业控制的需要,同时还可以减少系统硬件设计的复杂度。另外,LPC2294 支持 JTAG 实时仿真和跟踪、128 位宽度的存储器接口和独特的加速结构,使 32 位代码能够在高达 60MHz 的操作频率下运行。 LPC2294 内部集成有四路 CAN 控 制器:符合 CAN 规范 CAN2.0B,ISO11898-1 标准;总线数据波特率均可达 1Mbps;可访问 32 位的寄存器和 RAM;全局验收过滤器可识别几乎所有总线的 11 位和 29 位 Rx 标识符;验收过滤器为选择的标准标识符提供了 FullCANstyle 自动接收功能。 作为本设计的核心部件,LPC2294 不仅担负起主控制器 的作用,同时还作为 CAN 网络的节点控制器,与网络中的其它节点实现数据传 输与交换。 1.2CAN 节点硬件电路组成 CAN 节点硬件电路如图 1 所示,由 ARM 微控制器 LPC2294、CAN 总线收发器 TJA1050T、高速光耦 6N137 和电源隔离模 块 B0505S 等组成。 主控芯片 LPC2294 的晶振频率范围为 1~30MHz。本设计选晶振频率为 20MHz,通过设置内部的 VPB 分频器可以提高 CPU 时钟频率。内部 256K 字节的 高速 Flash 存储器用于代码和数据的存储。对于 FLASH 存储器,可通过内置的 串行 JTAG 接口进行在系统编程(ISP),或进行在应用编程(IAP)。为了便于调试 和系统升级,在设计中可以预留这些接口电路。 LPC2294 采用双电源供电。 CPU 的供电电压范围为 1.65~1.95V(1.8V±8.3%),I/O 的供电电压范围为

3.0~3.6V(3.3V±10%)。 收发器 TJA1050T 是 CAN 协议控制器和物理总线之间的 接口,它与“ISO11898”标准完全兼容。CANH 和 CANL 理想配合,可使电磁辐 射减到更低。除此之外,TJA1050T 不上电时,总线呈现无源特性,这使得 TJA1050T 在性能上大大优于以前的 CAN 总线收发器。TJA1050T 有两种工作模 式:高速模式和静音模式(它们由引脚“S”来控制)。在高速模式中,总线输出 信号有固定的斜率,并且以尽量快的速度切换。高速模式适用于最大位速率和 最大总线长度的情况,而且此时其收发器循环延迟最小。静音模式时发送器是 禁能的,它不管 TxD 的输入信号。静音模式可以防止 CAN 控制器不受控制时对 网络通讯造成堵塞。 1.3 硬件的抗干扰设计 在本设计所应用的场合中,产生 电磁信号的设备较多,包括超短波设备、音频设备、电源等,因此抗干扰设计 显得尤其重要。主要采取了以下措施: (1)为了进一步提高 CAN 总线节点的抗 干扰能力,保证各节点之间在电气上是完全隔离和独立的,LPC2294 的 TX0 和 RX0 分别通过高速光耦 6N137 与 TJA1050T 的 TXD 和 RXD 相连。不过,应该特别 说明的是,光耦部分电路所采用的两个电源必须完全隔离,否则采用光耦也就 失去了意义。电源的完全隔离采用小功率电源隔离模块 B0505S。电路虽复杂一 些,但是却提高了节点的稳定性和安全性。 (2)在 CAN 总线的两端加有两个 120Ω 的电阻,这两个电阻对于总线阻抗的匹配起着相当重要的作用。去掉它 们会使数据通信的抗干扰性及可靠性大大降低,甚至无法通信。 (3)CANH 和 CANL 与地之间并联了两个 30pF 的小电容,可以滤除总线上的高频干扰并且具 有一定的防电磁辐射的能力;在两根 CAN 总线接入端之间并入了 5.6V 的 TVS 管,当 CAN 总线窜入电压干扰时可通过 TVS 管的短路起到一定的过压保护作 用。 (4)为了减小现场对节点的干扰,采用屏蔽双绞线,且根据实际使用经 验,屏蔽电缆的屏蔽层无需接地。 2 软件设计 软件调试环境采用 ARM 公司的 ARM 核处理器集成开发工具 ADSv1.2。ADSv1.2 集成了汇编、C、C++编译器和调 试器,编译效率高,提供了功能强大的系统库,支持软件调试、JTAG 仿真调试 及硬件调试。本设计采用的是 JTAG 仿真调试。 对于一般的 32 位 ARM 应用系 统,在运行主程序前必须初始化运行环境,即为 ARM 芯片编写启动代码。该启 动代码包括异常向量表、堆栈初始化、存储系统初始化和目标板初始化等,一 般用汇编语言编写。对于该设计来说,关键的是编写 CAN 驱动程序。主程序只 需通过调用驱动程序提供的接口来实现数据的接收和发送。驱动程序包括四部 分内容:CAN 控制器的初始化、接收数据、发送数据和总线异常处理。图 2 为 主程序流程图。 2.1CAN 控制器初始化 初始化 CAN 控制器的操作包括:硬件使能、软 件复位、设置报警界限、设置总线波特率、设置中断工作方式、设置验收滤波 器工作方式、设置工作模式并启动 CAN 等。初始化程序如下: HwEnCAN(CanNum);//硬件使能,CanNum=0~3,指四路 CAN 控制器 SoftRstCAN(CanNum);//软件复位寄存器 CANEWL(CanNum).Bits.EWL_BIT=USE_EWL_CAN[CanNum];//设置错误警告界限 CANBTR(CanNum).Word=USE_BTR_CAN[CanNum];//初始化波特率 VICDefVectAddr=(UINT32)CANIntPrg; //初始化中断为非向量中断 VICIntEnable|=(1<<19)|(1<<(20+CanNum))|(1<<(26+CanNum)); CANIER(CanNum).Word=USE_INT_CAN[CanNum]; CANAFMR.Bits.AccBP_BIT=1;// 配置验收滤波器(旁路状态,即屏蔽验收滤波器) CANMOD(CanNum).Bits.TPM_BIT=USE_TPM_CAN[CanNum];//初始化工作模式

CANMOD(CanNum).Bits.LOM_BIT=USE_MOD_CAN[CanNum]; SoftEnCAN(CanNum);// 启动 CAN LPC2294 片内外设与引脚的连接由引脚连接模块控制。CAN 控制器的 硬件使能就是通过软件设置 GPIO 寄存器来控制多路开关的,将特定的引脚与 CAN 控制器连接起来。在设置各 CAN 寄存器之前必须进行软件复位,这是因为 CAN 的某些寄存器必须在软复位状态下读写。 值得注意的是,LPC2294 为所有 的 CAN 控制器提供了全局接收标识符查询功能。2K 字节的接收过滤用 RAM 可容 纳 1024 个标准标识符或者 512 个扩展标识符或两种类型混合的标识符。通过软 件处理,可在该 RAM 中设置存放 1~5 个标识符表格。与独立 CAN 控制器 SJA1000 相比,它能更容易地对任意复杂的 ID 进行筛选过滤,满足复杂的 ID 的接收过滤要求。这无疑大大减少了系统软件设计复杂度及运行时的负担。设 置验收滤波器工作方式,必须首先创建 LUT 表格,指定每个表格的起始地址, 并用实际的 ID 地址初始化该表格。最后设定验收过滤器模式寄存器。若该节点 不主动发送数据,可选择在总线不活动时进入睡眠模式。 2.2 数据发送 将待 发送的数据打包成符合 CAN 协议的帧格式后,便可写入发送缓冲区,并启动发 送。图 3 为发送子程序流程图。 在写发送缓冲区前必须查询其状态。LPC2294 中的每个 CAN 控制器有 三个发送缓冲区,它们的状态可通过查询 CANSR 得知。只有当其中有空闲的发 送缓冲区时才可将数据写入。在发送大量数据时,这一步显得尤其重要,否则 发送可靠性将不能保证。启动发送成功后,只能通过查询 CANGSR 的 TCS 位或配 合发送成功中断来判断数据是否发送成功。 2.3 数据接收 接收数据可采用查 询方式或中断方式。在某一段时间内,CAN 总线并不总是在活动,为了提高效 率,可采用中断方式。在初始化程序中必须使能接收中断。在中断服务子程序 中,读取 CANICR,判断是否有接收中断标志,有则读取接收缓冲区数据。为了 防止接收缓冲区数据溢出,可开辟一个循环接收数据队列来暂时存储数据,主 程序则通过查询该队列来获得总线数据。 2.4 异常情况处理 在总线发生严重 故障的情况下,CAN 节点有可能脱离总线,此时以下寄存器位被置位:CANSR 的 BS 位、CANIR 的 BEI 位和 EI 位(如果使能)和 CANMOD 的 RM 位。RM 将许多 CAN 控制器功能复位和禁止。软件下一步必须置零 RM 位。发送错误计数器将递减计 数总线释放条件(11 个连续的隐性位)的第 128 个事件。软件可通过读取 Tx 错 误计数器对计数器递减计数的情况进行监测。 在应用中,若前面传输到 CAN 控 制器的数据未被读出,而接收缓冲区又没有及时释放,就有可能引起后面信息 的丢失。这时必须通过写命令寄存器来清除 CANSR 的数据溢出位。这两种异常 可通过异常中断来处理,只要在中断子程序中加入处理代码即可。其它的总线 异常处理可根据使用情况决定是否在软件中处理。 总之,软件的编写和规划相 当重要。ARM7TDMI 指令集是基于 RISC 的,具有 32 位 ARM/16 位 Thumb 双指令 集,ARM/Thumb 程序可通过改写程序状态寄存器 CPSR 相互调用。因此,为了提 高程序代码密度,某些对性能要求不高的代码可用 Thumb 指令集编写。 由于该 方案体积小、功耗低、抗干扰性好,现已应用于电磁环境复杂的某车载通信设 备中,满足了该项目对 CAN 网络节点的要求。


相关文章:
基于ARM的CAN总线智能节点的设计..doc
基于ARM的CAN总线智能节点的设计. - 基于 ARM 的 CAN 总线智能节
基于ARM的CAN总线智能节点在织机中的设计与应用_论文.pdf
基于ARM的CAN总线智能节点在织机中的设计与应用 - 介绍了一种基于ARM的CAN总线控制网络技术在织机中的应用,提出织机生产线上的嵌入式微控制器的设计方案,着重...
基于CAN总线的智能节点设计_图文.pdf
基于CAN总线的智能节点设计 - CAN总线技术的智能节点,包括总体方案、硬件设计、软件设计等。完整论文原文!!!支持复制,非图片。
ARM的CAN总线控制系统智能数据采集节点的设计_论文.pdf
ARM的CAN总线控制系统智能数据采集节点的设计 - 提出了一种基于ARM7微控制器LPC2292的CAN总线分布式控制系统智能数据采集节点的设计,给出了系统硬件框图,数据采集、...
CAN总线智能节点设计..doc
CAN总线智能节点设计. - CAN 总线智能节点设计 现场总线是自动化领域的计
基于CAN总线的智能节点设计.pdf
基于CAN总线的智能节点设计 - 第 20 卷 第 24 期 电子设计工程 Vo
基于CAN总线技术智能节点的设计和研究.pdf
蒋 荣 ? 基于 CAN 总线技术智能节点的设计和研究 基于 CAN 总线技术智能节点的设计和研究蒋 荣(南京工程学院 机械系, 江苏 南京 210013 ) 摘 要: 具有高性能...
基于单片机的CAN智能总线节点的设计.pdf
基于单片机的CAN智能总线节点的设计 - 基于单片机介绍了CAN总线节点的硬件电路结构和软件设计流程图。完成一个CAN智能节点的主要电路的设计和对于单片机的软件设计中SJA...
基于CAN总线的的智能节点设计.pdf
基于CAN总线的的智能节点设计 - 本文介绍了通过CAN总线[1]实现的多主机低成本远程智能通信节点的设计,具有传输距离远,通信速度快,通信可靠性高,成本低等优点,特别...
基于CAN总线智能节点通信接口的设计.pdf
基于CAN总线智能节点通信接口的设计_信息与通信_工程科技_专业资料。第17卷第
基于Mega8单片机的CAN总线智能节点设计_图文.pdf
基于Mega8单片机的CAN总线智能节点设计 - 总线与网络 孙道宗等 : 基于 Mega8 单片机的 CAN 总线智能节点设计 基于 Mega8 单片机的 CAN 总线智能节点设计 孙道宗...
基于C8051F550的CAN总线智能节点的设计.txt
基于C8051F550的CAN总线智能节点的设计 CAN总线最早是德国的BOSCH公司为解决汽车...基于ARM的CAN总线智能节... 5页 免费 基于DSP的CAN总线智能节... 4页 1...
CAN+总线在基于ARM嵌入式数控系统中的应用_图文.pdf
王富春.龙佳庆 CAN总线接口扩展设计在ARM上的实现[期刊论文]-中国新技术新产品2010(2) 3. 高红玉.徐建城.曾成奇 基于ARM的CAN总线智能节点的设计[期刊论文]-...
基于Mega16的CAN总线智能节点设计.pdf
基于Mega16的CAN总线智能节点设计 - 单片机接口技术 文章编号 :100
基于LPC2292的CAN总线智能节点设计.txt
基于LPC2292的CAN总线智能节点设计 引言CAN(Controller Area Network)总线控制器...1 LPC2292控制器 LPC2292是一个可以支持实时仿真和跟踪的16/32位ARM7TDMI-S ...
基于AT89C51型单片机的CAN总线智能节点设计.txt
基于AT89C51型单片机的CAN总线智能节点设计 1 引言 CAN(Contr
基于单片机CAN总线AO智能节点设计讲解_图文.ppt
基于单片机CAN总线AO智能节点设计讲解 - 基于单片机的CAN总线AO节点设计 指导老师:罗雪莲 学生姓名:汤果军 1. 任务书 ? 1、利用单片机89C51、CAN总线控制器、 ...
基于单片机AT89C51的CAN总线智能节点设计.pdf
应用】 基 于单 片机 AT958C 1的CN 总线智能节点设 计 A刘长泉 张
基于SJA1000的CAN总线智能节点设计_图文.pdf
《工业控制计算机》 2015 年第 28 卷第 2期 5 基于 SJA1000的CAN 总线智能节点设计DesignofCANBuslntelligentNodeBasedonSJA1000河南 洛阳 471009) 贾长春 (中航...
基于C8051F550的CAN总线智能节点的设计.pdf
基于C8051F550的CAN总线智能节点的设计 - 基于 C8051F550 的 CAN 总线智能节点的设计 摘要:简单介绍了 CAN 总线的特点与构成。详细介绍了主节点的工作过程和从...
更多相关标签: