2023/12/22 13:43
1、修改ma35d1-iot-512m.dts如下,增加spidev0的配置。
&spi2 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_spi2>;
spidev2: spi@0 {
compatible = "adi,adxl345";
reg = <0>;
spi-max-frequency = <5000000>;
};
};
kernel menuconfig配置中再打开“User mode SPI device driver support ”,产生spidev0.0设备节点。
Device Drivers > SPI support ><*> User mode SPI device driver support
2、使用buildroot中的spidev_test应用程序来测试。进入make menuconfig
Target packages → Debugging, profiling and benchmark → [*] spidev_test
3、短接SPI2的MOSI和MISO,测试结果TX和RX的数据一样。
# spidev_test -D /dev/spidev2.0 -v -p 1234
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | 31 32 33 34 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ | 1234
RX | 31 32 33 34 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ | 1234
#
4. 将MA35 SP2接上adxl345(三轴加速度传感器),MA35 spi2读到的数据不对,用逻辑分析仪分析,spi2配置的mode不对,adxl345协议使用的是spi mode3,spi2默认配置是mode0,如下修改ma35d1.dtsi,配置spi2为mode3,能与adxl345正常通信。
spi2: spi@40620000 {
...
spimode = <3>;
...
};