0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于S3C2410嵌入式处理器实现CAN/Ethernet网关的设计

电子设计 来源:现代电子技术 作者:徐敏 2021-06-22 16:45 次阅读

CAN(Controller Area Network)为控制器局域网络,CAN总线规范已经被国际标准化组织制订为国际标准ISO11898,并得到众多半导体器件厂商的支持,推出各种集成有CAN协议的产品。CAN属于总线式串行通信网络,由于其采用了许多新技术和独特的设计,低成本、高可靠性、实时性、灵活性、抗干扰能力强等特点,已被广泛应用于各个自动化控制系统中。在汽车电子、自动控制、电力系统等领域,CAN总线具有无可比拟的优越性。

以太网以其通信数据量大、传输速度快、开放性好、成本低等优点,弥补了现场总线通信速率低的缺陷,成为现阶段信息网络应用最广的局域网技术。用以太网直接进入工业控制领域,目前还存在一些问题,以太网的媒体访问方式CSDA/CD不能保证网络传输的确定性和实时性,不能满足工业现场恶劣环境的要求。将以太网引入工业测控领域,通过与现场总线(CAN BUS)分工合作,构成两种异构网络结构,将高效的以太网和低速的现场总线相结合,解决大规模测控系统实时性和可靠性矛盾,提高整个系统的工作效率。两种异构网络的互连,需要用嵌入式网关实现。

CAN/Ethernet网关设计的主要任务是协议转换,要求数据解析正确完整,同时响应迅速、耗时低、实时性和安全性好。基于RISC架构的ARM微处理器指令执行效率高,软件操作平台易于建设,同时具备丰富的外围扩展电路,能满足实时多任务要求。使用ARM技术构造以太网与CAN现场总线协议转换网关是一种高效可行的方案。

1 网关硬件系统组成

网关的主要功能是进行以太网数据报文与CAN数据帧之间的协议转换,实现以太网与CAN总线的互联。系统的硬件组成包括CAN总线接口设计和以太网接口设计,如图1所示。

S3C2410是Samsung公司推出的一款低价位、低功耗、高性能的32位RISC嵌入式处理器。该芯片采用ARM920T内核,5级流水线和哈佛结构,工作频率高达266 MHz,运行速度可达1.1 MIPS。S3C2410提供了丰富的内部资源,如:SDRAM控制器、LCD控制器、3通道的UART、4通道的DMA、2个SPI模块,支持轮询、中断与DMA三种数据发送模式。虽然内部没有CAN控制器,但可以通过SPI接口进行扩展,接口电路简单,易于实现。

CAN总线接口电路主要采用带SPI接口的独立CAN控制器MCP2510、CAN总线收发器TJA1050、高速光隔6N137和DC/DC电源隔离模块DCR010505等设备组成。独立CAN控制器MCP2510完全支持CAN总线的V 2.0A和V 2.0B的技术规范。系统设计时,将MCP2510作为从设备连接到S3C2410的SPI0口。TJA1050总线收发器是CAN控制器和物理总线之间的接口芯片,增强了总线的驱动能力。为增强CAN总线节点的抗干扰能力,MCP2510的TXCAN和RXCON并不直接与TJA1050的TXD和RXD相连,而是通过两片光电耦合器6N137与TJA1050相连,同时光隔芯片的两端电源采用DC/DC模块进行隔离。这样就实现了系统外总线CAN节点间的完全电气隔离,增强了节点的稳定性和安全性。总线两端都接有1个终端电阻(120 Ω)和1个TVS管,以消除反射信号,有效提高系统的抗干扰能力。

以太网接口电路是在S3C2410片上扩展网络接口芯片RTL8019AS,RTL8019AS是台湾REALTEK公司生产的一种基于ISA总线的高度集成的以太网控制器。它实现了以太网媒介访问层(MAC)和物理层(PHY)的全部功能,包括MAC数据帧的收发、地址识别、循环冗余检验(Cyclic Redundancy Check,CRC)编码/校验、曼彻斯特编解码、超时重传、链路完整性测试、信号极性检测与纠正等。RTL8019AS与主处理器有3种接口模式,跳线模式(Jumper),即插即用模式(PnP)和免跳线模式(Jumperless)。系统采用常见的跳线模式来选择I/O端口和中断。

2 协议转换流程

当CAN总线上的设备向Ethernet网发送数据时,嵌入式网关将接收到的CAN数据包解析,提取数据域中的内容;然后按照TCP/IP协议进行封装,嵌入式网关将经过封装的数据发送给以太网控制芯片RTL8019AS。由RTL8019AS自动给这些数据添加以太网物理层和逻辑链路层所需的相关信息,通过物理接口传送到以太网。反之,当以太网向CAN总线上设备发送TCP/IP数据包时,它首先将数据发送到RTL8019AS,嵌入式网关从RTL8019AS中接收到数据后,提取实际要传送的数据,然后封装成CAN总线数据格式,通过CAN总线将数据发送到网络中的现场设备。

