DCAN Pins

Hey everybody! Hopefully a few simple questions some more experienced users can answer. I am attempting to read and send can CAN using the DCAN1_RX and DCAN1_TX modes for pins P9_24 and P9_26. Here is the step by step of what I do.

  1. Echo the device tree overlay to /sys/devices/bone_capemgr.9/slots (shown below)
  2. I then attempt to set up CAN interface with the following line of code:

ip link set can1 type can bitrate 500000

This gives me a response "cannot find device “can1"” yet when I switch can1 to can0 in the code above, it is successful in configuring the CAN interface. So is the CAN interface on pins P9_24 and P9_26 supposed to be DCAN0 and not DCAN1?

My second question regards what I have seen in other posts. Many posts have said you need to reconfigure the kernel to get DCAN working on the beaglebone (http://processors.wiki.ti.com/index.php/AM335X_DCAN_Driver_Guide#Detailed_Kernel_Configuration). Why is this necessary? Isn’t a device tree overlay sufficient?

I am running Debian Image 2014-04-23 and the kernel is 3.8.13-bone47.

Thanks for any help (ps I will be gone for a day or two so I won’t be able to respond to any questions you may have for me until then).

BB-DCAN1.dts

/dts-v1/;
/plugin/;

/ {
compatible = “ti,beaglebone”, “ti,beaglebone-black”;

/* identification */
part-number = “dcan1pinmux”;

fragment@0 {
target = <&am33xx_pinmux>;
overlay {
dcan1_pins_s0: dcan1_pins_s0 {
pinctrl-single,pins = <
0x180 0x12 /* P9_26 DCAN1_TX, SLEWCTRL_FAST | OUTPUT_PULLUP | MODE2 /
0x184 0x32 /
P9_24 DCAN1_RX, SLEWCTRL_FAST | INPUT_PULLUP | MODE2 */

;
};
};
};

fragment@1 {
target = <&dcan1>;
overlay {
#address-cells = <1>;
#size-cells = <0>;

status = “okay”;
pinctrl-names = “default”;
pinctrl-0 = <&dcan1_pins_s0>;
};
};
};

Hey everybody! Hopefully a few simple questions some more experienced users can answer. I am attempting to read and send can CAN using the DCAN1_RX and DCAN1_TX modes for pins P9_24 and P9_26. Here is the step by step of what I do.

  1. Echo the device tree overlay to /sys/devices/bone_capemgr.9/slots (shown below)
  2. I then attempt to set up CAN interface with the following line of code:

ip link set can1 type can bitrate 500000

This gives me a response "cannot find device “can1"” yet when I switch can1 to can0 in the code above, it is successful in configuring the CAN interface. So is the CAN interface on pins P9_24 and P9_26 supposed to be DCAN0 and not DCAN1?

CAN0 and CAN1 are labelled dcan1 and dcan2 accordingly in the Device Tree, so you want can1 in your overlay to use the can0 pins and can0 network interface.

My second question regards what I have seen in other posts. Many posts have said you need to reconfigure the kernel to get DCAN working on the beaglebone (http://processors.wiki.ti.com/index.php/AM335X_DCAN_Driver_Guide#Detailed_Kernel_Configuration). Why is this necessary? Isn’t a device tree overlay sufficient?

Not true, the CAN0 module at least works fine with the Debian images. Some more info here: http://inspire.logicsupply.com/2014/06/cbb-serial-automotive-can-bus.html

I am running Debian Image 2014-04-23 and the kernel is 3.8.13-bone47.

Thanks for any help (ps I will be gone for a day or two so I won’t be able to respond to any questions you may have for me until then).

BB-DCAN1.dts

/dts-v1/;
/plugin/;

/ {
compatible = “ti,beaglebone”, “ti,beaglebone-black”;

/* identification */
part-number = “dcan1pinmux”;

fragment@0 {
target = <&am33xx_pinmux>;
overlay {
dcan1_pins_s0: dcan1_pins_s0 {
pinctrl-single,pins = <
0x180 0x12 /* P9_26 DCAN1_TX, SLEWCTRL_FAST | OUTPUT_PULLUP | MODE2 /
0x184 0x32 /
P9_24 DCAN1_RX, SLEWCTRL_FAST | INPUT_PULLUP | MODE2 */

;
};
};
};

fragment@1 {
target = <&dcan1>;
overlay {
#address-cells = <1>;
#size-cells = <0>;

status = “okay”;
pinctrl-names = “default”;
pinctrl-0 = <&dcan1_pins_s0>;
};
};
};

That overlay looks right for CAN0.

I just want to clarify really quick. Is DCAN0 “connected” to pins P9_24 and P9_26 and DCAN1 is for pins P9_19 and P9_20?

I just want to clarify really quick. Is DCAN0 “connected” to pins P9_24 and P9_26 and DCAN1 is for pins P9_19 and P9_20?

Correct.