Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Interfacing with MCP2518FD on RockPi 4B

Featured Replies

Hello,

 

I have been trying to interface with a MCP2518FD CAN controller using a RockPi 4b and have been encountering some issues. 

 

The specifications in which I want the CANbus to operate are as such: 

Baud: 250kb/s

FD: OFF

 

Other details:

Oscillator: 40MHz

SPI Bus: SPI1 (see below)

 

The RockPi pins that are being used are the following (based on the standard pinout of the RockPi 4B https://wiki.radxa.com/Rock4/hardware/gpio) 

Pin #19 SPI1_TXD -> MOSI

Pin #21 SPI1_RXD -> MISO

Pin #23 SPI1_CLK -> SCK

Pin #22 GPIO4_D5  -> INT

Pin #24 SPI1_CSn -> CS

 

I have tried various DT overlay files and most files don't even provide an output for the commands "dmesg | grep spi" or "dmesg | grep mcp" except for this overlay that gives me a response that chip select 0 is already in use: 

 

/dts-v1/;
/plugin/;

/ {
	compatible = "rockchip,rockpi","rockchip,rk3399";

	fragment@0 {
		target = <&pinctrl>;

		__overlay__ {
			mcp2518_int_pin: mcp2518_int_pin {
				rockchip,pins = <4 29 0 &pcfg_pull_none>;
			};
		};		
	};

	fragment@1 {
		target-path = "/";

		__overlay__ {
			can_mcp2518_osc: can-mcp2518-osc {
				compatible = "fixed-clock";
				clock-frequency = <40000000>; // Change to 40 MHz
				#clock-cells = <0>;
			};
		};
	};

	fragment@2 {
		target = <&spi1>;

		__overlay__ {
			status = "okay";
			max-frequency = <10000000>; // Keep it at 10 MHz
			#address-cells = <1>;
			#size-cells = <0>;

			can_mcp2518: can-mcp2518@0 {
				status = "okay";
				compatible = "microchip,mcp2518";
				reg = <0>;
				interrupt-parent = <&gpio4>;
				interrupts = <29 2>;
				spi-max-frequency = <10000000>; // Keep it at 10 MHz
				clocks = <&can_mcp2518_osc>; // Change to the new clock node
				vdd-supply = <&vcc3v3_sys>;
				xceiver-supply = <&vcc3v3_sys>;
				pinctrl-names = "default";
				#pinctrl-0 = <&mcp2518_int_pin>; // Change to the new pin name
			};
		};
	};
};

 

And this is the specific message I get when I compile this DTS (via command "armbian-add-overlay") and reboot: 

 

root@rockpi-4b:~# dmesg | grep spi

[ 1.522099] rockchip-spi ff1d0000.spi: chipselect 0 already in use

[ 1.522115] spi_master spi1: spi_device register error /spi@ff1d0000/spidev@0

[ 1.522141] spi_master spi1: Failed to create SPI device for /spi@ff1d0000/spidev@0

 

And there is no response on dmesg | grep mcp or any can0 interface created on ifconfig....

 

The operating system in which I am running is 5.15.74-rockchip64

 

I have previously used this board to successfully interface with a MCP2515 @250Kb/s, but I am looking to upgrade to the 2518. I removed the previous DTBO and user-overlay from armbianEnv.txt.

 

If anyone has any idea on what the issue may be or can walk me through step by step on how to set this up, I would greatly appreciate it. I am not great with linux, so please bear with me. if a solution involves installing a driver or rebuilding the kernel, I am not entirely sure on how to perform that, so any resource or information on this would be extremely helpful for me. Even if I have to start from a scratch image, this is okay. 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.