APP下载

基于ARM9的USB与多通道CAN转换器的设计

2010-07-02杨晔曲波

电子技术应用 2010年2期
关键词:集线器寄存器总线

杨晔,曲波

(苏州大学 电子信息学院,江苏 苏州 215021)

USB是电脑主流的外围串行总线,是一种新型、快速、双向、同步传输、并可以热插拔的数据传输总线。CAN总线是拥有多主节点、开放式架构、错误检测及自恢复能力等优势的一种总线。但一般工控机不具有CAN总线接口,需要专门的接口卡才能连接,并且专用接口卡成本较高,连接不便。而USB的即插即用特性可以解决了上述问题。目前性价比高的USB-CAN数据转换器比较少见,而且能应用的CAN通道数较少,一般只有1~2路。如要应用于大型的CAN总线网络,CAN接口不够用,而使用开发商提供的各种USB-CAN接口适配器,就会出现各参数及CAN总线的配置不统一的问题。为了解决了这个问题,本文提出了一种 USB与多通道CAN转换器的设计方案。

本设计基于ARM9处理器和SJA1000 CAN控制器,能较好地以低成本实现USB与CAN之间的传输。此转换器可以作为“测试工具”应用于汽车电子,也可以作为“工业控制设备”应用于工业控制现场。

1 模块结构的总体设计

本设计将具有远距离传输能力的CAN总线与即插即用的USB接口相结合,即利用USB接口方便的特性来实现CAN总线和主机的连接。并且扩展了8路通道的CAN总线,高效地扩大了CAN总线的应用范围。USB-CAN转换器的总体框图如图1所示。

图中,RS232串口用于系统的调试,RJ45接口用于调试同时也作为将来系统的扩展使用。本设计自带8路CAN接口和2路LIN接口,实现USB与 CAN总线的数据双向传输。

图1 接口模块总体框图

2 硬件设计

2.1 ARM处理器和USB接口的设计

本设计的核心处理器是ARM9系列的S3C2440。考虑到三星S3C2440是BGA封装,需要特殊的焊接工艺,所以本设计采用核心板+底板的形式。核心板的外部存储器配置是64 MB SDRAM和64 MB NAND Flash。

更重要的是,S3C2440内置了USB控制器,无需再外扩USB控制器,节省了成本。其内置USB控制器完全兼容USB1.1协议,支持全速设备;集成USB收发器,支持Control、Interrupt和Bulk 3种传输模式;具备5个FIFO的通信端点,其中Bulk端点支持DMA操作方式,接收和发送均由64 B的FIFO完成;支持挂起和远程唤醒功能。

在USB接口设计上,为了避免由于外部设备或电缆中介入高电压干扰,造成计算机USB接口甚至主板的烧坏,本设计还考虑了USB接口的隔离保护,并选用SN65220芯片作为接口的保护芯片,其电路如图2所示。

图2 USB接口原理图

图中,USB_SELECT是微处理器用来控制USB设备与主机连接的信号。当主机集线器检测新设备时,集线器监视着每个USB设备端口的信号电压,集线器端口的2根信号线的每1根都有15 kΩ的下拉电阻,而每一个设备在 DP1(即 D+)都有1个1.5 kΩ的上拉电阻。当用USB线将PC和USB设备接通后,设备的上拉电阻使信号线的电位升高,因此主机集线器可以检测到USB设备[1]。本设计使用 USB_SELECT来控制 1.5 kΩ的上拉电阻,当处理器给USB_SELECT 1个高电平时,这时DP1信号线上的电压升高,主机集线器就会检测到此USB设备,然后开始USB的设备枚举;当USB_SELECT为低电平时,则表示没有设备连接到主机。这样就可以通过USB_SELECT信号的高低来控制设备与主机的连接。

2.2 CAN节点的设计

CAN节点使用Philips公司的独立CAN总线控制器SJA1000,收发器采用高速的TJA1050,它增强了电磁兼容(EMC),且在不上电的时候使总线呈现无源特性。CAN单元模块负责CAN信息帧的收发和CAN协议的实现,接口管理逻辑负责同外部主控制器的接口,该单元的每1个寄存器都可以由主控制器通过SJA1000的地址/数据复用总线访问。

SJA1000提供的微处理器的接口信号主要有AD0~AD7共 8根地址数据复用线, 以及 ALE、CS、RD、WR、MODE、RESET和 INT信号。其中,MODE为接口方式选择信号,本设计将 MODE接VCC高电平,选用Intel模式。接口电路如图3所示。

RESET复位信号由主控制器S3C2440统一控制,振荡信号CLK由1个16 MHz的晶振统一提供。另外,ALE、CS、RD、WR和 INT信号需要经过 CPLD接口逻辑转换后才能与SJA1000连接。当芯片被片选信号CS选中后,地址信号首先出现在复用总线上,经ALE信号锁存后才可以对数据进行读写操作[2]。

由于系统设计的是8通道CAN的转换器,所以共有8个CAN单元并列组成CAN通信模块。其8通道的数据地址总线扩展的主要思想是把每个SJA1000(CAN控制器)的寄存器映射到ARM9内存地址空间的某个地址,通过内存访问指令,访问SJA1000的内部寄存器。

2.3 复杂可编程逻辑器件(CPLD)的设计

