基于FPGA的CAN接口开发

基于FPGA的CAN接口开发基于Xilinx的A7系列FPGA的CAN总线协议开发一、CAN总线协议介绍CAN是ControllerAreaNetwork的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。可以用来满足“多总线通信时,线束的数量过多”、“通过多个LAN,进行大量数据的高速通信”的需要。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化

大家好,又见面了,我是你们的朋友全栈君。

基于Xilinx的A7系列FPGA的CAN总线协议开发

一、CAN总线协议介绍

CAN是 Controller Area Network 的缩写(以下称为 CAN ),是 ISO 国际标准化的串行通信协议。可以用来满足“多总线通信时,线束的数量过多”、“通过多个 LAN ,进行大量数据的高速通信”的需要。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

CAN控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。
CAN协议具有以下特点:

  1. CAN 总线是一种多主总线,总线上任意节点可在任意时刻主动地向网络上其他节点发送信息而不分主次,因此可在各节点之间实现自由通信。
  2. CAN 总线采用非破坏性总线仲裁技术。当多个节点同时向总线发送信息时,优先级低的节点会主动退出发送,而最高优先级的节点可以不受影响地继续传输数据,从而大大节省总线冲突的仲裁时间。即使在网络负载很重的情况下也不会发生网络瘫痪情况。
  3. CAN 总线的通信介质可以是双绞线、同轴电缆或光导纤维,选择灵活。
  4. CAN 总线的通信速率可达 1Mbit/s(此时通信距离最长为 40 米),通信距离最远可达 10km(速率在 5kbit/s 以下)。
  5. CAN 总线上的节点信息分成不同的优先级,可以满足不同级别的实时要求,高优先级的数据可以在 134μs 内得到传输。
  6. CAN 总线通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送数据,无需专门的调度。
  7. CAN 总线的数据采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果。
  8. CAN 总线采用 CRC 检验并可提供相应的错误处理功能,保证了数据通信的可靠性。
  9. CAN 总线上的器件可被置于无任何内部活动的睡眠方式,相当于未连接到总线上,可以有效降低系统功耗。

CAN总线采用差分信号传输,通常情况下只需要两根信号线就可以进行正常的通信。在差分信号中,逻辑0和逻辑1是用两根差分信号线的电压差来表示。当处于逻辑1,CAN_H和CAN_L的电压差小于0.5V,称为隐性电平(Recessive);当处于逻辑0,CAN_H和CAN_L的电压差大于0.9V,称为显性电平(Dominant)。

在这里插入图片描述

CAN有四种帧类型:

◆ 数据帧:发送单元向接收单元传送数据的帧
◆ 远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧
◆ 错误帧:由检测到错误的任何节点发送的帧
◆ 过载帧:在数据或远程帧之间注入延迟的帧

数据帧是唯一实际传输数据的帧,结构上由7个段组成,其中根据仲裁段ID码长度的不同,分为标准帧(CAN2.0A)和扩展帧(CAN2.0B):
➢ 标准帧格式:具有11个标识符位
➢ 扩展帧格式:具有29个标识符位
标准数据帧的构成如下图所示:

在这里插入图片描述

数据帧一般由7个段构成,即:
(1)帧起始:表示数据帧开始的段。
(2)仲裁段:表示该帧优先级的段。
(3)控制段:表示数据的字节数及保留位的段。
(4)数据段:数据的内容,一帧可发送0~8个字节的数据。
(5)CRC段:检查帧的传输错误的段。
(6)ACK段:表示确认正常接收的段。
(7)帧结束:表示数据帧结束的段。

(详细的CAN介绍可以参看 CAN介绍.pdf)

二、xilinx Artix 7系列FPGA介绍

Artix7系列是7系列中的普通青年,相对Spartan7系列则增加了串行收发器和DSP功能,其逻辑容量也更大,适合逻辑一些稍微复杂的中低端应用。
在这里插入图片描述

三、FPGA的相关设计介绍

设计思路一:在FPGA内部编写CAN通信控制器

采用这个设计方案,本质上是在FPGA内部设计了一款CAN通信控制芯片。技术门槛较高。下面这个设计实例仿照的是SJA1000 CAN通信控制器的工作流程,用Verilog语言完成了CAN控制接口的开发。

CAN 总线的通信协议由 CAN 通信控制器完成。CAN 通信控制器由实现 CAN 总线协议部分和微控制器部分的电路组成。下面将通过一个实例讲解如何用 FPGA 实现 CAN 通信控制器的功能。这个实例从功能和结构上完全参照 SJA 1000 CAN 通信控制器。

网址一:基于FPGA的CAN总线控制器的设计(上) – 知乎 (zhihu.com)

网址二:基于FPGA的CAN总线控制器的设计(中) – 知乎 (zhihu.com)

网址三:基于FPGA的CAN总线控制器的设计(下) – 知乎 (zhihu.com)

上述资料是按照SJA1000 CAN通信控制器的内部结构用FPGA进行了重新设计。

