当前位置:首页 > 单片机 > 单片机
[导读] 随着信息技术的飞速发展,基于ARM在嵌入式系统方面的优势和CAN总线的广泛应用,目前越来越多的ARM处理器内部自带了CAN控制器,极大的方便了开发人员对CAN总线的开发。本课题是基于ARM2104的微处理器C

随着信息技术的飞速发展,基于ARM在嵌入式系统方面的优势和CAN总线的广泛应用,目前越来越多的ARM处理器内部自带了CAN控制器,极大的方便了开发人员对CAN总线的开发。本课题是基于ARM2104的微处理器CAN总线系统节点开发,采用CAN总线可以将节点控制器直接安装在现场,数据经处理后发送到总线上,实现了信息的全数字方式传输,提高了传输的抗干扰能力,增加了信息的传输量。

总体设计方案

本课题中所设计的是CAN总线系统节点,系统节点结构图如图1。

图1 系统节点结构图

CAN总线系统应用要求:CAN总线接口的扩展、点对点通信。

CAN节点的设计主要是CAN通信控制器与微处理器之间、CAN总线收发器与物理总线之间的电路的设计。微控制器主要负责CAN控制器的初始化,进行与CAN控制器的数据传递,并按照预定的程序进行处理;CAN的通信协议主要由CAN控制器完成,CAN控制器主要负责将数据以CAN报文的形式传递,并进行系统的诊断、测试以及处理CAN总线上的错误等;而CAN总线收发器是CAN控制器和CAN总线之间的接口,完成物理电平的转换,功能是增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰(RFI)。

通常一个完整的CAN节点应该包括三个部分:微控制器、CAN控制器、CAN收发器。目前广泛流行的CAN总线器件有两大类:一类是独立的CAN控器,另一类是带有在片CAN的微控制器。

CAN节点硬件电路设计

对于CAN节点硬件电路的的各接口电路的设计有:CAN接口电路、CPU模块、外围电路(复位电路和JATG接口电路)。其中CPU及电源电路如下图2所示:

图2 CPU及电源模块

LPC2104要使用两组电源,I/O供电电源为3.3V应用系统。首先,电源DW1将电源整流,经过C1、C3滤波,然后通过78M05将电源稳压至5V,再使用LDO芯片(低差压电源芯片)稳压输出3.3V及1.8V电压。LD0芯片采用S-1131B33UC和S-1131B18UC,其特点为输出电流大、精度高、稳定性高、功耗低。

设计中的CPU芯片与控制器SJA1000的配脚图如图3所示。

图3 模拟总线硬件图

CAN节点的软件设计

CAN节点的软件设计主要包括ARM处理器的编程和SJA1000驱动程序的设计。在硬件电路确定以后,系统控制的主要功能将依赖于软件来实现。系统能否正常可靠的工作,除了硬件的合理设计以外,与功能完善的软件设计是分不开的。

软件程序流程图如下图4所示:

图4 主程序流程图

配置软件包使用的GPIO必须在文件config.h中进行,其程序清单如列表1所示,其中程序清单(1)设置地址总线的宽度,只能为8、16、和24三个值之一。清单(2)设置信号AD0对应GPIO,其中0对应P0.0,1对应P0.1,以此类推。地址/数据总线的其它信号以这个信号为基准,顺序定义。清单(3)信号ALE对应GPIO,其中0对应P0.0,1对应P0.1,以此类推。清单(4)信号WR对应GPIO,其中0对应P0.0,1对应P0.1,以此类推。

程序清单列表1 配置总线使用的GPIO

#define ADDR_N_BIT 16 (1)

#define AD0_PIN_NUM 8 (2)

#define ALE_PIN_NUM 0 (3)

#define WR_PIN_NUM 1 (4)

#define RD_PIN_NUM 4 (5)

#include“exbus.h” (6)

本系统CAN控制器采用SJA1000,SJA1000控制器在微控制器正常通讯前,都必须先在相应地址寄存器中加载,确定接收标识码、总线接收波特率以及输出控制等,这就是CAN控制器的初始化。系统所用的CAN总线控制器SJA1000和CAN2.0A以及CAN2.0B两个版本的协议同时兼容。本系统设计以CAN2.0A的BasICCAN为协议标准进行设计。

测试之前编写的程序前首先要确定SJA1000的片选地址,确定与其他外部存储器无冲突。其次,微处理器对SJA1000的控制访问是以外部存储器的方式,来访问SJA1000的内部寄存器,所以应该正确定义微处理器访问SJA1000时,SJA1000内部寄存器的访问地址。

整个流程进行测试之后,SJA1000有8个不同的中断,这些中断可使主控制器立即作用在CAN控制器的某些状态上。一旦CAN产生中断,SJA1000就将中断输出(管脚16)设为低电平,直到主控制器通过读SJA1000的中断寄存器对中断采取相应措施,在主控制器响应后中断,或接收INFO里有更多有效数据,SJA1000立刻将中断输出再次设为低电平。采用中断接收的方式来接收数据,LPC2104的P0.16设置为外部中断INT,整个数据接收模块由数据接收函数void ReceivEDAta(uint8 *Rt)、中断处理函数CANException(void)构成。当SJA1000接收到CAN总线数据,通过接收中断使得LPC2104产生外部中断INT而使其进入中断处理函数,进而对接收到的数据进行处理。


可想,在CAN节点的软件设计的整个流程中,当硬件电路确定以后,系统控制的主要功能将依赖于软件来实现,并且能够正常可靠的工作。

结论

以ARM芯片作为主控制器,CAN总线作为数据传输方式来进行通讯的嵌入式系统得到了越来越广泛的应用。同时CAN通讯的可靠性也成为影响系统性能的关键部分之一。


本文以LPC2104为例,给出了一类微处理器与CAN控制器SJA1000之间的较为通用的硬件连接方法,对CAN总线节点进行了可靠性设计,采用CAN总线可以将节点控制器直接安装在现场,数据经处理后发送到总线上,实现了信息的全数字方式传输,提高了传输的抗干扰能力,增加了信息的传输量。

该设计现已在工厂车间中的车身控制系统中得到了应用,且运行可靠。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