I am trying to use the MCP2515 SPI2CAN adapter with the nRF9160 DK.
I started by trying to get the Zephyr socket_can sample to work. My efforts are based on this thread.
The problem is, that I am always getting an "SPI bus not ready" error from the can_mcp2515 driver.
I successfully tested the SPI with a simple loopback example, so the overlay should be correct.
Here is my device tree overlay:
&spi3 { status = "okay"; cs-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; sck-pin = <10>; mosi-pin = <11>; miso-pin = <12>; can1: mcp2515@0 { compatible = "microchip,mcp2515"; spi-max-frequency = <1000000>; int-gpios = <&gpio0 31 GPIO_ACTIVE_LOW>; status = "okay"; label = "CAN_1"; reg = <0x0>; osc-freq = <10000000>; bus-speed = <1000000>; sjw = <1>; prop-seg = <2>; phase-seg1 = <7>; phase-seg2 = <6>; #address-cells = <1>; #size-cells = <0>; }; }; / { chosen { zephyr,canbus = &can1; }; };
prj.conf:
CONFIG_CAN=y CONFIG_SPI=y CONFIG_SPI_NRFX=y CONFIG_CAN_MAX_FILTER=5 CONFIG_CAN_MCP2515=y CONFIG_SPI_LOG_LEVEL_DBG=y CONFIG_NETWORKING=y CONFIG_NET_SOCKETS=y CONFIG_NET_SOCKETS_CAN=y CONFIG_NET_SOCKETS_POSIX_NAMES=y CONFIG_NET_IPV6=n CONFIG_NET_IPV4=n CONFIG_NET_MGMT=n CONFIG_NET_TCP=n CONFIG_NET_UDP=n CONFIG_NET_DEFAULT_IF_CANBUS_RAW=y CONFIG_NET_PKT_RX_COUNT=30 CONFIG_NET_PKT_TX_COUNT=30 CONFIG_NET_BUF_RX_COUNT=30 CONFIG_NET_BUF_TX_COUNT=30 CONFIG_TEST_RANDOM_GENERATOR=n CONFIG_NET_SHELL=y CONFIG_LOG=y CONFIG_NET_LOG=y CONFIG_LOG_MODE_IMMEDIATE=y CONFIG_NET_SOCKETS_LOG_LEVEL_DBG=y CONFIG_CAN_LOG_LEVEL_DBG=y #CONFIG_NET_CONTEXT_LOG_LEVEL_DBG=y #CONFIG_NET_CORE_LOG_LEVEL_DBG=y #CONFIG_NET_CONN_LOG_LEVEL_DBG=y # Use smaller buffers for net_buf as CANBUS packets are quite small. CONFIG_NET_BUF_DATA_SIZE=64
Output: