基于FPGA的CAN总线驱动设计与实现_第1页
基于FPGA的CAN总线驱动设计与实现_第2页
基于FPGA的CAN总线驱动设计与实现_第3页
基于FPGA的CAN总线驱动设计与实现_第4页
基于FPGA的CAN总线驱动设计与实现_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

要:机载产品通常系统复杂,功能单元众多,实现国产化周期长、难度大。FPGA是一种通过编程改变逻辑功能的半定制芯片,具有编程配置灵活、开发周期短等特点,为机载产品国产化提供了新思路。鉴于此,深入研究了CAN总线通信协议,分析了CAN驱动的数据流和组织结构,实现了基于FPGA的SJA1000CAN总线驱动设计,并将该设计应用于某综合电子战管理系统,证实了其有效性和可靠性。关键词:FPGA;CAN总线;驱动设计0

引言随着嵌入式系统互联通信的高速发展,传统的RS232、RS485、RS422等总线受传输距离、抗干扰能力、负载能力、传输速率的影响,逐渐制约了嵌入式系统的发展。CAN总线系统是一种多主控的总线系统,在总线控制器的协调下实现两个节点之间大量数据的传输,由于CAN网络消息的发送是广播式的,即所有节点侦测的数据是一致的,因此非常适合控制信息和数据信息的传输。CAN总线具有超长的传输距离,理论上限为10km,因此被广泛应用于超远距离信息传输的工业项目中。单条总线可负载110个节点,互不干扰;高波特率保证了数据传输速率。由于国产化需求,进口芯片需要进行原位替换,面对功能可裁剪的嵌入式系统,本文提出了一种基于FPGA实现的CAN总线驱动,并对其设计进行了详细介绍。1

SJA10001.1

CAN通信结构CAN通信结构如图1所示,以FPGA实现的CAN协议IP核为中心,采用CPU+FPGA+驱动器的架构。FPGA和CPU之间通过LocalBus进行通信,外挂国微SM65HVD230D型收发器对外进行CAN通信,模块支持5路CAN总线接口。1.2

CAN通信帧CAN通信帧分为两种,包括11位标识符的标准帧和29位标识符的扩展帧,两者只是在标识符长度即帧ID的长度上不一样。CAN标准帧信息包括信息和数据两部分共11个字节,前3个字节为信息部分,后8个字节为数据部分。第一个字节为帧信息,其中前4位DLC表示数据帧的实际长度,第6位(RTR)为帧类型,数据帧设置为0,远程帧设置为1;第7位(FF)为帧格式,标准帧设置为0。标准帧格式如表1所示。CAN扩展帧信息为13个字节,前5个字节为信息部分,第一个字节与标准帧相同,剩余信息部分为报文识别码。扩展帧格式如表2所示。CAN协议建立在OSI7层开放互联参考模型基础之上,定义了数据链路层和物理层,保证节点间无差错传输。2

CAN驱动实现通过FPGA实现了SJA1000芯片功能,能够正确传输CAN通信帧;要完成数据的完整发送还需要对来自CPU的数据进行解包处理,对于来自其他模块的CAN通信帧进行组包。因此,CAN驱动的设计由五部分构成:CAN初始化、CAN通信帧发送和接收以及CAN通信帧的组包和解包。2.1

CAN初始化综合电子战管理系统中存在大量的CAN节点,因此采用扩展帧进行通信。CAN初始化主要完成根据扩展帧定义的数据结构的初始化以及相关寄存器的配置。CAN通信帧的帧格式设置为扩展帧,帧类型设置为数据帧,每帧的数据长度设置为8个字节,数据和报文识别码初始化为0。在通信帧发送之前需要根据用户需求对以上数据重新设置,确保通信帧的正确性。初始化还需要申请用于存放接收的通信帧ringbuffer空间,用于存放多组通信帧。对CAN寄存器的配置主要包括波特率、中断使能、时钟分频以及输出控制器等。以波特率配置为例,需要对总线时序寄存器0和总线时序寄存器1同时进行配置,两个寄存器根据约束条件能够搭配出不同的采样率以适应不同的系统需求。初始化还包括信号量创建、中间数据存储空间申请、中断挂接以及获取CAN通信帧任务的创建。2.2

CAN通信帧发送和接收CAN通信帧发送前完成通信帧的配置并对传输缓冲区状态进行判断,在发送结束前对传输完成状态进行判断,确保通信帧已完成发送。CAN通信帧接收之前对接收缓冲区状态进行判断,当存在数据消息时进行获取。通信数据的全部CAN通信帧接收完成之后需要进行组包处理,因此需要先将这些CAN通信帧存储到缓冲区中。每次完成通信帧的接收通过设置命令寄存器释放接收缓冲区,确保后续通信帧的正确传输。2.3

CAN通信帧的组包和解包CAN通信帧的解包将来自用户的数据分解成CAN通信帧,通过调用CAN通信帧发送接口将每一帧CAN数据发送出去。CAN通信帧的组包将来自CAN总线通信帧中的数据部分进行组装拼接,将完整的数据反馈给用户。完成用户的数据的解包,需要对每个通信帧的数据进行存储,然后统一将这些CAN通信帧发送出去。因此CAN通信帧的发送也需要建立发送ringbuffer进行临时存储,发送ringbuffer的大小不小于解包后的数据量。为保证发送ringbuffer中数据的正确性,对解包进行同步处理,即在解包前获取信号量,在发送完成后释放信号量。CAN通信帧的发送通过写控制寄存器完成,便于控制;接收则是通过中断方式完成,效率高。为了提高系统性能,在初始化阶段创建接收CAN通信帧的任务,接收任务的优先级大于应用任务,确保数据接收的效率。接收任务完成CAN通信帧中数据的组装和拼接,将组装完成的数据暂存到用户数据ringbuffer中,在用户发起数据获取操作时将数据反馈给用户。CAN总线驱动设计中采用发送ringbuffer、接收ringbuffer和用户数据ringbuffer三重数据缓冲结构,使得用户发送和接收的数据的正确性、完整性得到保障。CAN通信的数据流图如图2所示。综合电子战管理系统中CAN网络逻辑互联采用多网段独立拓扑方式,通过FPGA实现5路独立的CAN总线功能。CAN总线需要对5路进行初始化,数据的发送通过同步机制按顺序下发5个通道的数据,数据的接收则对5个通道的数据同时存储。3

功能测试自测试阶段完成了5路CAN总线的自环测试,单通道发送,剩余通道接收。联试阶段将本文的CAN总线驱动应用于某综合电子战管理系统,计算机板为主节点,与机架内的其他模块一起挂接在CAN0通道上,机架外4台设备分别连接到剩余4个通道。主节点发送数据到5个通道中,通过CAN盒可以检测到CAN总线中的数据。系统初始化成功后,主节点与其

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论