第22章CAN总线驱动设计.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第22章CAN总线驱动设计

第22章 CAN总线驱动设计 前面对Linux设备驱动程序有了一个基本的认识,本章就嵌入式Linux下CAN总线的驱动做一详细讲解。希望通过一个简单的实例对读者自己编写驱动程序有所帮助。 22.1 CAN总线介绍 CAN总线的通信介质可采用双绞线、同轴电缆和光导纤维。通信距离与波特率有关,最大通信距离可达10km,最大通信波特率可达1Mbps。CAN总线仲裁采用11位标识和非破坏性位仲裁总线机构机制,可以确定数据块的优先级,保证在网络节点冲突时最高优先节点不需要冲突等待。CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。CAN总线上任意节点可在任意时刻主动向网络上其他节点发送信息而不分主次,因此可在各节点之间实现自由通信。 22.2 SJA1000介绍 SJA1000是一个独立的CAN 控制器,它在汽车和普通的工业应用上有先进的特征。由于硬件和软件的兼容,它将会替代PCA82C200。它与PCA82C200 相比,增加了一种新的工作模式(PeliCAN)。这种模式支持具有很多新特性的CAN2.0B 协议,因此特别适合于轿车内的电子模块、传感器、制动器的连接和通用工业应用中,特别是系统优化,系统诊断和系统维护时特别重要。 22.2.1 SJA1000的特性 SJA1000控制器具有以下特性: 和PCA82C200独立CAN控制器引脚兼容; 和PCA82C200独立CAN控制器电气兼容; PCA82C200模式即默认的BasicCAN模式; 扩展的接收缓冲器64字节先进先出FIFO; 和CAN2.0B协议兼容PCA82C200兼容模式中的无源扩展帧; 同时支持11位和29位识别码; 位速率可达1Mbits/s; PeliCAN模式扩展功能; 24MHz时钟频率; 对不同微处理器的接口; 可编程的CAN输出驱动器配置; 增强的温度适应(-40-+125oC)。 22.2.2 SJA1000内部原理 图22-1是SJA1000的内部原理图。 22.2.3 SJA1000管脚说明 如图22-2为SJA1000的引脚图。 22.3 SJA1000寄存器介绍 SJA1000的寄存器主要包括控制寄存器,命令寄存器,状态寄存器,中断寄存器,发送缓冲器,接收缓冲器和验收滤波器。下面对这些寄存器做详细讲解。 22.3.1 控制寄存器CR 模式寄存器的内容是用来改变CAN控制器的行为的。CPU把控制寄存器作为读/写寄存器,可以设置这些位。保留位读值为逻辑0。 22.3.2 命令寄存器CMR 命令位初始化CAN控制器传输层的一个动作。这个寄存器是只写的,所有位的读出值都是逻辑0。因处理的需要,两条命令之间至少有一个内部时钟周期。内部时钟周期的频率是外部振荡器的一半。 22.3.3 状态寄存器SR 状态寄存器反映CAN控制器的状态,表22-4说明了状态寄存器各位的功能。需要注意的是,状态寄存器对CPU来说是只读内存。 22.3.4 中断寄存器IR 中断寄存器允许中断源的识别,当这个寄存器的一位或多位被置位时,CAN 中断将反映到CPU。CPU读此寄存器的时候,除了接收中断外的所有位都被复位。寄存器中各位的功能如表22-5所示。同样的,中断寄存器对CUP 来说是只读存储器。 22.3.5 发送缓冲器 发送缓冲器的全部列表见图22-3,请务必分清标准帧格式(SFF)和扩展帧格式(EFF)配置。发送缓冲器允许定义长达8个数据字节发送信息。 22.3.6 接收缓冲器 接收缓冲器的列表与前面一节讲述的发送缓冲器很相似。接收缓冲器是RXFIFO的可访问部分,位于CAN地址的16和28。每条信息都分为描述符和数据区。 22.3.7 验收滤波器 在验收滤波器的帮助下,只有当接收信息中的识别位和验收滤波器预定义的值相等时,CAN 控制器才允许将已接收信息存入RXFIFO。 验收滤波器由验收代码寄存器(ACRn)和验收屏蔽寄存器(AMRn)定义。要接收的信息的位模式在验收代码寄存器中定义。相应的验收屏蔽寄存器允许定义某些位为“不影响”(即可为任意值)。有两种不同的过滤模式可在模式寄存器中选择: 单滤波器模式(AFM 位是1); 双滤波器模式(AFM 位是0)。 22.4 SJA1000与S3C2440连接 图22-5所示的是SJA1000与S3C2440的硬件连接原理图。其中CAN_WR和CAN_RD分别接S3C2440的读和写管脚,nRST接S3C2440的RST管脚,CAN_INT接S3C2440的外部中断EINT管脚。 22.5 SJA1000的驱动程序 下面详细讲解sja1000的驱动程序。希望通过一些分析,对读者自己写设备驱动有一个启发。 22.5.1 驱动程序源代码 这个

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档