嵌入式网关硬件必须具有以太网接口和CAN总线接口,而软件要有TCP/1P协议栈和CAN总线驱动程序;通常嵌入式Linux内核中有完整的TCP/IP协议栈。由于REALTEK公司支持Linux的开发,Linux系统中已含有RTL8019AS芯片的通用驱动程序,CAN总线协议驱动并不是标准配置。因此,设计CAN总线接口及其编制驱动程序是实现嵌入式网关最主要的工作。

3 CAN驱动程序设计

Linux驱动程序属于Linux内核的一部分,是嵌入式系统控制硬件的接口,它为用户屏蔽设备的工作细节,并向用户提供透明访问硬件设备的机制。驱动程序的开发在嵌入式系统开发中具有举足轻重的地位。开发出稳定、完备的驱动程序可提高整个系统的性能。

3.1 CAN驱动程序流程

MCP2510的内部结构框图如图2所示。

MCP2510内含3个发送缓冲器和2个接收缓冲器,同时还具有灵活的中断管理能力。CAN协议机负责与CAN总线的接口,SPI接口逻辑用于实现同MCU的通信,而寄存、缓冲器组与控制逻辑则用来完成各种方式的设定和操作控制。

在Linux多任务操作系统中,CAN总线通信程序的设计可分为发送数据模块、接收等待模块和中断处理模块实现。系统中CAN总线的数据发送和接收是两个不同的线程。在驱动程序中建立数据发送和接收缓冲区。中断处理程序只负责填充(或读取)缓冲区中的数据,然后唤醒等待接收(或发送)数据的任务。数据的发送与接收都通过独立的缓冲区,并由中断来实现。操作系统的中断响应时间在软件上决定了CAN总线数据的最快收发速度。

3.2 CAN设备驱动程序的实现要点

3.2.1 CAN设备驱动操作函数

CAN设备驱动程序最终提供给应用程序的是一个流控制接口,主要包括:open,realse,read,write,ioctl等操作。添加设备驱动程序,实际上就是给上述操作编写相应的程序代码。驱动程序加载到内核时,会首先运行驱动程序的初始化函数,然后等待系统调用在file_operations数据结构中定义的相关函数,实现对设备的操作。系统使用Linux 2.4.18版本,其文件系统接口被写义为:

s3c2410_mcp2510_open负责对将要进行的I/O操作做好必要的准备工作,主要包括限制CAN打开次数、清空3个发送缓冲区和2个接收缓冲区等。

s3c2410_mcp2510_write将要发送的数据通过SPI总线将数据传送MCP2510的发送缓冲器,再通过MCP2510将数据发送到CAN总线。

s3c2410_mcp2510_read用于将MCP2510从CAN总线上接收到接收缓冲器的数据,通过SPI总线读到用户区,并返回所读出的字节数。

s3c2410_mcp2510_ioctl用于控制CAN总线通信的波特率、设置帧ID、设置工作模式、设置设备滤波器等工作。

s3c2410_mcp2510_release用于释放所占用的内存、中断等资源。

3.2.2 CAN设备的初始化函数

CAN设备的初始化函数主要负责创建CAN设备的节点设备文件、注册CAN设备的中断处理函数、初始化MCP2510等工作。

在Linux系统中,初始化函数从s3c2410_mcp2510_init()开始。通过调用register_chrdev向系统注册字符型设备驱动程序;通过devfs_register()函数创建设备文件系统的CAN设备节点。同时,CAN设备驱动程序通过调用request_irq函数来申请中断,向系统注册CAN设备的CAN中断处理函数s3c2410_isr_mcp2510()。在实现了MCP2510的各个接口函数后,还需要编写MCP2510的模块加载函数module_init()和模块卸载函数module_exit(),用于向内核注册设备及注销设备。

3.2.3 驱动程序的加载与使用

Linux设备驱动会以内核模块的形式出现。Eth-ernet/CAN网关设备驱动程序作为内核的一部分,应在编译时把设备驱动程序编译成可加载的模块。当使用insmod命令加载内核模块时,模块的加载函数mod-ule_init(初始化函数名)会自动被内核执行,将初始化函数加入内核全局初始化函数列表中,在内核初始化时执行驱动的初始化函数,从而完成驱动的初始化和注册,之后驱动便停止等待,被应用程序调用。当用rm-mod命令卸载某内核模块时,模块的卸载函数module_exit(退出处理函数名)也会自动被内核执行,完成与模块加载函数相反的功能。当驱动程序加载到内核中后,就可将CAN设备文件进行open,read,write,release等操作。

4 结语

随着工业控制系统性能的提高,以太网在工业上的应用也会越来越广泛。在此详细介绍了一种嵌入式网关的设计与实现。作为连接以太网和现场总线的纽带,实现以太网与CAN现场总线之间的协议转换,为CAN/Ethernet的互联提供了一种传输速度快、成本低,稳定性和安全性高的解决方案。同时,利用嵌入式ARM处理器,接口资源丰富,设计通用性强,便于扩展其他现场总线与以太网的互联,具有较好的应用推广价值。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18275

    浏览量

    222140
  • 控制器
    +关注

    关注

    112

    文章

    15223

    浏览量

    171156
  • 嵌入式
    +关注

    关注

    4981

    文章

    18281

    浏览量

    288385
