logo资料库

基于FPGA实现CAN数据传输与验证.pdf

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
基于 FPGA 实现 CAN 数据传输与验证 1 CAN 总线简介 CAN(Controller Area Network,控制器局域网 )总线是一个多主机异步串 行总线,也是国际上应用最广泛的现场总线之一。在现场总线中,它是惟一被 ISO 国际标准化组织批准的现场总线。由于其成本低、容错能力强、支持分布式控制、 通信速率高等优点在汽车、工业控制、航天等领域得到广泛应用。特别是由于 CAN 总线具有抗干扰性强、高数据传输率及低成本等优点,在小卫星和微小卫星 中得到了越来越广泛的应用。 2 CAN 硬件设计 传统的 CAN 通信系统通常采用 MCU + SJA1000 + CAN 总线收发器的架构,但 是单片机速度较低、资源较少,当受到强电磁干扰便很容易出现程序跑飞。本文 基 FPGA + SJA1000 + CAN 总线收发器的 CAN 总线通讯如图 1 所示。与传统方案 相比,其优点在于可扩展性好,稳定性高,减轻了重量、体积和功耗。注意:对 于 FPGA 而言,接口电平不支持 5V I/O 标准,如果与 5V I/O 标准的器件直接相 连,将可能导致 FPGA 管脚流过极大电流,造成器件锁死或者烧毁。电平转换器就 是为了防止 FPGA 损坏。 3 CAN 逻辑设计 图 1 CAN 硬件框图 FPGA 对 CAN 总线通讯模块的控制主要包括 3 部分:CAN 总线节点初始化、报 文发送和报文接收。 1)CAN 读写时序图 本设计的核心是保证 FPGA 与 SJA1000 之间的准确通信,为了保证 FPGA 与 SJA1000 之间能够准确无误的通信,在他们之间进行数据通信时,必须要按照 SJA1000 的时序逻辑进行通信。在编写 FPGA 的控制逻辑时,需要严格根按照 SJA1000 的读/写时序图。
2)CAN 工作模式选择 SJA1000 控制器支持两种模式,分别是 Intel 和 Motorola 模式。两种模式 选择其一设计即可。 3)CAN 总线节点初始化 CAN 初始化属于 CAN 程序设计的难点,按照手册正确的配置相关寄存器的值 很关键。如果初始化失败,设备不能识别波特率,则 CAN 总线不能发送和接收数 据。初始化主要包括工作方式设置、验收滤波方式设置、验收屏蔽寄存器和验收 代码寄存器、波特率参数设置和中断允许寄存器的设置等。这里只描述基本初始 化 方 法 , 如 果 需 要 了 解 初 始 化 寄 存 器 地 址 及 寄 存 器 数 据 , 请 联 系 笔 者 (jhqwy888@163.com)。 4)CAN 报文发送和报文接收 由于通讯模块对接收数据的实时性要求并不是很高,因此 CAN 总线的数据接 收和发送采用查询方式。如果 SJA1000 的接收缓冲区状态标志位(RBS)为 1,即接 收缓冲区中有数据,就从 SJA1000 的接收缓冲区中读取数据,在内部 FIFO_RD 上缓 存,并释放接收缓冲区。如果 SJA1000 的发送缓冲区状态标志位(TBS)为 1,即发 送缓冲区释放,它读取缓存在内部 FIFO_WR 上的数据,写到发送缓冲区中,然后启 动发送命令。 4 CAN 功能验证 本设计在 vivado 2018.1 软件平台上进行了功能仿真,并在实际工程中得到 了硬件验证。硬件环境主要计算机、FPGA 板卡、USB 转 CAN 接口组成。利用 USB 转 CAN 设备产生 CAN 总线数据, 进行 FPGA 片上测试实验,用 Xilinx 公司的 ChipScope 软件做片上数据测试。 利用 USB 转 CAN 设备发送数据为 0102030405060708,FPGA 接收数据为 0102030405060708。FPGA 发送数据为 AA,CAN 调试助手接收数据为 AA。由此可 见,接收和发送数据正确,CAN 接口功能正确,设计符合预期。 5 CAN 结束语 笔者通过 FPGA 控制 SJA1000 实现 CAN 总线通信,可扩展性好,稳定性高, 降低了重量、体积以及功耗,有利于空间实现。此外 CAN 总线允许高达 1Mbit/s 通讯速率已经进行实际验证。如果需要进一步了解 CAN 总线设计,请发邮件沟通: jhqwy888@163.com。
分享到:
收藏