版权声明:本文为博主原创文章,遵循 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