基于LPC2292的CAN总线智能节点设计
发布时间:2008/6/3 0:00:00 访问次数:415
can(controller area network)总线控制器局域网络是在1986年2月的sae大会上,由roberbosch公司首先提出的。can总线是一种串行通信协议,它能有效支持高安全等级的分布式实时控制,其最初的目的是用在汽车上。但由于采用了许多新技术及独特的设计,can总线与一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性,目前的应用范围已不局限于汽车行业,而是扩展到了机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械、家用电器及传感器等诸多领域。can节点的设计多采用单片机,为此,本文给出了一种基于本身已经嵌入了can控制器的单片机lpc2292的can总线智能节点的设计方案。
1 lpc2292控制器
lpc2292是一个可以支持实时仿真和跟踪的16/32位arm7tdmi-s cpu微控制器,它带有256k字节的嵌人式高速flash存储器,并具有的128位宽度的存储器接口和独特的加速结构,可使32位代码在最大时钟速率下运行。而对代码有严格控制要求的应用则可使用16位thumb模式,这样可将代码规模降低30%以上,而性能的损失却很小。lpc2292采用144脚封装、可使用的gpio高达76(使用外部存储器)~112个(单片应用)、并具有极低的功耗。lpc2292内含多个32位定时器、4路10位adc、2路can以及多达9路外部中断等,特别适用于汽车、工业控制应用、医疗系统和容错维护总线。
lpc2292内部集成的2路can控制器符合can规范2.0b iso 11898-1;可访问32位的寄存器和ram;每个总线的数据速率为1 mb/s;全局验收滤波器可识别所有总线的11位和29位rx标识符;验收滤波器为选择的标准标识符提供有fullcan-style自动接收功能。
2 节点硬件电路设计
can总线的节点硬件主要包括lpc2292、cat1024、82c250、6n137以及b0505s。其中,lpc2292是节点的微处理器及can通信控制器,can总线驱动器采用82c250。为了增强can总线节点的抗干扰能力,在td1、rd1与82c250之间应通过高速光耦6n137相连,这样可以很好的实现总线上各can节点间的电气隔离。要注意的是:光耦电路部分采用的两个电源vcc和vdd必须完全隔离。这里的b0505s就起这个作用。另外,节点复位电路采用cat1024来提高其可靠性。
3 软件设计
该系统的软件调试可在ads1.2调试环境及easyjtag仿真器上进行。
和硬件电路设计相比,软件的设计相对来说要复杂些。can总线智能节点的软件设计主要包括三部分:can节点初始化、报文发送和报文接收。除此之外,还必须编写lpc2292的启动代码,即对系统进行初始化。
3.1 lpc2292的启动代码
启动代码包括异常中断向量表、堆栈初始化、目标板初始化及存储系统初始化等,一般都用汇编语言编写。这里不作详细介绍。
3.2 can控制器初始化
can总线控制器的初始化过程主要包括相应的引脚功能设置、工作方式设置、波特率参数设置以及出错警告界限设置等,下面是对can1的初始化代码(can2与之类似):
上面所述是对can控制器初始化的主要步骤,另外,还可以根据具体情况对其它can寄存器的值进行设置。
lpc2292中有个全局验收滤波器,该模块可为所有can控制器提供接收标识符的查询功能(即验收滤波)。另外,验收滤波器还可为选择的标准标识符提供fullcan-style自动接收功能。在上面对can控制器的初始化中,为了简化程序,设计时将验收滤波器设置为旁路。但在实际应用中,应根据需要对它进行设置。事实上,让它参与接收滤波的工作有助于改善节点接收信息的选择性。can控制器初始化完成后,即可开始发送和接收信息。
3.3 发送过程
发送子程序主要负责节点报文的发送。发送时,用户只需要将待发送的数据按特定的格式组合成一帧报文送入can控制器的发送缓存区,然后启动发送即可。当然,在向发送缓冲区送报文之前,必须先做一些判断。发送程序分为发送远程帧和数据帧两种,其中远程帧无数据场。
3.4 接收过程
接收子程序主要负责节点报文的接收以及其它情况的处理。接收子程序相对要复杂一些。因为在处理接收报文的过程中,同时也要对总线关闭、错误报警、接收溢出等情况进行处理。can控制器报文的接收主要有两种方式:中断接收方式和查询接收方式。如果对通信的实时性要求不是很强,建议采用查询接收方式。两种接收方式的编程思想基本相同。
4 结束语
该智能节点可利用easyjtag仿
can(controller area network)总线控制器局域网络是在1986年2月的sae大会上,由roberbosch公司首先提出的。can总线是一种串行通信协议,它能有效支持高安全等级的分布式实时控制,其最初的目的是用在汽车上。但由于采用了许多新技术及独特的设计,can总线与一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性,目前的应用范围已不局限于汽车行业,而是扩展到了机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械、家用电器及传感器等诸多领域。can节点的设计多采用单片机,为此,本文给出了一种基于本身已经嵌入了can控制器的单片机lpc2292的can总线智能节点的设计方案。
1 lpc2292控制器
lpc2292是一个可以支持实时仿真和跟踪的16/32位arm7tdmi-s cpu微控制器,它带有256k字节的嵌人式高速flash存储器,并具有的128位宽度的存储器接口和独特的加速结构,可使32位代码在最大时钟速率下运行。而对代码有严格控制要求的应用则可使用16位thumb模式,这样可将代码规模降低30%以上,而性能的损失却很小。lpc2292采用144脚封装、可使用的gpio高达76(使用外部存储器)~112个(单片应用)、并具有极低的功耗。lpc2292内含多个32位定时器、4路10位adc、2路can以及多达9路外部中断等,特别适用于汽车、工业控制应用、医疗系统和容错维护总线。
lpc2292内部集成的2路can控制器符合can规范2.0b iso 11898-1;可访问32位的寄存器和ram;每个总线的数据速率为1 mb/s;全局验收滤波器可识别所有总线的11位和29位rx标识符;验收滤波器为选择的标准标识符提供有fullcan-style自动接收功能。
2 节点硬件电路设计
can总线的节点硬件主要包括lpc2292、cat1024、82c250、6n137以及b0505s。其中,lpc2292是节点的微处理器及can通信控制器,can总线驱动器采用82c250。为了增强can总线节点的抗干扰能力,在td1、rd1与82c250之间应通过高速光耦6n137相连,这样可以很好的实现总线上各can节点间的电气隔离。要注意的是:光耦电路部分采用的两个电源vcc和vdd必须完全隔离。这里的b0505s就起这个作用。另外,节点复位电路采用cat1024来提高其可靠性。
3 软件设计
该系统的软件调试可在ads1.2调试环境及easyjtag仿真器上进行。
和硬件电路设计相比,软件的设计相对来说要复杂些。can总线智能节点的软件设计主要包括三部分:can节点初始化、报文发送和报文接收。除此之外,还必须编写lpc2292的启动代码,即对系统进行初始化。
3.1 lpc2292的启动代码
启动代码包括异常中断向量表、堆栈初始化、目标板初始化及存储系统初始化等,一般都用汇编语言编写。这里不作详细介绍。
3.2 can控制器初始化
can总线控制器的初始化过程主要包括相应的引脚功能设置、工作方式设置、波特率参数设置以及出错警告界限设置等,下面是对can1的初始化代码(can2与之类似):
上面所述是对can控制器初始化的主要步骤,另外,还可以根据具体情况对其它can寄存器的值进行设置。
lpc2292中有个全局验收滤波器,该模块可为所有can控制器提供接收标识符的查询功能(即验收滤波)。另外,验收滤波器还可为选择的标准标识符提供fullcan-style自动接收功能。在上面对can控制器的初始化中,为了简化程序,设计时将验收滤波器设置为旁路。但在实际应用中,应根据需要对它进行设置。事实上,让它参与接收滤波的工作有助于改善节点接收信息的选择性。can控制器初始化完成后,即可开始发送和接收信息。
3.3 发送过程
发送子程序主要负责节点报文的发送。发送时,用户只需要将待发送的数据按特定的格式组合成一帧报文送入can控制器的发送缓存区,然后启动发送即可。当然,在向发送缓冲区送报文之前,必须先做一些判断。发送程序分为发送远程帧和数据帧两种,其中远程帧无数据场。
3.4 接收过程
接收子程序主要负责节点报文的接收以及其它情况的处理。接收子程序相对要复杂一些。因为在处理接收报文的过程中,同时也要对总线关闭、错误报警、接收溢出等情况进行处理。can控制器报文的接收主要有两种方式:中断接收方式和查询接收方式。如果对通信的实时性要求不是很强,建议采用查询接收方式。两种接收方式的编程思想基本相同。
4 结束语
该智能节点可利用easyjtag仿