Hi Folks, I am easily able to receive CAN traffic with my Peak USB-CAN interface on my linux workstation. I know our device is producing regular updates at 250000 and it dumps find using candump.
For a couple days I have been trying (without success) to duplicate the behavior on my Element Rev B6 Beaglebone. I've read many posts and have worked bast a bunch of issues but still get no can traffic. The results are the same with a WaveShare CAN Cape or a discrete NXP TJA1051 High-speed CAN transceiver that I have connected on a breadboard. If I hook a scope to the input RX signal I can see the external CAN traffic but nothing gets through. I did modify ~/bb.org-overlays/src/arm/cape-universaln-00A0.dts to remove references to pins P9_24 and P9_26 (UART1 RX/TX) For clarity's sake here is the script that I run after rebooting the Beaglbone. set -x echo "# make sure, I'm running as root, unmolested bone-debian-8.3-lxqt-4gb-armhf-2016-01-24-4gb.img image" id uname -a echo "# look, can pin muxing for P9_24 and P9_26 are at default (GPIO, mode 7)" devmem2 0x44E10980 w devmem2 0x44E10984 w echo "# cat my overlay File, has been built/installed/rebooted successfully" cat /hone/debian/bb.org-overlays/src/arm/BB-CAN1-00A0.dts echo "# install my overlay to setup the CAN pins" sh -c "echo 'BB-CAN1' > /sys/devices/platform/bone_capemgr/slots" echo "# see that the overlay was installed and make sure pins went to mode 2" cat /sys/devices/platform/bone_capemgr/slots devmem2 0x44E10980 w devmem2 0x44E10984 w echo "#load the can drivers" modprobe can modprobe can-dev modprobe can-raw echo "# show what's loaded" lsmod echo "# fire up the interface" ip link set can0 type can bitrate 250000 triple-sampling on ip link set can0 up echo "# see that we're up" ifconfig can0 echo "#Shoud receive can data, same as my linux workstation..." candump can0 Here is the output from the script.. debian@beaglebone:~$ sudo ./canSetup.sh + echo # make sure, I'm running as root, unmolested bone-debian-8.3-lxqt-4gb-armhf-2016-01-24-4gb.img image # make sure, I'm running as root, unmolested bone-debian-8.3-lxqt-4gb-armhf-2016-01-24-4gb.img image + id uid=0(root) gid=0(root) groups=0(root) + uname -a Linux beaglebone 4.1.15-ti-rt-r43 #1 SMP PREEMPT RT Thu Jan 21 20:13:58 UTC 2016 armv7l GNU/Linux + echo # look, can pins P9_24 and P9_26 are at default (GPIO, mode 7) # look, can pins P9_24 and P9_26 are at default (GPIO, mode 7) + devmem2 0x44E10980 w /dev/mem opened. Memory mapped at address 0xb6f93000. Value at address 0x44E10980 (0xb6f93980): 0x37 + devmem2 0x44E10984 w /dev/mem opened. Memory mapped at address 0xb6f9b000. Value at address 0x44E10984 (0xb6f9b984): 0x37 + echo # cat my overlay File, has been built/installed/rebooted successfully # cat my overlay File, has been built/installed/rebooted successfully + cat /home/debian/bb.org-overlays/src/arm/BB-CAN1-00A0.dts /* * Copyright (C) 2015 Robert Nelson <[email protected]> * * Virtual cape for CAN1 on connector pins P9.24 P9.26 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ /dts-v1/; /plugin/; #include <dt-bindings/board/am335x-bbw-bbb-base.h> #include <dt-bindings/pinctrl/am33xx.h> / { compatible = "ti,beaglebone", "ti,beaglebone-black", "ti,beaglebone-green"; /* identification */ part-number = "BB-CAN1"; version = "00A0"; /* state the resources this cape uses */ exclusive-use = /* the pin header uses */ "P9.24", /* can1_rx */ "P9.26", /* can1_tx */ /* the hardware ip uses */ "dcan1"; fragment@0 { target = <&am33xx_pinmux>; __overlay__ { bb_dcan1_pins: pinmux_dcan1_pins { pinctrl-single,pins = < BONE_P9_24 (SLEWCTRL_FAST | PIN_INPUT_PULLUP | MUX_MODE2 ) /* uart1_txd.d_can1_rx */ BONE_P9_26 (SLEWCTRL_FAST | PIN_OUTPUT_PULLUP | MUX_MODE2) /* uart1_rxd.d_can1_tx */ >; }; }; }; fragment@1 { target = <&dcan1>; __overlay__ { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&bb_dcan1_pins>; }; }; }; + echo # install my overlay to setup the CAN pins # install my overlay to setup the CAN pins + sh -c echo 'BB-CAN1' > /sys/devices/platform/bone_capemgr/slots + echo # see that the overlay was installed and make sure pins went to mode 2 # see that the overlay was installed and make sure pins went to mode 2 + cat /sys/devices/platform/bone_capemgr/slots 0: PF---- -1 1: PF---- -1 2: PF---- -1 3: PF---- -1 4: P-O-L- 0 Override Board Name,00A0,Override Manuf,cape-universaln 5: P-O-L- 1 Override Board Name,00A0,Override Manuf,BB-CAN1 + devmem2 0x44E10980 w /dev/mem opened. Memory mapped at address 0xb6f21000. Value at address 0x44E10980 (0xb6f21980): 0x12 + devmem2 0x44E10984 w /dev/mem opened. Memory mapped at address 0xb6fa5000. Value at address 0x44E10984 (0xb6fa5984): 0x32 + echo #load the can drivers #load the can drivers + modprobe can + modprobe can-dev + modprobe can-raw + echo # show what's loaded # show what's loaded + lsmod Module Size Used by can_raw 5408 0 can 28227 1 can_raw c_can_platform 6564 0 c_can 9605 1 c_can_platform can_dev 11455 1 c_can spidev 6739 0 pwm_tiecap 3492 0 pwm_tiehrpwm 4546 0 tieqep 8510 0 8021q 17336 0 garp 5975 1 8021q mrp 7322 1 8021q stp 1911 1 garp llc 5257 2 stp,garp snd_soc_evm 5749 0 pruss_remoteproc 15296 0 snd_soc_davinci_mcasp 17266 2 snd_soc_edma 1150 1 snd_soc_davinci_mcasp omap_rng 4358 0 rng_core 7437 1 omap_rng tilcdc 26254 0 spi_omap2_mcspi 10681 0 usb_f_acm 7180 1 u_serial 10596 3 usb_f_acm usb_f_rndis 22734 1 g_multi 5316 0 usb_f_mass_storage 42745 2 g_multi u_ether 12028 2 usb_f_rndis,g_multi libcomposite 43810 4 usb_f_acm,usb_f_rndis,g_multi, usb_f_mass_storage tda998x 11749 0 snd_soc_hdmi_codec 2474 1 uio_pdrv_genirq 3521 0 uio 8463 1 uio_pdrv_genirq + echo # fire up the interface # fire up the interface + ip link set can0 type can bitrate 250000 triple-sampling on + ip link set can0 up + echo # see that we're up # see that we're up + ifconfig can0 can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00 UP RUNNING NOARP MTU:16 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:208 + echo #Shoud receive can data, same as my linux workstation... #Shoud receive can data, same as my linux workstation... + candump can0 .... Nothing produced. Here is the dmesg output while the script is running... [ 101.514143] bone_capemgr bone_capemgr: part_number 'BB-CAN1', version 'N/A' [ 101.514196] bone_capemgr bone_capemgr: slot #5: override [ 101.514222] bone_capemgr bone_capemgr: Using override eeprom data at slot 5 [ 101.514250] bone_capemgr bone_capemgr: slot #5: 'Override Board Name,00A0,Override Manuf,BB-CAN1' [ 102.998539] c_can_platform 481d0000.can: c_can_platform device registered (regs=fa1d0000, irq=209) [ 103.002556] bone-pinmux-helper ocp:P8_09_pinmux: could not find pctldev for node /ocp/l4_wkup@44c00000/prcm@200000/clocks/dpll_per_m2_ck, deferring probe [ 103.003340] bone_capemgr bone_capemgr: slot #5: dtbo 'BB-CAN1-00A0.dtbo' loaded; overlay id #1 [ 104.557399] can: controller area network core (rev 20120528 abi 9) [ 104.557665] NET: Registered protocol family 29 [ 105.965220] can: raw protocol (rev 20120528) [ 106.107030] c_can_platform 481cc000.can can0: setting BTR=1c05 BRPE=0000 If anyone can tell me why I can't get the IO to work I'd be grateful! -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/bfe72a1d-e216-4fcd-a588-5eb756f22b98%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
