基于can总线的远动测控终端的设计与实现

基于can总线的远动测控终端的设计与实现

ID:10289343

大小:56.00 KB

页数:4页

时间:2018-07-06

基于can总线的远动测控终端的设计与实现  _第1页
基于can总线的远动测控终端的设计与实现  _第2页
基于can总线的远动测控终端的设计与实现  _第3页
基于can总线的远动测控终端的设计与实现  _第4页
资源描述:

《基于can总线的远动测控终端的设计与实现 》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于CAN总线的远动测控终端的设计与实现摘要:本文首先分析了一种电力测控系统终端的整体设计方案,然后结合系统中遥测模块和主控板之间的CAN总线通信方式,重点介绍系统中CAN模块的硬件构成及工作原理,最后阐述了为uClinux添加CAN设备驱动的方法。关键词:CAN总线、SJA1000、Linux设备驱动Abstract:ThispaperfirstanalyzedonekindofRemoteTerminalUnitsystem'soveralldesignplan,thenbinedtheCAN-bu

2、smunicationmeansbetodule'shard。.KeyoryManagementUnit)的硬件平台。在经过了裁剪和优化后,形成了一个高度优化,代码紧凑的嵌入式Linux。它沿袭了Linux的绝大部分特性,具有体积小、稳定、良好的移植性、优秀的网络功能、能支持多种文件系统。采用uClinux系统可优化利用系统资源、简化程序的设计与调试、方便程序的维护和二次开发、增强系统的可靠性。图1:系统结构图遥信板和遥控板通过母板上的数据总线直接与主控板交换数据,遥测板和主板选用CAN总线的通信方式。

3、主控板软件设计分为以下几个重要步骤:1、uClinux操作系统的移植。2、uClinux设备驱动程序的编写。3、应用程序的编写。对于第一步网上已经有针对S3C4510B的uClinux内核的源代码,只要根据系统需要进行适当的裁剪就可以直接使用了,对与像串口、网口、FLASH、SDRAM等都有完整的驱动程序代码可供参考,在此不再敷述。以下将重点介绍与CAN相关部分的设计包括硬件和软件的设计方案。图2为主板CAN模块的硬件结构图:CAN模块的设计以SJA1000为核心,SJA1000内部集成了CAN协议的物

4、理层与数据链路层,它可工作在BasicCAN、PeliCAN两种模式下,其中PeliCAN模式能够处理所有的CAN2.0B定义的帧类型,本系统中我们选用了BasicCAN模式。通信数据经过高速光耦6N137隔离,经A82C250收发器后从外部端子连接到母板总线最后连接到外部CAN总线。S0作为片选信号,S3C4510B的外部中断INT3做为中断源。通信报文的设计采用了一个简单的协议。2.2、Linux设备驱动简介:设备驱动程序是Linux系统内核同外围设备交互的媒介,设备驱动程序做为系统内核的一部分,它

5、把外围的设备完整的封装了起来,使某个特定的硬件响应一个定义良好的内部编程接口,这些接口完全隐藏了设备的工作细节。这样在应用程序开发者看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作,设备驱动程序主要完成以下的功能:对设备初始化和释放、把数据从内核传送到硬件和从硬件读取数据、读取应用程序传送给设备文件的数据和回送应用程序请求的数据。在Linux操作系统下有两类主要的设备文件类型,一种是字符设备,另一种是块设备,字符设备是个能够像字节流一样被访问的设备,块设备一般主要指磁盘等

6、大容量设备。linux的设备驱动可以通过动态和静态两种方式进行加载,动态加载利用了Linux的MODULE特性,可以在系统启动后通过insmod命令把驱动程序加载上去,不用的时候用rmmod命令来卸载。一般情况下我们用动态加载的方式调试驱动程序,而调试正确后再通过静态编译的方式编译进内核。图2:模块的硬件结构2.3、CAN设备驱动程序设计:在本系统中,基于设备安全访问的需要,把CAN设备实现了更为完整的封装,既把实际上可以在应用程序中完成的部分功能也封装到设备驱动程序中来完成,这主要包括对已接收报文的解

7、析和待发送报文的组帧等。设备驱动程序所提供出的抽象的入口点主要是通过一个数据结构向系统进行说明的,即flie_operation数据结构,这个数据结构的内容非常庞大,基于满足CAN的驱动设计设计的要求,简化后的flie_operation结构如下:structfile_operationscan_fops={read:canread,ajor,constchar*name,structfile_operations*fops);在系统程序中这个函数的声明如下:intcan_init(void){intr

8、et;intdata;ret=register_chrdev(254,"CAN",can_fops);if(ret==0)printk("canregistersucceed!");elseprintk("canregisterfailed!");return0;}其中,254是为设备驱动程序向系统申请的主设备号;“CAN”是设备名;“can_fops”是对系统调用的入口点的说明。二、注册中断staticvoidcanopent(s

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。