基于嵌入式Linux的CAN总线驱动设计与实现

基于嵌入式Linux的CAN总线驱动设计与实现

ID:40196665

大小:254.34 KB

页数:4页

时间:2019-07-25

基于嵌入式Linux的CAN总线驱动设计与实现_第1页
基于嵌入式Linux的CAN总线驱动设计与实现_第2页
基于嵌入式Linux的CAN总线驱动设计与实现_第3页
基于嵌入式Linux的CAN总线驱动设计与实现_第4页
资源描述:

《基于嵌入式Linux的CAN总线驱动设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、万方数据第34卷第8期2008年8月电子工蠢师ELECTRONICEN(.INEERV01.34No.8Aug.2008基于嵌入式Linux的CAN总线驱动设计与实现周宇,徐寅林,李杰(南京师范大学物理科学与技术学院,江苏省南京市210097)摘要:CAN(控制器局域网)总线技术在嵌入式系统开发中有着广泛应用,虽然CAN总线通信控制芯片众多,但是要在嵌入式操作系统下扩展CAN总线设备需要设计相应的驱动程序。文中针对CAN总线的技术特点,并结合嵌入式Linux操作系统的优点和嵌入式处理器$3C2410丰富的片内资源,实现了在$3C2410上CAN总线

2、设备的硬件扩展设计,介绍了嵌入式Linux系统上的CAN设备驱动程序的开发流程以及设计方法和技巧,并描述了CAN设备驱动程序的具体实现。关键词:嵌入式Linux;CAN总线;驱动程序中图分类号:TF3360引言CAN(控制器局域网)是由德国BOSCH公司开发,并最终成为国际标准(ISO11898),是国际上应用最广泛的现场总线之一。CAN总线由于其成本低、可靠性高、抗干扰能力强、连接方便和通信速率高等优点,在嵌人式系统开发中有着广泛应用。同时,随着ARM芯片以及嵌入式Linux操作系统的成熟与完善,使CAN通信的开发更便利,应用更广泛。目前市场上的

3、CAN总线控制芯片众多,但基本上都不带Linux驱动程序,要实现CAN通信,必须自己在嵌入式处理器上开发CAN驱动程序。本文在嵌入式处理$3C2410(Linux2.6.8.1内核)上实现了基于CAN总线的开发;并介绍了CAN驱动程序的方法与过程。1系统硬件结构及原理1.1系统结构硬件系统组成为:三星公司的$3C2410处理器,总线控制器采用Microchip公司的MCP2510,总线收发器件采用PCA82C250。三星公司的32位RISC处理器$3C2410具有低价位、低功耗、高性能等优点。采用了ARM920T内核,具有5级整数流水线,工作频率可

4、达到266MHz,运行速度可达到1.1MIPS/MHz。$3C2410提供了丰富的内部资源,包括1个LCD控制器(支持STN和TFT带有触摸屏的液晶显示屏)、SDRAM控制器、3通道的UART、4通道的DMA,并带有2个SPI模块接口。MCP2510是一款独立的CAN协议控制器,完全支持CAN总线V2.0A/B技术规范。其特性如下:完收稿日期:2008-01-21;修回日期:2008-02-24。·50·全支持CAN总线V2.0A和V2.0B技术规范,通信速率位1Mbit/s;o~8字节报文长度,支持远程帧;2个支持过滤器的接收缓冲区,3个发送缓冲

5、区;可编程位传输速率可达1Mbit/s;拥有用于自检的回环模式;SPI高速串行总线,速率最大可达5MHz。PCA82C250是CAN协议控制器与物理总线之间的接口,它向总线提供了差动的发送能力,并向CAN控制器提供差动的接受能力。系统中$3C2410处理器作为节点控制器,MCP2510芯片用做CAN控制器。MCP2510通过SPI接口与$3C2410进行数据传输,MCP2510再通过CAN收发器PCA82C250连接到CAN总线上,CAN总线上可挂接多个节点,$3C2410通过MCP2510与CAN总线上的其他节点控制器进行通信。系统原理见图1。图

6、1系统实现原理1.2硬件电路及接口原理$3C2410微处理器包括2路SPI,每路分别有2个8个转移寄存器,用于发送和接受数据。MCP2510连接到$3C2410的SPl0口。其原理如图2所示。万方数据第34卷第8期周宇,等:基于嵌入式Linux的CAN总线驱动设计与实现·计算机与自动化技术·图2硬件电路设计图2中,MCP2510使用3.3V电压供电,可直接与$3C2410通过SPI总线连接。使用$3C2410的外部中断8(EXINT8)作为中断引脚,低电平有效。在中断函数中,具体的中断事件通过SPI接口对MCP2510寄存器访问来确定。为了提高系统

7、的抗干扰性能,在CAN控制器与CAN收发器之间加入光电耦合器,在提高系统稳定性的同时也解决了MCP2510与PCA82C250之间电平兼容问题。将以往常用CANH与CANL之间的120Q电阻改良为2个等值的60Q电阻与一个旁路电容的形式,更有效提高了系统的抗干扰能力。2软件设计与实现2.1Linux设备驱动Linux系统内核通过设备驱动程序与外围设备进行交互,设备驱动程序是Linux内核的一部分,它是一组数据结构和函数,这些数据结构和函数通过定义的接口控制1个或多个设备。Linux驱动程序支持3种类型的设备:字符设备、块设备、网络设备。字符设备是L

8、inux最简单的设备,可以像文件一样访问。MCP2510CAN控制器集成了CAN协议的物理层与数据链路层,CAN控制器属于

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

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

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