基于CAN总线的嵌入式网络控制器

发布时间:2010-4-8 11:31    发布者:我芯依旧
关键词: CAN , 嵌入式 , 网络控制器 , 总线
引言

CAN (Controller Area Network)现场总线是一种支持分布式控制系统或实时性控制的串行通信网络.具有成本低、可靠性高、抗干扰能力和实时性强等特性,是最普及的工业现场总线之一。CAN总线现在己经广泛应用于诸多领域.具有较强的市场竞争力,但要充分发挥它的组网控制功能,打破地域界限,实现远程控制,就必须借助于现在被广泛应用的以太网(Ethemet)技术。

1 系统设计方案

本文所设计的嵌入式协议转换网关,可以实现CAN总线与以太网的互联,即实现以太网能够通过网关读取CAN总线上的数据,同时也可以向CAN总线发送命令以实现上位机对现场设备的监控。如图1网关架构图所示。

1.gif
图1控制器架构图

本系统的硬件要求功能强大,能够提供足够的平台,因此选择S3C2410X处理器。S3C2410X微处理器是Samsung公司为手持设备设计的低功耗、高集成度的基于ARM920T核的微处理器。S3C2410X内部没有集成的以太网控制器,所以系统设计中选择RTL8019AS控制器作为以太网控制器。另外S3C2410X中也没有集成的CAN控制器,在此选择MCP2510为CAN控制器,S3C2410X通过SPI端口控制MCP2510。

软件设计方面,由于以太网协议比较复杂,由于所选的微处理器和以太网协议比较复杂,以及系统对时间要求比较苛刻.为了更好的管理微处理器,选择了Linux操作系统作为软件开发平台。选择在S3C2410X处理器上运行Linux操作系统,可以为以后的功能拓展打下一个很好的基础,在此基础上扩展功能,无须再改变处理器和操作系统。

2 系统硬件电路设计

本文确定采用ARM9控制器S3C2410芯片为核心微处理器,以及源代码开放的“nux操作系统。其中硬件平台南核心模块和外同电路组成。核心模块上设计有S3C2410X微处理器、SDRAM存储器、F1ash存储器。采用该核心模块作为核心处理器,在硬件电路设计过程中只需设计其外围电路。

2.1电源电路设计

2.gif
图2 系统5V电源电路原理图

系统中电源的设计是至关重要的,因为它是系统工作的源动力,因此电源的设计也要非常谨慎.要考虑所设计的电源在达到系统稳定工作要求的同时,还要减少系统功耗。在该设计中,需要使用到5V,3.3V和1.8V的直流稳压电源。由于ARM核心板内含有1.8v内核供电电源,因此只需提供5V和3.3V的供电电路,其电源电路分别如网2,图3所示。

3.gif
图3系统3.3V电源电路原理图

2.2复位电路设计

复位电路的设计是为了在系统工作异常时,能够进行复位,使得系统重新同到正常状态。当nRESET信号变为低时,ARM920T就会放弃所有正在执行的程序,然后从停止点以下的指令地址中取出指令,复位电路图如4所示。

4.gif
图4系统复位电路原理图

2.3串口电路设计

串行端口的本质功能是作为CPU和串行设备间的编码转换器,RS232串行接口电路用于网关系统与应用系统的短距离双向串行通讯。在本设计中采用的是DB-9接口。在本设计中,虚拟机通过串口向目标机发送命令和接收命令,如在打开目标机时要启动目标机的Linux系统,命令run loadlinux就是通过串口到达目标机的,同样,还有一系列其他的命令语句,都是通过串口实现目标机与虚拟机的必要的命令通讯,串口的电路原理图如下图6所示。

5.gif
图5系统串口电路原理图

图中表示了RS-232接13与目标机之问的连接关系,它们之间包括了一个SP3232ECA电压转换芯片,SP3232ECA如图中所示,DB-9是接至虚拟机端的,虚拟机需要的工作电压为5v,而目标机即ARM核心板上的一r作电压为3.3v,要在两者问进行数据发送或接收时需进行电平转换。SP3232ECA在接至目标机端时,R1OUT和R20UT串接电阻用来防止意外的逻辑混乱。

2.4 CAN接口电路设计

在S3C2410X处理器中没有直接嵌入的CAN接口,所以要选择独立的CAN控制器。由于S3C2410X处理器设有SPI接口,MCP2510控制器的引脚设计中也包括了SPI接口,这样CAN控制器MCP2510可以通过SPI接口与处理器的SPI接口相连,简化端口电路的设计,所以设计中所选则MCP2510作为CAN控制器。

