0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

FPGA设计论坛 来源:FPGA设计论坛 2024-12-21 14:49 次阅读

一、CAN总线协议介绍

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

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

CAN 总线是一种多主总线,总线上任意节点可在任意时刻主动地向网络上其他节点发送信息而不分主次,因此可在各节点之间实现自由通信。

CAN 总线采用非破坏性总线仲裁威廉希尔官方网站 。当多个节点同时向总线发送信息时,优先级低的节点会主动退出发送,而最高优先级的节点可以不受影响地继续传输数据,从而大大节省总线冲突的仲裁时间。即使在网络负载很重的情况下也不会发生网络瘫痪情况。

CAN 总线的通信介质可以是双绞线、同轴电缆或光导纤维,选择灵活。

CAN 总线的通信速率可达 1Mbit/s(此时通信距离最长为 40 米),通信距离最远可达 10km(速率在 5kbit/s 以下)。

CAN 总线上的节点信息分成不同的优先级,可以满足不同级别的实时要求,高优先级的数据可以在 134μs 内得到传输。

CAN 总线通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送数据,无需专门的调度。

CAN 总线的数据采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果。

CAN 总线采用 CRC 检验并可提供相应的错误处理功能,保证了数据通信的可靠性。

CAN 总线上的器件可被置于无任何内部活动的睡眠方式,相当于未连接到总线上,可以有效降低系统功耗。

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

80d15486-be9b-11ef-9310-92fbcf53809c.png

CAN有四种帧类型:

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

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

80ed4e7a-be9b-11ef-9310-92fbcf53809c.png

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

二、xilinx Artix 7系列FPGA介绍

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

810464a2-be9b-11ef-9310-92fbcf53809c.png

三、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通信)

8134007c-be9b-11ef-9310-92fbcf53809c.png

SJA1000

81459d14-be9b-11ef-9310-92fbcf53809c.png

8161a6bc-be9b-11ef-9310-92fbcf53809c.png

CAN接口驱动芯片

TJA1050芯片引脚图

817431a6-be9b-11ef-9310-92fbcf53809c.png

8189cef8-be9b-11ef-9310-92fbcf53809c.png

常用的外设电路设计

8198fe1e-be9b-11ef-9310-92fbcf53809c.png

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21729

    浏览量

    603013
  • CAN总线
    +关注

    关注

    145

    文章

    1947

    浏览量

    130728
  • Xilinx
    +关注

    关注

    71

    文章

    2167

    浏览量

    121307

原文标题:基于Xilinx的A7系列FPGA的CAN总线协议开发

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Xilinx 7系列FPGA的时钟结构解析

    通过上一篇文章“时钟管理威廉希尔官方网站 ”,我们了解Xilinx 7系列FPGA主要有全局时钟、区域时钟、时钟管理块(CMT)。 通过以上时钟资源的结合,Xil
    发表于 08-31 10:44 2610次阅读
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>的时钟结构解析

    cmos的slvs-ec协议40针引脚该如何连接到xilinx a7开发版上?

    我有一块集成了sony的cmos的板子,cmos的图像数据走的是SLVS-EC协议,数据走的是0.4mm间隔的40针的接口,如图: 请问这个接口该如何接线到xilinxa7板子,该买什么规格
    发表于 03-28 14:19

    【Artix-7 50T FPGA申请】FPGA由Altera转Xilinx系列笔记

    :1、Xilinx A7系列FPGA芯片与S6系列FPGA芯片的对比2、Vivado软件安装与介
    发表于 10-11 18:15

    xilinx A7 200t PCI协议使用问题

    使用PCI协议与上位机进行通信,FPGA使用的是Xilinx A7 200t。使用过程中发现,PCI IP只能使用4.5个小时,之后配置空间仍然可用,而BAR空间不能使用。进行了多次尝
    发表于 07-26 14:03

    xilinx公司的7系列FPGA应用指南

    本文是关于 xilinx公司的7系列FPGA应用指南。xilinx公司的7
    发表于 08-07 17:22 201次下载
    <b class='flag-5'>xilinx</b>公司的<b class='flag-5'>7</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>应用指南

    FPGA实现CAN总线控制器源码

    Xilinx FPGA工程例子源码:FPGA实现CAN总线控制器源码
    发表于 06-07 14:13 92次下载

    CAN总线协议是什么?CAN总线协议有哪些?CAN总线协议知识分析

    本文说的CAN即是一种总线,也是一种协议。因此,我们常听见CAN总线,也常听见CAN
    的头像 发表于 10-03 19:53 7.5w次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>协议</b>是什么?<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>协议</b>有哪些?<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>协议</b>知识分析

    Xilinx 7系列FPGA介绍

    Xilinx 7系列FPGA概览 文章目录 Xilinx 7
    的头像 发表于 11-13 18:03 1.5w次阅读

    Xilinx 7 系列FPGA中的Serdes总结

    本文档的主要内容详细介绍的是Xilinx 7 系列FPGA中的Serdes总结。
    发表于 12-31 17:30 25次下载

    Xilinx 7系列FPGA简介--选型参考

    Xilinx-7系列FPGA主要包括:Spartan®-7、Artix®-7、Kintex®-7
    发表于 01-30 06:00 17次下载
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>简介--选型参考

    Xilinx 7系列FPGA管脚是如何定义的?

    引言: 我们在进行FPGA原理图和PCB设计时,都会涉及到FPGA芯片管脚定义和封装相关信息,本文就Xilinx 7系列
    发表于 05-01 09:47 1.1w次阅读
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>管脚是如何定义的?

    Xilinx 7系列FPGA管脚是如何定义与Pinout文件下载

    我们在进行FPGA原理图和PCB设计时,都会涉及到FPGA芯片管脚定义和封装相关信息,本文就Xilinx 7系列
    的头像 发表于 04-27 10:45 6796次阅读
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>管脚是如何定义与Pinout文件下载

    Xilinx 7系列与Ultrascale系列FPGA的区别

    Xilinx是一家专业的可编程逻辑器件(PLD)厂商,其产品包括FPGA、CPLD、SOC等。XilinxFPGA产品线有多个系列,其中
    发表于 09-15 14:44 5530次阅读
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b>与Ultrascale<b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>的区别

    简述Xilinx 7系列FPGA芯片相关知识

    Xilinx 7系列 芯片 应用非常广泛,具有成本低、性能强悍、成熟稳定的特点,目前Xilinx( AMD )已延长该系列芯片的生命周期至少
    的头像 发表于 11-28 10:20 1142次阅读
    简述<b class='flag-5'>Xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>芯片相关知识

    FPGA核心板 Xilinx Artix-7系列XC7A100T开发平台,米尔FPGA工业开发

    MYC-J7A100T核心板及开发Xilinx Artix-7系列XC7A100T
    发表于 05-31 15:12 8次下载