以配置ecspi4为例。
1.配置设备树
dma无需进行额外的配置,在imx6ull.dtsi里,ecspi4节点默认是使能dma的:
ecspi4: ecspi@02014000 {
…
dmas = <&sdma 9 7 1>, <&sdma 10 7 2>;
dma-names = "rx", "tx";
…
};
在dts中加入如下内容:
&iomuxc {
/* 引脚配置,需根据实际配置进行修改 */
pinctrl_ecspi4: ecspi4grp {
fsl,pins = <
MX6UL_PAD_ENET2_TX_DATA1__ECSPI4_SCLK 0x70a1
MX6UL_PAD_ENET2_TX_EN__ECSPI4_MOSI 0x70a1
MX6UL_PAD_ENET2_TX_CLK__ECSPI4_MISO 0x70a1
MX6UL_PAD_ENET2_RX_ER__ECSPI4_SS0 0x70a1
>;
};
};
&ecspi4 {
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi4>;
status = "okay";
spidev0: spi@0 {
reg = <0>; /* 0表示使用ecspi4控制器的第一个片选,即ECSPI4_SS0 */
compatible = "rohm,dh2228fv";
spi-max-frequency = <20000000>; /* spi设备支持的最大频率 */
};
};
2.配置内核
内核配置需要选上CONFIG_SPI_SPIDEV,然后重新编译。
3.生成的设备节点
在烧写新的设备树与内核之后,进入到系统,会出现/dev/spidevX.Y设备节点,如/dev/spidev1.0。通过访问这个设备节点,可以进行数据收发等操作。
4.应用例程
附件为应用例程代码,该例程提供了数据收发、配置spi设备(工作模式、速度等)的功能。
应用编译命令:arm-linux-gnueabihf-gcc spidev_test.c -o spidev_test。
spidev_test的相关选项:
-D --device device to use (default /dev/spidev1.1)
-s --speed max speed (Hz)
-d --delay delay (usec)
-b --bpw bits per word
-i --input input data from a file (e.g. \"test.bin\")
-o --output output data to a file (e.g. \"results.bin\")
-l --loop loopback
-H --cpha clock phase
-O --cpol clock polarity
-L --lsb least significant bit first
-C --cs-high chip select active high
-3 --3wire SI/SO signals shared
-v --verbose Verbose (show tx buffer)
-p Send data (e.g. \"1234\\xde\\xad\")
-N --no-cs no chip select
-R --ready slave pulls low to pause
-2 --dual dual transfer
-4 --quad quad transfer
-S --size transfer size
-I --iter iterations