MCP2510主要由3部分组成:CAN协议引擎:用来为器件及其运行进行配置的控制逻辑和SRAM寄存器:SPI协议模块。CAN协议引擎的功能是处理所有总线上的报文发送和接收。CPU通过SPI接口与器件进行通信。通过使用标准SPI读写命令对寄存器所有读写操作。MCP2510采用标准的4MHz晶体,内部寄存器的控制分频系数来调节。它的输出到总线的速率也可通过设置MCP2510的SPI接口与S3C2410X的SPIO相应的接口相连,实现CPU对其的控制。MCP2510控制器发送输出和接收输入引脚通过光电隔离连接到CAN总线收发器TJAl050上,光电隔离采用高速通信光耦6N137芯片,保证了节点之间在电气上的完全隔离和独立,提高了电路的稳定性和安全性。

2.5以太网接口电路设计

在本设计中RTL.8019AS是以太网控制的核心,10M以太网接口为系统提供了以太网接入的物理通道,它与S3C2410X的相应引脚相连,实现以太网的读写功能。RTL8019AS与S3C2410X相连的引脚如下表1所示。

b1.gif
表1 RTL8019AS与S3C2410X相连的引脚

3 系统软件程序设计

3.1CAN控制器的驱动程序设计

CAN控制器的初始化流程图如下图6所示。其过程包括硬件使能、软件复位、内部设置的初始化和启动CAN等。

6.gif
图6 CAN控制器驱动流程图

驱动程序的源文件共有三个:mcpcan.c,spi_cmd.c和spi.co要把三个源文件合并编译链接成一个.O为后缀的驱动模块。在Makefile中用了如下命令行:

$(EXEC):$(OBJS)
$(LD)$(LDFLAGS)-o$@S(OBJS)
即/usr/local/arm/2.95.3/bin/arm-linux-ld -r candrv.o mcpcan.o spi_cmd.o spi.o

因为对MCP2510这个CAN控制器芯片的操作是靠CPU给它发送SPI (串行外设接口}命令来实现的,所以要用到S3C2410的关于SPI的那螳特殊功能寄存器。

3.2MCP2510控制器应用程序

MCP2510控制器应用程序主要包括了接收和发送两部分。报文发送函数为

void MCP2510_TX (int TxBuf,int IdType,unsigned int id,int DataLen.,char* data)

通过TxBuf参数指定发送到那个缓冲器(TXBUF0,TXBUFl,TXBUF2)。IdType决定发送报文帧的类型,STANDID表示标准数据帧,EXTID表承扩展数据帧。

报文接受函数为:void MCP251O_TX (int TxBuf, IdType,
unsigned int id.,int Data,char * data)通过TxBuf参数指定从哪个缓冲器接收((RXBUFO或RXBUFl)。接收后的报文帧的类型、帧ID、数据长度以数据内容分别保存在IdType,id,DataLen 和data中。

在应用程序中创建了一个线程send专门负责发送数据,再在主线程中接收数据到一个mepcan_data结构体中并打印出来。

ret=pthread_create(&id,NULL(void*) send,&data_send);
if(ret!=o){
printf("Create pthread error! \n");
exit (1);}
printf("Create pthread success. \n");

在send线程中对打开的设备接述符进行write操作,在主线程中对该设备描述符进行read操作。因为在驱动中已经考虑到了互斥,所以线程中没有做并发处理。

4 结论

本文的创新点:本文对嵌入式网关设备发展情况及以太网与CAN总线相互连接与通讯问题进行深入的研究,在对嵌入式系统和网关设备的学习、分析比较的基础上,选用功能强大的、具有很大扩展空闻的Linux操作系统和32位的S3C2410X处理器,作为研究开发平台,针对S3C2410X处理器,完成其外围硬件电路的设计,包含有电源电路、复位电路,为系统提供正常工作的条件;操作系统的完成参考ARM9嵌入式技术及Linux高级实践教程中的建立、安装、配置、移植等工作。完成了对CAN控制器MCP2510和以太网控制器RTL8019AS的硬件驱动。并在Linux下编写了CAN总线和以太网的应用程序。

已经产生经济效益200万元。


作者:张海春,肖亚      来源:《微计算机信息》《嵌入式专SOC)2009年第2-2期
本文地址:https://www.eechina.com/thread-10244-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表