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

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

3天内不再提示

基于FPGA的轻量级CAN总线控制器

OpenFPGA 来源:OpenFPGA 2024-01-05 09:42 次阅读

0、CAN总线介绍

7a9b6af4-ab62-11ee-8b88-92fbcf53809c.png

1、CAN权威文档

CAN总线有两个ISO国际标准:ISO11898 和 ISO11519。其中:

ISO11898 定义了通信速率为 125 kbps~1 Mbps 的高速 CAN 通信标准,属于闭环总线,传输速率可达1Mbps,总线长度 ≤ 40米。

ISO11519 定义了通信速率为 10~125 kbps 的低速 CAN 通信标准,属于开环总线,传输速率为40kbps时,总线长度可达1000米。

ISO 11898 文档在这里

3、【小梅哥FPGA】使用FPGA实现CAN通信的例子(NIOS+CAN IP)

这是小梅哥FPGA开发板上的实例,之所以放到第一个是因为这是目前FPGA实现CAN通信的比较完美的解决方案,单纯使用硬件描述语言的IP,会有一些不可预知的BUG,但是使用软核处理器是比较完美的。

7ac35e2e-ab62-11ee-8b88-92fbcf53809c.png

上图就是整个项目的系统方案,也很好理解,就不过多赘述了。

SJA100就是CAN控制器

VP230就是CAN收发器

PS:代码在上诉链接中。

4、liteCAN

基于 FPGA 的轻量级CAN总线控制器

7ad2cabc-ab62-11ee-8b88-92fbcf53809c.png

此项目实现的是CAN控制器,CAN收发器还是需要外挂。

简介

CAN总线作为工业和汽车领域最常用的通信总线,具有拓扑结构简洁、可靠性高、传输距离长等优点。CAN总线的非破坏性仲裁机制依赖于帧ID,CAN2.0A和CAN2.0B分别规定了11bit-ID(短ID) 的标准帧和29bit-ID(长ID) 的扩展帧,另外,还有远程帧这种数据请求机制。关于CAN总线的更多知识可以参考这个科普文章。

CAN总线的复杂机制决定了控制器设计的复杂性。本库实现了一个轻量化但完备的CAN控制器,特点如下:

本地ID可固定配置为任意短ID。

发送 : 仅支持以本地ID发送数据长度为4Byte的帧。

接收 : 支持接收短ID或长ID的帧,接收帧的数据长度没有限制 (即支持 0~8Byte ) 。

接收帧过滤 : 可针对短ID和长ID独立设置过滤器,只接收和过滤器匹配的数据帧。

自动响应远程帧 : 当收到的远程帧与本地ID匹配时,自动将发送缓存中的下一个数据发送出去。若缓存为空,则重复发送上次发过的数据。

平台无关 :纯 RTL 编写 (SystemVerilog),可以在 Altera 和 Xilinx 等各种 FPGA 上运行。

设计文件说明

设计相关的4个文件在 RTL 文件夹中,各文件功能如下表。你只需将以上4个文件包含进工程,就可以调用can_top.sv进行更高层次的CAN通信业务的二次开发。

7ae6837c-ab62-11ee-8b88-92fbcf53809c.png

此项目非常完整,项目由中文说明,完备的TB及测试方案。

5、CAN-fpga

项目没有任何介绍,看文件结构,是基于Quartus II建立的,结构和上一项目完全没什么区别。整个项目应该是完备的,有兴趣可以看看。

6、sja1000

这个就是Verilog编写的外挂SJA100的驱动程序,这里就不过多介绍了。

7、Click_MCP25625

这是MCP25625(控制器+收发器集合)的SPI驱动(ARM单片机的)。

这个项目和这个功能一样,就不展开描述了。

USB-CAN(调试利器)

因为本期没几个开源项目,所以这里在推荐几个开源的USB-CAN方案,大部分都是可以直接打板使用的。

一、stm32f0 + CAN收发器TJA1051/3

ta有完全开源的软硬件及上位机支持,支持windos和linux Stock can并且都免驱哦。且支持Python

7ba796c0-ab62-11ee-8b88-92fbcf53809c.png7bbdd2fa-ab62-11ee-8b88-92fbcf53809c.png

上述的方案某宝上也有成品。

7bda4c46-ab62-11ee-8b88-92fbcf53809c.png

二、KS22方案

7bf24e68-ab62-11ee-8b88-92fbcf53809c.png7c128be2-ab62-11ee-8b88-92fbcf53809c.png

相关文档及上位机:

三、open-usb-can

7c35def8-ab62-11ee-8b88-92fbcf53809c.png

文档很完备。

该项目是基于 ATMega32U2 和 MCP2515 SPI CANBus 控制器的 USB 转 CANBus 接口

最后,还是感谢各个大佬开源的项目,让我们受益匪浅。后面有什么感兴趣方面的项目,大家可以在后台留言或者加微信留言,今天就到这,我是爆肝的碎碎思,期待下期文章与你相见。

7c46c15a-ab62-11ee-8b88-92fbcf53809c.jpg

