RK3588 Linux SDK配置SPI转MCP2515 CAN驱动

发布时间:2026/7/24 22:20:42
RK3588 Linux SDK配置SPI转MCP2515 CAN驱动 以正点原子RK3588 Linux SDK在内核开启SPI转MCP2515 CAN驱动为例。该SDK已经自带MCP251x和mcp251xfd驱动路径/kernel/drivers/net/can/spi我们只需要在内核中启用MCP2515和添加设备树即可。一内核启用MCP2515驱动。打开内核图形化配置界面在内核源码目录下执行如下命令可打开menuconfig图形化配置界面。1.加载配置文件makeARCHarm64 rockchip_linux_defconfig2. 打开图形化配置界面makeARCHarm64 menuconfig3. 选择Networking support选项并进入4. 选中CAN bus subsystem support选项并进入5. 选中CAN Device Drivers选项并进入6. 选中CAN SPI interfaces选项并进入8. 选中Microchip MCP251x SPI CANcontrollers选项,并保存。9.配置完成后执行如下命令保存配置//在内核源码目录下执行如下命令保存配置。makeARCHarm64 savedefconfig//替换配置cpdefconfig arch/arm64/configs/rockchip_linux_defconfig二修改设备树路径rk3588_linux_sdk/kernel/arch/arm64/boot/dts/rockchip/rk3588-atk-devkit.dtsi/{/* 添加时钟以MCP2515物理晶振频率为准 */ clk8m: clk8{compatiblefixed-clock;#clock-cells 0;clock-frequency8000000;};};pinctrl{mcp2515{mcp2515_int_pins_spi0: mcp2515-int-pins-spi0{rockchip,pins1RK_PB5 RK_FUNC_GPIOpcfg_pull_up;};mcp2515_int_pins_spi4: mcp2515-int-pins-spi04{rockchip,pins1RK_PB6 RK_FUNC_GPIOpcfg_pull_up;};};};spi0{statusokay;pinctrl-namesdefault;pinctrl-0spi0m2_pinsspi0m2_cs0;#address-cells 1;#size-cells 0;max-freq10000000;mcp25150{statusokay;compatiblemicrochip,mcp2515;reg0;spi-max-frequency10000000;pinctrl-namesdefault;pinctrl-0mcp2515_int_pins_spi0;interrupt-parentgpio1;interruptsRK_PB5 IRQ_TYPE_LEVEL_LOW;clocksclk8m;vdd-supplyvcc_3v3_s3;xceiver-supplyvcc_3v3_s3;};};spi4{statusokay;pinctrl-namesdefault;pinctrl-0spi4m2_pinsspi4m2_cs0;#address-cells 1;#size-cells 0;max-freq10000000;mcp25150{statusokay;compatiblemicrochip,mcp2515;reg0;spi-max-frequency10000000;pinctrl-namesdefault;pinctrl-0mcp2515_int_pins_spi4;interrupt-parentgpio1;interruptsRK_PB6 IRQ_TYPE_LEVEL_LOW;clocksclk8m;vdd-supplyvcc_3v3_s3;xceiver-supplyvcc_3v3_s3;};};三编译内核烧录镜像。调用build.sh脚本编译内核./build.sh kernel内核编译成功无错误无警告。使用RKDevTool烧录镜像四查看 spi设备节点信息。ls/sys/bus/spi/devices/cat/sys/bus/spi/devices/spi0.0/ueventcat/sys/bus/spi/devices/spi4.0/ueventls-l/sys/bus/spi/devices/spi0.0/driverls-l/sys/bus/spi/devices/spi4.0/driver可以看到SPI0、SPI4绑定mcp2515驱动正常。ifconfig-a我们看到有can0和can1,嵌入式Arm Linux内核开启SPI MCP2515驱动已经顺利完成关于can调试可参考《Linux免驱使用PCAN /PCAN FD使用方法以Ubuntu为例》由于测试的这块MCP2515使用的的8M晶振所以CAN波特率最大只能到500K可以更换成16M晶振支持CAN波特率1M.