树莓派4B Ubuntu20.04下MCP2515 CAN扩展板无法运行问题咨询
树莓派4 Ubuntu 20.04 MCP2515 CAN扩展板识别失败问题解答
问题属性
这是树莓派4运行Ubuntu 20.04系统的已知通用问题,核心触发原因有两点:
- Ubuntu for 树莓派的启动配置文件路径和Raspbian不同,用户误改无效配置文件
- 默认系统镜像未预装SPI、CAN外设所需的额外内核模块,且SPI驱动加载时机早于时钟驱动初始化,导致dmesg返回
-517探针延迟错误,模块加载失败
解决方案
按以下步骤操作即可修复:
- 第一步:安装依赖内核模块包
执行命令:sudo apt update && sudo apt install -y linux-modules-extra-raspi raspberrypi-kernel-headers - 第二步:修改正确的启动配置文件
Ubuntu for 树莓派的有效启动配置文件为/boot/firmware/config.txt,先删除你之前在/boot/config.txt中添加的无效配置,再编辑/boot/firmware/config.txt,在文件末尾添加如下内容:
dtparam=spi=on dtoverlay=spi0-hw-cs dtoverlay=mcp2515-can0,oscillator=12000000,interrupt=25
注意:不需要手动添加dtoverlay=spi-bcm2835配置,Ubuntu内核已内置该驱动的加载逻辑,手动添加反而会触发加载顺序冲突
- 第三步:配置内核模块开机自动加载
编辑/etc/modules文件,在末尾添加两行内容:
spi-bcm2835 mcp251x
- 第四步:重启验证配置
执行sudo reboot重启系统,重启后先执行lsmod | grep spi,如果能看到spi_bcm2835模块输出,说明SPI驱动加载正常;再执行ip link show can0,如果返回can0接口信息,说明CAN扩展板已经识别成功。 - 第五步:启用CAN接口(可选)
如果需要启用can0接口使用,执行如下命令配置波特率并启用:sudo ip link set can0 up type can bitrate 500000
波特率可根据你的CAN总线需求调整,常用值包括250000、500000、1000000
配置完成后执行ifconfig can0即可看到正常的接口信息。
内容的提问来源于stack exchange,提问作者Jonas
相关产品推荐
相关产品推荐

