SPI接口是我们经常使用的接口,也是高速片内通行的常用端口,工程师使用SPI调用也使用频率很高的一个操作。如下是调试的笔记: 6ull 最多可以支持 4 路原生的 spi 接口,分别为: OKMX6ULL-S 其中第一列为接口号,第二列为功能,第三列为可以复用此功能的引脚名称,第四列为引脚的模式。 下面以添加 ecspi1 为例进行添加和测试: 1、从上表中选取 ecspi1 的 4 组引脚,其中 MISO 采用 CSI_DATA07,MOSI 采用 CSI_DATA06,SCLK 采用 CSI_DATA04,SS0 采用 CSI_DATA05。 2、在对应的设备树文件/arch/arm/boot/dts/imx6ull-14x14-evk.dts 中添加 ecspi1 节点。 &ecspi1 { compatible = "fsl,imx51-ecspi"; fsl,spi-num-chipselects = <1>; cs-gpios = <&gpio4 26 0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_ecspi1>,<&pinctrl_ecspi1_cs>; status = "okay"; spidev@0{ compatible = "spidev"; spi-max-frequency = <20000000>; reg = <0>; status = "okay"; }; }; 3、在&iomuxc 节点下添加 pinctrl_ecspi1 和 pinctrl_ecspi1_cs pinctrl_ecspi1: ecspi1grp { fsl,pins = < MX6UL_PAD_CSI_DATA07__ECSPI1_MISO 0x100b1 MX6UL_PAD_CSI_DATA06__ECSPI1_MOSI 0x100b1 MX6UL_PAD_CSI_DATA04__ECSPI1_SCLK 0x100b1 >; }; pinctrl_ecspi1_cs: ecspi1_csgrp { fsl,pins = < MX6UL_PAD_CSI_DATA05__GPIO4_IO26 0x80000000 >;技术参考手册_应用笔记 OKMX6ULL-S }; 4、把之前的 csi 功能关闭,避免引脚复用冲突 5、根据用户编译手册中的方法编译设备树后替换之前的.dtb 文件,重新烧录。 6、重新启动开发板,查看/dev 目录下是否生成 spidev0.0 节点,如果生成说明添加 ecspi1 成功。 7、此处只是进行短接 miso 和 mosi 进行的测试,运行 fltest_cmd_spidev -D /dev/spidev0.0 SPI 转 CAN 接口 SPI 转 CAN 模块采用的是 mcp2515 芯片,linux4.1.15 内核版本,默认没有配置此芯片的驱动 1、添加 mcp2515 驱动 在配置文件 imx6ull_defconfig(arch/arm/configs/imx6ull_defconfig)文件中设置 CONFIG_CAN_MCP251X=y技术参考手册_应用笔记 OKMX6ULL-S 2、配置设备树 在设备树根节点下添加 clocks 节点 3、参考应用笔记中的“SPI 接口”,添加 ecspi2,并将其中的 spidev 设备改为 can0:mcp2515 添加 pinctrl_ecspi2、pinctrl_ecspi2_cs 和 pinctrl_can 配置技术参考手册_应用笔记 OKMX6ULL-S 4、把之前的 csi 功能关闭,避免引脚复用冲突 5、把原生的 flexcan1 和 flexcan2 屏蔽掉
6、重新编译内核和设备树,重新烧写。 7、此 ecspi2 驱动加载成功后,cat /sys/bus/spi/devices/spi1.0/modalias 会出现 spi:mcp2515 8、ifconfig 查看会有 can0 节点。可以参考“用户使用手册”FlexCAN 设备章节进行测试。
|