内核:Linux version 6.1.33-rt11。 (SDK09的版本,RTLINUX)
调试SPI2。
使用了SPI2_CLK, SPI2_CS1, SPI2_D0, SPI2_D1。
其中SPI2_CS0不使用,使用 了SPI2_CS1做为片选信号。
设备树:
AM62X_IOPAD(0x1EC, PIN_OUTPUT, 3) /* (A17) RA4_SCK SPI2_CLK */
AM62X_IOPAD(0x1E8, PIN_OUTPUT, 3) /* (B17) RA4_nCS SPI2_CS1 */
AM62X_IOPAD(0x194, PIN_OUTPUT_PULLUP, 1) /* (B19) RA4_MOSI SPI2_D0 */
AM62X_IOPAD(0x198, PIN_INPUT_PULLUP, 1) /* (A19) RA4_MISO SPI2_D1 */
&main_spi2 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&spi2_pins_s1>;
ti,spi-num-cs = <2>;
spidev@1 {
spi-max-frequency = <1000000>;
reg = <0>;
compatible = "rohm,dh2228fv";
};
spidev@2 {
spi-max-frequency = <1000000>;
reg = <1>;
compatible = "rohm,dh2228fv";
};
};
系统起来了,可看到SPI设备:
crw------- 1 root root 153, 0 Nov 30 02:47 /dev/spidev2.0
crw------- 1 root root 153, 1 Nov 30 02:47 /dev/spidev2.1
应用层编译了个spidev_test 工具,做为spi的测试。
使用spidev_test工具做读写测试看几个引脚的信号。
在不接spi设备的前期,执行读写测试,看spi信号。
/spidev_test -v -p "dfasdfsdfsadfsadf" -D /dev/spidev2.0
/spidev_test -v -p "dfasdfsdfsadfsadf" -D /dev/spidev2.1
SPI2_CLK: 在执行读写的时候。 clk信号有输出,有看到clk。
SPI2_CS1: 在对/dev/spidev2.0测试时,CS1信号无反应。在对/dev/spidev2.1操作时,可以看到SPI2_CS1片选信号有输出,片选信号作用。
SPI2_D0:在执行测试时,看到该信号无任何反应。
SPI2_D1:在执行测试时,看到该信号有反应。
疑问:
根据芯片手册,如果AM62x的SPI做为主模式时,SPI2_D0作为输出,即为MOSI,SPI2_D1做为输入,即为MISO。
在执行测试时,理论应该SPI2_D0有数据发送,因为没有接SPI设备,SPI2_D1没有数据信号进入,应该没有信号变化才对。
但是测试结果刚好相反。
而且设备里也将SPI2_D0设置为输出,SPI2_D1设置为输入了。
还请帮忙解答疑惑和确认问题。