收藏 人收藏

    评论

    相关推荐

    #微处理器嵌入式系统设计 S3C2410特殊功能寄存SFR

    嵌入式处理器S3CS3C2410S3C2440
    电子技术那些事儿
    发布于 :2022年10月21日 21:55:38

    基于嵌入式Linux与S3C2410平台的视频采集

    基于嵌入式Linux与S3C2410平台的视频采集首先简介基于嵌入Linux系统的S3C2410平台和在平台上进行开发所需要的软件环境,接着详细论术在该平台上如何
    发表于 03-28 12:51

    S3C2410处理器与CS8900A开发应用实例

    一些物流先进国家已经采用专业的盘点设备——盘点机,用于物流盘点。 我们在设计时采用了目前流行的嵌入式微处理器作为系统核心部件。其微处理器选型是采用韩国三星公司生产的S3C2410处理器
    发表于 04-12 15:16

    S3C2410处理器

    S3C2410处理器通过GPD端口连接LED1-4四个灯,试着画出其电路连接图,并变成实现其逐一点亮功能。
    发表于 11-23 21:50

    s3c2410处理器指令的意思是什么?

    呵呵,s3c2410...在vivi中的s3c2410.h文件中设置时钟时 有这么一段mrc p15,0,r1,c1,c0,0orr r1,r1,#0xc0000000;mcr p15
    发表于 02-25 12:34

    基于ARM S3C2410处理器的PDA人机接口电路设计

    无线方式解决。   随着电子技术的迅猛发展,具有耗电少、亮度高、体积小等特点的LCD(液晶显示)被广泛应用于PDA系统中。   S3C2410是三星公司设计的32位RISC(精简指令集计算机)嵌入式
    发表于 06-19 05:00

    AD7888与S3C2410的SPI接口及Linux下嵌入式驱动的实现

    S3C2410和AD7888在嵌入式Linux下的高速A/D转换,还编写了两者接口的驱动程序,该驱动程序功能的实现主要由以下几个函数完成。(1)Init_SPI()完成SPI的初始化void Init_SPI(void){int
    发表于 06-19 05:00

    ARM920T核微处理器S3C2410有什么特点?

    ,具有性能高、功耗低、成本低、接口方便等特点。这使得在嵌入式系统中实现数据的传输更加方便。S3C2410是三星公司推出的ARM920T核微处理器,主要面向手持设备以及高性价比、低功耗的
    发表于 08-08 07:56

    ARM9 S3C2410X参数测量系统怎么实现

    嵌入式系统由于性价比高开发周期短等优点目前得到了迅猛发展,各类基于 ARM 处理器的应用开发更是如火如荼。这里介绍基于 ARM9 嵌入式芯片 S3C2410 构建的测量监控系统,该系统
    发表于 08-14 07:30

    基于ARM和Linux的嵌入式Web服务的构建及应用

    嵌入式系统研究及应用的热点.本文叙述了嵌入式系统的组成,特点及发展;分析了嵌入式主流处理器ARM的体系结构和基于ARM9的S3C2410
    发表于 11-05 06:07

    基于S3C2410的黄金矿工游戏的设计资料分享

    。① 输出部分包括: 4个发光led、蜂鸣器。② 控制部分包括:键盘的*键,#键,B键。③ 显示部分LCD显示屏上可以实时的显示矿工挖矿的状态。游戏功能分析要实现S3C2410 ARM处理器
    发表于 12-24 06:20

    嵌入式CAN-Ethernet接入网关的设计与实现

    针对煤矿安全监测监控系统中CAN 现场总线与以太网互联的需求,采用32 位RISC ARM处理器,设计了CAN-Ethernet 嵌入式接入网关
    发表于 08-05 14:20 24次下载

    船舶集成平台中嵌入式CAN/Ethernet网关的设计与实现

    本文研究了CAN Bus 和Ethernet 在船舶集成平台管理系统中的应用,设计了嵌入式CAN/Ethernet
    发表于 08-11 10:10 13次下载

    基于S3C2410嵌入式串口通信设计

    本文通过基于S3C2410嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串行通信的硬件电路和软件实现方法。该系统
    发表于 12-23 16:11 120次下载

    基于S3C2410处理器和Linux实现嵌入式网关的设计

    介绍了一种基于ARM9的嵌入式以太网的设计方案。基于ARM内核微处理器S3C2410的功能特点及其外扩组成部分,分析了以太网控制器芯片RTL8019AS的性能以及与S3C2410的接口
    的头像 发表于 06-22 14:28 2334次阅读
    基于<b class='flag-5'>S3C2410</b>微<b class='flag-5'>处理器</b>和Linux<b class='flag-5'>实现</b><b class='flag-5'>嵌入式</b><b class='flag-5'>网关</b>的设计