FPGA + SJA1000 实现 <PCIe to CAN> 网卡的设计

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_46621272/article/details/118242161?

PCIe to CAN 网卡的设计FPGA Verilog/Linux 驱动/源代码/软硬件调试/详细说明

  • 采用 本文中的代码,能很容易的实现 网卡的设计。
  • 只是给大家提供一个思路、知识点,嵌入式 CPU 功能越来越强大,PCIE 是一些高端 CPU 的标准配置。用 PCIE + FPGA 扩展 CAN/网卡/串口 等多个多种常用端口很方便。
  • 本方案里,只采用 1 片 SJA1000 实现 1 路 CAN 。可以通过简单的修改 实现多路 CAN 。
  • 本方案采用 海思 Hi3531D + FPGA + SJA1000 实现 PCIe to CAN,Vivado 工程,IP 参数设置, Verilog 代码,约束文件,Linux 内核定制,Linux 驱动,调试记录、全套代码。
  • 在 Linux 驱动调试说明中介绍一些软硬件的知识点。
  • CSDN 下载需要积分,很讨厌,这里的代码都给大家贴出来,复制粘贴大家都会吧。
  • CAN 为什么选 SJA1000 ?其实从硬件设计上看,XILINX 有个 AXI CAN 的 IP , Linux 也有驱动(没调试验证过),没授权也就没采纳该方案。查看市场上 PCIE CAN 卡多数都是用 PCIE 桥片 + SJA1000 芯片 实现,查看当前 Linux CAN 驱动芯片列表 SJA1000 芯片占一大项,芯片好买,参考代码多,为减少软件驱动编写开发的难度决定采用该芯片。
  • 在我们做产品设计时,linux 驱动是个很头疼的事,公司开发人员不是万能的奥特曼,不是什么驱动都会编写,总有知识盲点。在做产品方案时,linux 驱动移植编写能力是首先需要考虑的。有些时候硬件采用成熟的大公司的贵的芯片做产品设计时就是考虑降低软硬件调试的难度。先做出产品来,在有产品批量、功能已经完善、时再考虑降低产品的成本,有针对的选择一些性价比高的芯片。
  • 有技术问题可以联系 708907433@qq.com

PCIE_CAN 原理图
PCIE_CAN FPGA 工程详细说明
PCIE_CAN Linux 驱动详细说明
PCIE_CAN 硬件调试过程记录(好大的坑,还好爬出来了)
源码 FPGA Verilog: pcie_can_root.sv
源码 FPGA Verilog: pcie_can_root.xdc
源码 FPGA Vivado: pcie_can_bd.bd
源码 Linux drivers: oem_pcie.c

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于FPGASJA1000的CAN总线通信是一种常见且可靠的通信方式,下面将详细介绍。 首先,了解CAN总线通信的基本概念。CAN(Controller Area Network)是一种广泛应用于工业领域的串行通信协议,可实现多个节点之间的数据传输。CAN总线具有高可靠性、抗干扰能力强、传输速率高等优点,因此在汽车电子、工业自动化、医疗设备等领域得到广泛应用。 在基于FPGASJA1000的CAN总线通信中,FPGA(Field Programmable Gate Array)作为硬件平台,负责实现CAN总线通信的各种功能。SJA1000则是一款广泛应用的CAN总线控制器芯片,负责控制CAN总线的物理层通信。 具体实现上,首先需要将SJA1000FPGA进行连接,通过SPI或其他接口连接方式进行数据的传输。接着,FPGA通过配置和控制SJA1000来进行CAN总线通信的初始化和设置。这包括设置CAN解调器的工作模式、波特率、数据过滤等参数。 在数据的接收方面,FPGA通过配置SJA1000进入接收模式,并实现CAN帧的接收与解析。通过CAN总线收到的数据将被传输到FPGA内部,然后进行后续处理,如数据解码、验证、分析等。 在数据的发送方面,FPGA将需要发送的数据通过内部逻辑和控制器生成CAN帧的格式,并将其发送到SJA1000控制器。SJA1000将CAN帧转换为CAN总线上的物理信号,并通过CAN总线发送出去。 值得注意的是,为了保证数据传输的可靠性和稳定性,FPGA需要实现各种错误处理机制,如校验和校验、错误帧过滤、错误标记等。此外,FPGA还可以实现CAN总线监控功能,及时检测和处理总线上的错误和异常情况。 总之,基于FPGASJA1000的CAN总线通信是一种可靠性高、抗干扰能力强的通信方式。通过FPGA的逻辑实现SJA1000的控制,可以实现CAN总线通信的各种功能,并满足不同领域的应用需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老皮芽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值