设计思路二:用FPGA通过串口或者SPI去配置外部的CAN控制器芯片实现通信。

这个设计方案一般用在单片机作主控的项目中,如果用FPGA作主控,有这么几个缺点,成本高、硬件设计繁琐、受限于控制芯片的性能和发挥不出FPGA的性能。

CAN通信控制芯片:

  • MCP2515(SPI通信)

在这里插入图片描述

  • SJA1000

在这里插入图片描述
在这里插入图片描述

CAN接口驱动芯片:

  • TJA1050芯片引脚图

在这里插入图片描述
在这里插入图片描述

常用的外设电路设计

在这里插入图片描述

如上图所示,CAN_TX和CAN_RX接CAN通信控制芯片,实现对驱动芯片转换后的信息流的处理。

设计参考:

[参考一:xilinx 7系列FPGA分类简介(转)_我看唔人生-CSDN博客](xilinx 7系列FPGA分类简介(转)_我看唔人生-CSDN博客)

[参考二:基于FPGA的CAN总线控制器的设计(上) – 知乎 (zhihu.com)](基于FPGA的CAN总线控制器的设计(上) – 知乎 (zhihu.com))

[参考三:基于FPGA的CAN总线控制器的设计(中) – 知乎 (zhihu.com)](基于FPGA的CAN总线控制器的设计(中) – 知乎 (zhihu.com))

[参考四:基于FPGA的CAN总线控制器的设计(下) – 知乎 (zhihu.com)](基于FPGA的CAN总线控制器的设计(下) – 知乎 (zhihu.com))

[参考五:【正点原子】开拓者FPGA开发板资料 资料盘(A盘)_免费高速下载|百度网盘-分享无限制 (baidu.com)](https://pan.baidu.com/s/11TVUTU89Hu-oTR4jUIn5cA#list/path=%2Fsharelink1102113311042-567528871234027%2F[正点原子]开拓者FPGA开发板资料 资料盘(A盘)%2F[正点原子]开拓者FPGA开发板 资料盘(A盘)&parentPath=%2Fsharelink1102113311042-567528871234027)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149951.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 给安卓手机里的Firefox安装AdGuard的https过滤证书

    给安卓手机里的Firefox安装AdGuard的https过滤证书如果你不知道 AdGuard 是用来干嘛的 请先看别的文章手机端的广告过滤我一直比较苦恼 Firefox 安装扩展 UBlock 的效果一般 比 PC 平台差远了 直到我发现了 AdGuard 而它还能做到 https 过滤 不过需要浏览器支持安装证书 我根据官网教程操作 一直不成功 FirefoxforAn 下载完证书会调用系统来安装 并没有达到我安装在浏览器里的目的 经过一番摸索 发现是浏览器版本的限制 高版本已经拒绝用户手动安装证书了 所以思路是先安装旧版本浏览器 安装完证书再

    2025年6月3日
    2
  • 腾讯云申请免费ssl证书(1年有效期)

    腾讯云申请免费ssl证书(1年有效期)SSL证书就是遵守SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能的文件。当前大多数的ssl证书是收费的,我所知道的只有腾讯云可以申请到1年

    2022年7月3日
    24
  • vc 调用dll_调用API

    vc 调用dll_调用APIGoogle公司已经将GoogleCOMAPI开放,这样我们就可以通过开放的API来对GoogleEarth进行操作了,比如控制当前视图的高度、中心经纬度,保存当前图片等等。下面是GoogleCOMAPI的网址:http://earth.google.com/comapi/那么,VC程序员如何使用这些API来控制GoogleEarth呢?下面我们编写一个简单的程序来说明对G

    2022年8月12日
    9
  • Java object转string「建议收藏」

    Java object转string「建议收藏」publicstaticcreateString(Objectobject){rerutnobject!=null?object.toString():””;}

    2022年4月30日
    63
  • 本工具仅仅交流之用,把黑群晖洗白用,如果对此感兴趣请支持正版,请勿用于违法,作者不承担法律和相关连带责任,工具内有详细sn算号器,可供使用还有教程

    本工具仅仅交流之用,把黑群晖洗白用,如果对此感兴趣请支持正版,请勿用于违法,作者不承担法律和相关连带责任,工具内有详细sn算号器,可供使用还有教程本工具仅仅交流之用,把黑群晖洗白用,如果对此感兴趣请支持正版,请勿用于违法,作者不承担法律和相关连带责任,工具内有详细sn算号器,可供使用还有教程

    2022年6月14日
    135
  • 网闸上数据库同步

    网闸上数据库同步最近要实施数据库架构调整。1.数据库服务器要加台内网服务器,使用网闸隔离。中间有台文件中转服务器。要求实现数据库复制到内网服务器上供应用使用。考虑的方案有如下: 1.使用中转服务器作复制桥接。先从外网服务器同步到中转服务器,再同步到内网服务器。 2.貌似有的网闸产品支持数据库同步,如果本次上的产品支持,就不用什么桥接了,直接复制到内网服务器就OK了。  等待方案确认中

    2022年9月1日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号