瑞芯微Rockchip开发者社区
直播中

王晾其

7年用户 983经验值
私信 关注
[问答]

如何解决扩展CAN芯片MCP2515的驱动移植问题?


Hi,
    我们用在飞凌A40i_C核心板扩展了一路CAN接口,是用SPI2总线连接MCP2515芯片。
我看到内核已经支持该芯片的驱动,但是需要修改内核设备树文件。
飞凌有个2410里面好像用的也是这个扩展芯片,能否提供一下MCP2515驱动设备树文件,或者移植方案。
下面是我们的硬件设计,用的是SPI2,中断管脚是G20_SPI2_CS1



BR.

  • 以下为例子,设备树linux-3.10/arch/arm/boot/dts/sun8iw11p1-OKA40i_C.dts里把cs换成2515就行
    &spi2 {
          status = "okay";

          mcp2515_2:mcp2515_2@0 {
                     #address-cells=<1>;
                     #size-cells=<1>;
                     compatible = "microchip,mcp2515_2";
                     pinctrl-names = "default";
                     reg=<0>;
                     spi-max-frequency = <5000000>;
                     clocks = <&mcp251x_clock>;
                     interrupt-parent = <&pio>;
                     interrupts = <27 0>;
         };
    /*
         spidev_cs0:spi2_cs0@0{
                     #address-cells=<1>;
                     #size-cells=<1>;
                     compatible = "spidev";
                     spi-max-frequency = <1000000>;
                     reg               = <0>;
                     mode=<0>;
         };
    */
    };


回帖(4)

阎锐

2022-1-4 10:59:09

  • 您好,MCP2515的设备树配置,有两点不明白,clocks = <&mcp251x_clock>;这个时钟在哪
举报

陈瑞微

2022-1-4 10:59:14

  • 想同时驱动两个mcp2515,设备树这个配置可行吗

            clocks {
                    mcp251x_clock:mcp251x_clock{
                            compatible = "fixed-clock";
                            #clock-cells = <0>;
                            clock-frequency = <8000000>;
                    };
            };      



    &spi1 {
          status = "okay";

              mcp2515:mcp2515@0 {
                     #address-cells=<1>;
                     #size-cells=<1>;
                     compatible = "microchip,mcp2515";
                                     pinctrl-names = "default";
                                     reg=<0>;
                     spi-max-frequency = <1000000>;
                     clocks = <&mcp251x_clock>;
                                     interrupt-parent = <&pio>;
                                     interrupts = <8 0>;
            };
    };

    &spi2 {
          status = "okay";

              mcp2515_1:mcp2515@1 {
                     #address-cells=<1>;
                     #size-cells=<1>;
                     compatible = "microchip,mcp2515";
                                     pinctrl-names = "default";
                                     reg=<0>;
                     spi-max-frequency = <1000000>;
                     clocks = <&mcp251x_clock>;
                                     interrupt-parent = <&pio>;
                                     interrupts = <23 0>;
            };

    };

    时钟用同一个没问题吧,这样能生成can0和can1吗
举报

金鼎

2022-1-4 10:59:22
2401上做的是两路can,配置如下:
&spi1 {
      status = "okay";

      mcp2515_1:mcp2515_1@0 {
                 #address-cells=<1>;
                 #size-cells=<1>;
                 compatible = "microchip,mcp2515_1";
                 pinctrl-names = "default";
                 reg=<0>;
                 spi-max-frequency = <2000000>;
                 clocks = <&mcp251x_clock>;
                 interrupt-parent = <&pio>;
                 interrupts = <22 0>;
     };
};

&spi2 {
      status = "okay";

      mcp2515_2:mcp2515_2@0 {
                 #address-cells=<1>;
                 #size-cells=<1>;
                 compatible = "microchip,mcp2515_2";
                 pinctrl-names = "default";
                 reg=<0>;
                 spi-max-frequency = <2000000>;
                 clocks = <&mcp251x_clock>;
                 interrupt-parent = <&pio>;
                 interrupts = <27 0>;
     };
/*
     spidev_cs0:spi2_cs0@0{
                 #address-cells=<1>;
                 #size-cells=<1>;
                 compatible = "spidev";
                 spi-max-frequency = <1000000>;
                 reg               = <0>;
                 mode=<0>;
     };
举报

李亮

2022-1-4 10:59:31
interrupts = <27 0>;
这个接收中断指的是哪个管脚,PA27吗?
如果我把中断管脚换成SPI2_CS1 -- PB13应该是哪个数值?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分