认真读此讨论,你能获得很多信息。
https://community.nxp.com/thread/317999
1. 需要设置设备树
2. 需要make
menuconfig里面开启SPIDEV选项
3.
我用的3.14.28不需要在程序里改了,直接改设备树即可。
4.
从上面链接的讨论里,可以看到多个设备可以共用一个SPI,但使用不同的片选脚
5. 引脚寄存器定义可以在官网提供的PIN
MUX工具获得,我用的是:Pins_Tool_for_i.MX_Processors_v2_x64_offline_b161010.exe
6.
测试使用linux/Document/spi下面的spidev_test.c测试程序,将MISO和MOSI短接即可;
7.
按照下面的方法编辑DTS,已经验证可用。
未整理,下面是摘录的一下DTS配置:
&ecspi2 {
fsl,spi-num-chipselects = <</span>2>;
cs-gpios = <</span>0>,<&gpio3 31 0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi2_1>;
status = "okay";
spidev@0x00 {
compatible = "spidev";
spi-max-frequency = <</span>20000000>;
reg = <</span>0>;
};
spidev@0x01 {
compatible = "spidev";
spi-max-frequency = <</span>20000000>;
reg = <</span>1>;
};
};
&iomuxc {
...
...
ecspi2 {
pinctrl_ecspi2_1: ecspi2grp-1 {
fsl,pins = <</span>
MX6SL_PAD_ECSPI2_MISO__ECSPI2_MISO 0x100b1
MX6SL_PAD_ECSPI2_MOSI__ECSPI2_MOSI 0x100b1
MX6SL_PAD_ECSPI2_SCLK__ECSPI2_SCLK 0x100b1
MX6SL_PAD_ECSPI2_SS0__ECSPI2_SS0 0x100b1
MX6SL_PAD_KEY_ROW3__GPIO3_IO31 0x100b1
>;
};
};
Thanks for your response.
I managed to enable 2 chip selects on one SPI
bus.
But when I add another SPI bus, then it won't
show up in my /dev.
&ecspi1 {
fsl,spi-num-chipselects =
<2>;
cs-gpios = <&gpio4 9
0>, <&gpio5 9 0>;
pinctrl-names =
"default";
pinctrl-0 =
<&pinctrl_ecspi1_2>;
status = "okay";
chip1: spidev@0 {
compatible = "spidev";
spi-max-frequency = <20000000>;
reg = <0>;
};
chip2: spidev@1 {
compatible = "spidev";
spi-max-frequency = <20000000>;
reg = <1>;
};
};
&ecspi3 {
fsl,spi-num-chipselects =
<1>;
cs-gpios = <&gpio4 24
0>;
pinctrl-names =
"default";
pinctrl-0 =
<&pinctrl_ecspi3_1>;
status = "okay";
chip3: spidev@0 {
compatible = "spidev";
spi-max-frequency = <20000000>;
reg = <0>;
};
};
All I see in my /dev are from ecspi1.
加载中,请稍候......