Hi,

Did you ever get the MCP2515 working over SPI?  I'm attempting that now, 
but I'm not sure where to start.

Thanks,
  Mark



On Tuesday, 20 September 2016 14:30:39 UTC+1, Laurits Telle Riple wrote:
>
> After chatting in the IRC channel with Matthijs I was encouraged to not 
> use overlays, and just make my own dtb.  I have tried that now, but it 
> doesn't seem to work properly. I've enabled spi0 and spi1. And used the 
> spi_loopback to see that my dtb was working, then i expanded it by adding a 
> clock node and adding the mcp in the spi config. Also, the max14830 not 
> working, maybe the same issue? Anyways, this is my dtb: 
>
> /*
>  * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
>  *
>  * 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/;
>
> #include "am33xx.dtsi"
> #include "am335x-bone-common.dtsi"
> #include "am33xx-overlay-edma-fix.dtsi"
> #include "irq.h"
>
> / {
>         model = "TI AM335x BeagleBone Black";
>         compatible = "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
>
>         clk16m:clk16m{
>                 compatible = "fixed-clock";
>                 clock-frequency = <16000000>;
>                 #clock-cells = <0>;
>         };
>
>         clk4m:clk4m{
>                 compatible = "fixed-clock";
>                 clock-frequency = <4000000>;
>                 #clock-cells = <0>;
>         };
> };
>
> &ldo3_reg {
>         regulator-min-microvolt = <1800000>;
>         regulator-max-microvolt = <1800000>;
>         regulator-always-on;
> };
>
> &mmc1 {
>         vmmc-supply = <&vmmcsd_fixed>;
> };
>
> &mmc2 {
>         vmmc-supply = <&vmmcsd_fixed>;
>         pinctrl-names = "default";
>         pinctrl-0 = <&emmc_pins>;
>         bus-width = <8>;
>         status = "okay";
> };
>
> &cpu0_opp_table {
>         /*
>          * All PG 2.0 silicon may not support 1GHz but some of the early
>          * BeagleBone Blacks have PG 2.0 silicon which is guaranteed
>          * to support 1GHz OPP so enable it for PG 2.0 on this board.
>          */
>         oppnitro@1000000000 {
>                 opp-supported-hw = <0x06 0x0100>;
>         };
> };
>
>
> &am33xx_pinmux{
>         spi1_pins:spi1_pins{
>                 pinctrl-single,pins=<
>                         0x190 0x33  /* mcasp0_aclkx.spi1_sclk, 
>  OUTPUT_PULLUP | MODE 3 */
>                         0x194 0x33  /* mcasp0_fsx.spi1_d0,     
>  INPUT_PULLUP | MODE3 */
>                         0x198 0x13  /* mcasp0_axr0.spi1_d1,     
> OUTPUT_PULLUP | MODE 3 */
>                         0x19c 0x13  /* mcasp0_ahclkr.spi1_cs0, 
>  OUTPUT_PULLUP | MODE3 */
>                 >;
>         };
>         spi0_pins:spi0_pins{
>                 pinctrl-single,pins=<
>                         0x150 0x30  /* spi0_sclk, INPUT_PULLUP | MODE0 */
>                         0x154 0x30  /* spi0_d0, INPUT_PULLUP | MODE0 */
>                         0x158 0x10  /* spi0_d1, OUTPUT_PULLUP | MODE0 */
>                         0x15c 0x10  /* spi0_cs0, OUTPUT_PULLUP | MODE0 */
>                 >;
>         };
>         mcp2515_pins:mcp2515_pins{
>                 pinctrl-single,pins=<
>                         0x1ac 0x37 /*mcasp0_ahclkx.gpio3_21,RX_ENABLED | 
> PULLUP | MODE7 */
>                 >;
>         };
>         max14830_pins:max14830_pins{
>                 pinctrl-single,pins=<
>                         0x1a4 0x37      /* mcasp0_fsr.gpio3_19, RX_ENABLED 
> | PULLUP | MODE7 */
>                 >;
>         };
> };
>
> &spi1{
>         status="okay";
>         pinctrl-names="default";
>         pinctrl-0=<&spi1_pins>;
>
>         /*spi1@0{
>                 compatible="spidev";
>                 reg=<0>;
>                 spi-max-frequency=<16000000>;
>         };*/
>
>         max14830@0{
>                 compatible="maxim,max14830";
>                 reg=<0>;
>                 spi-max-frequency=<16000000>;
>                 clocks=<&clk4m>;
>                 clock-names="osc";
>                 interrupt-parent=<&gpio3>;
>                 interrupts=<19 IRQ_TYPE_EDGE_FALLING>;
>                 gpio-controller;
>                 #gpio-cells=<2>;
>         };
>         mcp2515@1{
>                 compatible="microchip,mcp2515";
>                 reg=<1>;
>                 spi-max-frequency=<10000000>;
>                 pinctrl-names="default";
>                 pinctrl-0=<&mcp2515_pins>;
>                 clocks=<&clk16m>;
>                 interrupt-parent=<&gpio3>;
>                 interrupts=<21 IRQ_TYPE_EDGE_FALLING>;
>         };
> };
>
> &spi0{
>         status="okay";
>         pinctrl-names="default";
>         pinctrl-0=<&spi0_pins>;
>
>         spi0@0{
>                 compatible="spidev";
>                 reg=<0>;
>                 spi-max-frequency=<16000000>;
>         };
> };
>
>
> But I still dont get any can devices when i issue the "ip a" command. 
> However running lsmod gives:
>
> debian@arm:/opt/source/dtb-4.4-ti$ lsmod
> Module                  Size  Used by
> 8021q                  17930  0 
> garp                    5769  1 8021q
> mrp                     7239  1 8021q
> stp                     2219  1 garp
> llc                     5123  2 stp,garp
> usb_f_ecm               9336  1 
> g_ether                 4976  0 
> usb_f_rndis            22191  2 g_ether
> mcp251x                 9039  0 
> u_ether                11898  3 usb_f_ecm,usb_f_rndis,g_ether
> libcomposite           43717  3 usb_f_ecm,usb_f_rndis,g_ether
> can_dev                11820  1 mcp251x
> spidev                  7523  0 
> bnep                   13652  2 
> omap_aes_driver        19045  0 
> omap_sham              21340  0 
> bluetooth             419221  7 bnep
> rfkill                 18276  3 bluetooth
> omap_rng                4423  0 
> rng_core                7703  1 omap_rng
> snd_soc_davinci_mcasp    17079  0 
> snd_soc_edma            1290  1 snd_soc_davinci_mcasp
> snd_soc_omap            3058  1 snd_soc_davinci_mcasp
> snd_soc_core          155549  3 
> snd_soc_davinci_mcasp,snd_soc_edma,snd_soc_omap
> snd_pcm_dmaengine       5209  2 snd_soc_core,snd_soc_omap
> snd_pcm                83341  4 
> snd_soc_davinci_mcasp,snd_soc_core,snd_soc_omap,snd_pcm_dmaengine
> snd_timer              19788  1 snd_pcm
> snd                    59495  3 snd_soc_core,snd_timer,snd_pcm
> soundcore               7637  1 snd
> spi_omap2_mcspi        11148  0 
> nfsd                  261377  13 
> evdev                  10695  2 
> uio_pdrv_genirq         3539  0 
> uio                     8822  1 uio_pdrv_genirq
> pru_rproc              13507  0 
> pruss_intc              7451  1 pru_rproc
> pruss                  10611  1 pru_rproc
>
> I have used https://www.sparkfun.com/products/13262 with bi-directional 
> heconverters on the logic signals.
>
> I don't understand what I am doing wrong? Dmesg output here: 
> http://dpaste.com/2XSZV56
>
>
> fredag 19. august 2016 19.37.11 UTC+2 skrev William Hermans følgende:
>>
>> Something I noticed about your device tree file. First, the mcp251x.c / 
>> mcp2515.c driver would be loaded as a module in a device tree. I see no 
>> "status=okay" so the driver would never load. Honestly I've yet to setup 
>> SPI on the beaglebone in ~3.5 years. So I'm no expert. However if I were 
>> you. I would at least initially setup, and use universal-io to mux your 
>> pins. https://github.com/cdsteinkuehler/beaglebone-universal-io . It is 
>> far simpler, and easier to use than a raw device tree source file.
>>
>> So, universal io is already installed, and loaded by default on the stick 
>> 4.4 debian images. The only thing you may have to do is download via wget 
>> config-pin, chmod +x it then move it to the appropriate /bin directory.
>>
>> Then you just:
>>
>> $ sudo config-pin PX.XX spi
>>
>> etc, etc.
>>
>>
>> On Fri, Aug 19, 2016 at 9:01 AM, William Hermans <[email protected]> 
>> wrote:
>>
>>> https://github.com/msperl/mcp2515/blob/master/mcp2515.c there it is.
>>>
>>> By the way, the mcp2515 has a built in transceiver. The CANBUS 
>>> controller on the am335x does not. the MCP2515 is also more cost efficient. 
>>> So don't let anyone make you feel bad for going that route.
>>>
>>> On Fri, Aug 19, 2016 at 8:58 AM, William Hermans <[email protected]> 
>>> wrote:
>>>
>>>> 1. Haha! It does? Must have missed it when I looked on the pinmap.
>>>>> 2. Tried to disable universal cape, makes no difference. 
>>>>>
>>>>> Anyways. I still want to get it to work. Have spent so much time on 
>>>>> it, and I would hate to just let it go. Even though I probably won't use 
>>>>> it. I also need to get a spi to uart chip (max14830) to work, which has 
>>>>> almost the same configuration so I'm hoping that solving this issue, will 
>>>>> also solve the max14830.
>>>>>
>>>>> I will try out your tool, looks very promising ;) Thanks for the help.
>>>>
>>>> Well, you're device tree would simply be for SPI anyway. Since thats 
>>>> the bus you're using. Also, so you know the mcp2515 driver already exists, 
>>>> so I forget whatexactly the module name is, but something like $ sudo 
>>>> modprobe mcp25xx should just work.
>>>>
>>>>
>>>> On Fri, Aug 19, 2016 at 7:21 AM, <[email protected]> wrote:
>>>>
>>>>> 1. Haha! It does? Must have missed it when I looked on the pinmap.
>>>>> 2. Tried to disable universal cape, makes no difference. 
>>>>>
>>>>> Anyways. I still want to get it to work. Have spent so much time on 
>>>>> it, and I would hate to just let it go. Even though I probably won't use 
>>>>> it. I also need to get a spi to uart chip (max14830) to work, which has 
>>>>> almost the same configuration so I'm hoping that solving this issue, will 
>>>>> also solve the max14830.
>>>>>
>>>>> I will try out your tool, looks very promising ;) Thanks for the help.
>>>>>
>>>>>
>>>>> fredag 19. august 2016 15.42.06 UTC+2 skrev Matthijs van Duin følgende:
>>>>>>
>>>>>> I haven't really looked yet at your overlay, but two immediate 
>>>>>> thoughts:
>>>>>> 1. why on earth are you using an spi can controller when there are 
>>>>>> *two* built-in CAN controllers already on the beaglebone?
>>>>>> 2. you have cape-universal enabled, this conflicts with pretty much 
>>>>>> every overlay (remove the cape_universal=enable from cmdline in your 
>>>>>> /boot/uEnv.txt
>>>>>>
>>>>>> BTW I made some utils to make the process of writing overlays less 
>>>>>> painful: https://github.com/mvduin/overlay-utils
>>>>>> It lets you write them as device tree fragments and automatically 
>>>>>> converts them to the structure requires for overlays. It also includes 
>>>>>> macros that make pinmux much easier to read. No support for overlay 
>>>>>> metadata though, I didn't bother since the new configfs mechanism to 
>>>>>> load 
>>>>>> overlays ignores it anyway.
>>>>>>
>>>>>> Matthijs
>>>>>>
>>>>> -- 
>>>>> 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/01fc36f9-5d81-4597-acc6-d553e02a231b%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/beagleboard/01fc36f9-5d81-4597-acc6-d553e02a231b%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>>
>>>
>>

-- 
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/0b14340b-6bfe-4142-a71e-5ef091cee9c4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to