cd drivers/ find -name "mcp25*" ./net/can/spi/mcp251x.c vi net/can/spi/Makefile Makefile 中添加相应配置: obj-$(CONFIG_CAN_MCP251X) += mcp251x.o vi arch/arm/configs/imx_v7_defconfig 在其中设置 :CONFIG_CAN_MCP251X=y vi imx6qdl-sabresd.dtsi 在程序开始处加: clocks { mcp251x_clock: mcp251x_clock{ compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <8000000>; }; }; 加 MX6QDL_PAD_EIM_RW__GPIO2_IO26 0x80000000 vi imx6q-c-sabresd.dts 在ecspi2处:屏蔽spidev部分,在其后加入: mcp2515@0 { pinctrl-names = "default"; compatible = "microchip,mcp2515"; reg = <0>; status = "okay"; spi-max-frequency = <10000000>; clocks = <&mcp251x_clock>; interrupt-parent = <&gpio2>; interrupts = <26 0x2>; }; 编译并验证 步骤 1:按软件手册编译内核和设备树。注意查看编译完内核之后,是否在 drivers/spi/下生成spi-imx.o,是否在 drivers/net/can/spi下生成 mcp251x.o,如果没生成,查看配置是否出错?生成*.o 文件说明已经编译进内核。 步骤 2 :替换烧写工具中的设备树和内核,重新烧写。开机选择刚替换的设备树。 步骤 3 :此 ecspi2 驱动加载成功之后,cat /sys/bus/spi/devices/spi1.0/modalias 会出现 spi:mcp2515。 步骤 4 :查看打印信息是否生成 can0 节点。 测试can: FlexCAN 连线方式: CAN 总线有两个物理连线,CAN 的 H 端子与其它 CAN 设备 H 端子连接;CAN 的 L 端子与其它 CAN 设备 L 端子连接。 1. 设置客户端开发板 CAN 服务如下: root@imx6qsabresd:#ifconfig can0 down root@imx6qsabresd:#ip link set can0 up type can bitrate 125000 triple-sampling on root@imx6qsabresd:#ifconfig can0 up 设置 can0 的 can 设备波特率为 125000 2. 设置服务端开发板 can 服务如下: root@imx6qsabresd:#ifconfig can0 down root@imx6qsabresd:#ip link set can0 up type can bitrate 125000 triple-sampling on root@imx6qsabresd:#ifconfig can0 up 设置 can0 的 can 设备波特率为 125000 3. 客户端发送数据服务端接收数据 服务端(服务端先执行以下命令): root@imx6qsabresd:#candump can0 inte**ce = can0, family = 29, type = 3, proto = 1 <0x010> [8] 11 22 33 44 55 66 77 88 客户端(客户端发送数据): root@imx6qsabresd:#cansend can0 123#1122334455667788 inte**ce = can0, family = 29, type = 3, proto = 1 |
|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )
GMT+8, 2024-11-17 15:36
Powered by Discuz! X3.4
© 2001-2013 Comsenz Inc.