由于微处理器S3C2440的地址与数据总线是分离的,而SJA1000的数据与地址线是分时复用的,两者总线接口之间存在差异性,因此必须对S3C2440的读写时序进行逻辑变换,使其满足SJA1000的接口要求才能使二者配合工作。

图3 CAN节点原理图

本模块选用了Altera公司的MAX3000系列可编程逻辑器件EPM3128芯片。EPM3128具有128个宏单元,80个用户I/O管脚,2 500个可用门和ISP,管脚间延迟为 10 ns,计数器速度可高达 100 MHz,可以很好地满足系统的需要。

在本设计中,CPLD需要完成2个功能:(1)完成S3C2440的地址数据非复用总线到SJA1000的地址数据复用总线的双向转换;(2)通过对S3C2440的地址线译码,进行多通道扩展(本设计扩展为8通道)。

通过对S3C2440与SJA1000读写时序的分析,可用如下的逻辑关系来完成2种不同总线的转换:

其中,ALE、CS、WR、RD 是 SJA1000的总线控制信号,nGCS2、nWE、nOE、A0为 S 3C2440的总线控制与地址信号。根据以上的逻辑关系,利用QuartusII的原理图输入方式,可以得到如图4所示的单通道的硬件图。

8通道的扩展,则利用更多的地址线编码,再通过CPLD译码即可实现。

3 软件设计

3.1 系统的总体设计方案

USB-CAN转换器的工作方案如下[3-4]:

(1)下行传输:上位机输出数据发送到USB设备。上位机可以在任意时间按照协议要求把数据发送到USB设备的缓冲区,USB设备尽快把缓冲区中的数据发送到CAN总线。

(2)上行传输:USB缓冲区中的数据输入到上位机。首先,USB设备通过查询方式不断检查CAN总线是否有输入的数据,若有数据存入CAN缓冲区,上位机输出“读CAN总线请求”到USB设备,USB设备再根据请求的内容确定是否获取到需要的数据,将获取到的数据写入USB设备的发送缓冲区;若没有数据存入CAN缓冲区,则按照协议的格式,回应“没有收到数据”。

3.2 CAN节点的软件设计

CAN总线节点的通信程序主要包括3个部分:CAN初始化、数据的发送和数据的接收。初始化程序主要是对SJA1000的初始化设置,包括:工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器和验收代码寄存器的设置、波特率的设置和中断允许寄存器的设置。SJA1000的初始化工作要在复位模式下才能进行。初始化设置后就可以回到工作状态,进行正常的通信任务。CAN控制器的初始化是CAN总线系统设计中极为重要的一个部分,是系统正常工作的前提[5]。初始化过程如图5所示。CAN控制器从上电到正常工作,一般需要经过硬件和软件的配置。软件的初始化函数为:

int SJA1000_Init(struct CanConfig&config,unsigned char channel);

参数说明:struct CanConfig是 SJA1000配置信息的结构体;channel是通道选择,如果成功则返回 0,如果不成功,则返回不为0。

图5 SJA1000初始化流程图

对于数据的发送程序,发送时用户只需将待发送的数据按特定格式组合成1帧报文,送入SJA1000发送缓冲区中,然后启动SJA1000发送即可。每帧发送之后,可以通过发送中对安置软件发送成功标志,发送程序通过对成功标志的查询来进行相应的处理。其实现函数如下:

void SJA1000_Write (structCanFrame&frame,unsigned char channel);

参数说明:struct CanFrame结构体是CAN的帧格式,channel是通道选择。

接收程序要比发送程序复杂,采用中断接收方式,这样可以更有效地接收数据。通过读取SJA1000中断状态寄存器进行接收及出错处理。其中断函数如下:

void__irq SJA1000_ReadData(void)。

CAN总线是一种比较成熟的现场总线,目前被广泛应用于汽车电子和工业控制。而USB总线是PC机广泛采用的接口设备。多通道的USB-CAN转换器可以在大型的CAN网络的应用中提供一个方便的USB接口,大大简化了现场总线与PC机之间的数据通信。因此本设计具有很强的实用性,具有良好的应用前景。

[1]萧世文,宋延清.USB2.0硬件设计[M].北京:清华大学出版社,2006:23-49.

[2]廖济林.USB2.0应用系统开发实例精讲[M].北京:电子工业出版社,2006:72-75.

[3]王黎明.CAN现场总线系统的设计与应用[M].北京:电子工业出版社,2008:103-127.

[4]林新兵.基于嵌入式系统的USB-CAN协议转换器的设计与实现[D].中国海洋大学,2006:32-35.

[5]彭广.支持多点通信的USB-TO-CAN转换器的设计与实现[D].长沙:中南大学,2007:8-12.

猜你喜欢

集线器寄存器总线
STM32和51单片机寄存器映射原理异同分析
基于差分QPSO的多能源集线器系统优化调度
音乐聆赏新世代 Bowers & Wilkins Formation Audio无线音乐集线器
Lite寄存器模型的设计与实现
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
Microchip拓宽USB3.0集线器应用范围
Microchip推出具有FlexConnect功能的新型智能集线器,拓宽USB 3.0集线器的应用范围
多通道ARINC429总线检查仪
基于EtherCAT总线的ROV控制系统设计