审核编辑:汤梓红

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

    关注

    1625

    文章

    21665

    浏览量

    601761
  • CAN总线
    +关注

    关注

    145

    文章

    1936

    浏览量

    130625
  • CAN通信
    +关注

    关注

    5

    文章

    93

    浏览量

    17810
  • Verilog
    +关注

    关注

    28

    文章

    1343

    浏览量

    109976

原文标题:优秀的 Verilog/FPGA开源项目介绍(七)- CAN通信

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CAN总线控制器Verilog代码

    CAN总线控制器Verilog代码
    发表于 05-20 10:32 168次下载

    基于CAN总线的客房通信控制器的设计

    本文针对宾馆、酒店的客房控制和管理系统,介绍了基于CAN 总线的客房通信控制器的硬件电路结构、原理及软件结构和主程序流程。关键词:CAN
    发表于 06-13 12:06 13次下载

    基于STM32和FPGACAN总线运动控制器的设计

    运用低功耗C0rtex-M3微控制器STM32F103VBT6和FPGA芯片设计一种基于CAN总线的运动控制器。介绍系统的体系结构、主要硬件
    发表于 01-31 14:33 45次下载
    基于STM32和<b class='flag-5'>FPGA</b>的<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>运动<b class='flag-5'>控制器</b>的设计

    FPGA实现CAN总线控制器源码

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

    基于FPGACAN控制器MCP2515设计惯导系统的CAN总线

    接口控制新型的CAN 控制器MCP2515,使惯导系统不仅具备了接入CAN 总线的能力,而且在系统实现之后,节点可以根据现场应用提出的新要
    发表于 07-13 17:43 0次下载

    基于DSP_FPGACAN总线的跟踪控制器设计

    基于DSP_FPGACAN总线的跟踪控制器设计
    发表于 10-21 08:52 5次下载
    基于DSP_<b class='flag-5'>FPGA</b>与<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>的跟踪<b class='flag-5'>控制器</b>设计

    基于FPGACAN总线控制器SJA1000软核的设计方案解析

    单片机,实现与CAN控制器的通信联络。FPGA/SOPC技术是实现嵌入式系统的最高形式,基于IP软核的设计与应用也必将成为替代硬核的一种发展趋势。凭借QuartuslI和NiosII工具,基于
    发表于 12-07 11:20 30次下载
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>控制器</b>SJA1000软核的设计方案解析

    如何使用FPGA进行CAN控制器软核的设计与实现

    和Altera 公司部分FPGA 上的资源利用和性能情况。此外,基于SOPC技术将处理软核和CAN 控制器软核集成在单片FPGA 中,构建
    发表于 07-19 17:48 25次下载
    如何使用<b class='flag-5'>FPGA</b>进行<b class='flag-5'>CAN</b><b class='flag-5'>控制器</b>软核的设计与实现

    如何使用FPGACAN控制器MCP2515实现惯导系统的CAN总线接口的设计

    接口控制新型的CAN 控制器MCP2515,使惯导系统不仅具备了接入CAN 总线的能力,而且在系统实现之后,节点可以根据现场应用提出的新要
    发表于 01-27 15:52 17次下载
    如何使用<b class='flag-5'>FPGA</b>和<b class='flag-5'>CAN</b><b class='flag-5'>控制器</b>MCP2515实现惯导系统的<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>接口的设计

    如何用FPGA实现CAN总线通信控制器

    CAN 总线插卡可以任意插在 PC AT XT 兼容机上,方便地构成分布式监控系统。因此,用 FPGA 实现 CAN 总线通信
    发表于 07-29 09:43 2718次阅读

    基于FPGACAN总线控制器的设计

    今天给大侠带来基于FPGACAN总线控制器的设计,由于篇幅较长,分三篇。今天带来第一篇,上篇,CAN
    的头像 发表于 05-18 09:21 1271次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>CAN</b><b class='flag-5'>总线</b><b class='flag-5'>控制器</b>的设计

    基于FPGACAN总线通信节点设计

    点击上方 蓝字 关注我们 摘要:以FPGA 代替传统的单片机和外围扩展芯片, 给出了CAN 总线通信节点的详细设计方案。其中以SJA1000为CAN
    的头像 发表于 06-18 11:15 2851次阅读

    CAN总线控制器是什么意思

    CAN总线控制器(Controller Area Network Bus Controller)是CAN总线通信系统中的核心部件,它扮演着接
    的头像 发表于 09-03 14:16 745次阅读

    CAN总线控制器的工作原理

    CAN(Controller Area Network,控制器局域网)总线控制器的工作原理涉及多个方面,包括消息传输、冲突检测与解决、总线
    的头像 发表于 09-30 11:33 589次阅读

    如何选择CAN总线控制器

    在现代工业自动化和汽车电子领域,CAN(Controller Area Network)总线因其高可靠性、实时性和灵活性而成为广泛使用的通信协议之一。选择合适的CAN总线
    的头像 发表于 11-12 09:48 145次阅读