FPGA实现MCP2515 CAN通讯功能

1.概要

        因为公司业务需要,需要将某款产品从ethercat总线替换为CAN总线。作为刚从PLC转行到FPGA的工程师,这也是我第一次独立开发产品。拿到工作需求后,立马看手册,发现手册内容繁多,寄存器很多,为此花费了大量时间筛选和测试,最后终于将其简化,实现了CAN的通讯功能。                

        在实现过程中,刚开始采用了面向过程的控制方式,结果发现仅仅实现一个初始化功能就有上千行代码,最后参照软件的编程方式,面向对象,以方法的方式实现SPI的数据访问,结果良好。

2.硬件搭建

        最初的设定是一个CAN做主站,4个做从站,用到5个MCP2515。但是因为第一次做该类产品,害怕让项目周期延长,所以最终实现方式就是1个CAN做主站,1个CAN做从站,共搭建4路,使用8个MCP2515模块。具体连接图如下:

3.详细流程

MCP2515分成了初始化,发送和接收功能,此3部分可在操作手册中找到,在代码中我进行了部分简化,只使用了spi的4路信号,而中断引脚,复位引脚,发送引脚和接收引脚均使用软件代替,没有占用FPGA的IO资源。接收和发送各使用了一个缓冲器。

3.1初始化流程

初始化流程按以下顺序执行:

上电等待--进入测试模式(H0F)--设置波特率(H28-H2A)--设置中断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值