树莓派利用MCP2515实现SPI转CAN通信(C语言)

linux 徐 自远 1860℃

树莓派利用MCP2515实现SPI转CAN通信(C)
1、主要硬件
树莓派3b、ubuntu16.04、RS485_CAN_HAT、CAN分析仪

2、主要实现方法
之前使用PYTHON库工具直接实现了CAN的通信,但项目上层使用C++,也因为不知道如何去得到PYTHON接收到的数据,套接字的方法还是了解的少,故重新使用C来实现基于BCM2835库的CAN通信协议。
1
3、主要函数
协议首先需要封装基于BCM2835的SPI的读和写,一次操作一个字节的数据。基于这两个读写,再封装读写命令。
MCP2515的读写之前,都需要向SPI总线发送CAN_READ或者CAN_WRITE命令,再提供地址、数据来完成读写。MCP2515的初始化,首先调用BCM2835来初始化SPI,树莓派3B的spi接口固定,片选引脚可选,按照原理图的设计来选择是CE0还是CE1。
发送缓冲器标准标志符的高低位为16位,前11位对应于CAN的ID,在初始化MCP2515时不对其进行限制。初始化验收屏蔽寄存器为0,可以不启用验收滤波器,接收所有ID的CAN报文。验收屏蔽寄存器与验收滤波器位对应,屏蔽寄存器对应位为1,为启用该位的滤波,滤波位相同接收,详细见MCP2515手册。
发送函数需要提供数据的长度、数据地址、报文ID。接收函数在存储数组的最后一位存放该报文的ID。

 

4、总结
树莓派基于库的操作相对都是简单的。
1
5、参考
https://blog.csdn.net/eric_lmy/article/details/51946156
http://www.waveshare.net/wiki/RS485_CAN_HAT
MCP2515数据手册http://www.usr.cn/Uploads/Attach/201012/4cf65dd9de775.pdf
https://blog.csdn.net/tylr2005/article/details/52468433
http://www.geek-workshop.com/thread-33355-1-1.html
———————
作者:Yellor__
来源:CSDN
原文:https://blog.csdn.net/LLiu_M__/article/details/81782986
版权声明:本文为博主原创文章,转载请附上博文链接!

转载请注明:徐自远的乱七八糟小站 » 树莓派利用MCP2515实现SPI转CAN通信(C语言)

喜欢 (0)

苏ICP备18041234号-1 bei_an 苏公网安备 32021402001397号