树莓派ubuntu mate16.04配置实现SPI转CAN

树莓派ubuntu mate16.04配置实现SPI转CAN


硬件

RaspberryPi 3b
RS485 CAN HAT树莓派扩展模块,mcp2515
CAN分析仪

系统

ubuntu mate16.04 desktop

安装必备库

WiringPi 的安装
WiringPi 官网下载: https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/
复制安装包到你自己的镜像的系统中,把文件解压后,进入 WiringPi 文件夹内部,执行:

chmod 777 build
./build

安装完后输入: gpio -v查看是否安装完成
bcm2835 C 函数库的安装
bcm2835 官网下载:http://www.airspayce.com/mikem/bcm2835/
复制文件解压后,进入 bcm2835-1.36 文件夹内部,执行:

./configure
make
sudo make check
sudo make install

python 函数库的安装
通过apt-get命令安装树莓派的python函数库(包括RPi.GPIO安装包和spidev安装包)链接如下,点进去左上命令复制安装即可
https://pypi.python.org/pypi/RPi.GPIO
https://pypi.python.org/pypi/spidev

pip install RPi.GPIO
pip install spidev

安装python-dev

sudo apt-get install python-dev

安装smbus库,I2C接口库函数

sudo apt-get install python-smbus

安装serial库,UART接口库函数

sudo apt-get install python-serial

安装Can-utils库

sudo apt-get install git autoconf libtool
git clone https://github.com/linux-can/can-utils.git
cd can-utils
./autogen.sh
./configure
make
sudo make install

sudo apt-get install can-utils 

设置接口功能

运行如下命令进入树莓派配置(3b支持)

sudo raspi-config

选择第三项Interfacing Options–>SPI、I2C、Serial、SSH等开启,finish退出
重启生效

sudo reboot

ubuntu 下
建议使用ssh来用电脑控制树莓派,命令为

ssh raspberrypi_username@raspi_ip

例如ssh [email protected]。ssh相当于开启一个树莓派的终端

启动文件配置

修改树莓派的/boot/config.txt

sudo vim /boot/config.txt

在config.txt最后加入

dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=8000000,interrupt=25 
dtoverlay=spi-bcm2835-overlay

其中模块使用mcp2515-can0,时钟晶振频率为8M,中断25,实际之前配置已经启动了spi,这里第一句修改启动文件,可以确保开机生效,之后

sudo reboot

验证

终端输入ifconfig-can出现如下

pi@raspberrypi:~ $ ifconfig can
can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

打开文件/boot/overlays/README,可以找到

Name:   mcp2515-can0
Info:   Configures the MCP2515 CAN controller on spi0.0
Load:   dtoverlay=mcp2515-can0,<param>=<val>
Params: oscillator              Clock frequency for the CAN controller (Hz)

        spimaxfrequency         Maximum SPI frequence (Hz)

        interrupt               GPIO for interrupt signal

启动can

CAN0以50K的传输速率,最大500K

sudo ip link set can0 up type can bitrate 50000

每次修改速率之前都需要关闭CAN0,

sudo ip link set can0 down

发送CAN帧

上一步启动can之后,另外开一个终端来查看接收,使用命令如下

candump can0

发送终端示例

cansend can0 001#1122334455667788

can分析仪图
raspberrypi上面图

猜你喜欢

转载自blog.csdn.net/LLiu_M__/article/details/81711422