目前我是用spidev实现一主一从通信方式,后续要接入多个从机进行通信,请问如何实现?
Tao Zhang22:
你好 我想请教一下你实现一主一从是,设备树是怎么写的?
我按照能查到的资料写成
&spi1@0 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&spi0_pins_s0>;spidev@0 {spi-max-frequency = <24000000>;reg = <0>;compatible = "rohm,dh2228fv";};};但是连设备树编译都过不去。我在学校周围也没有用这个芯片的,结构一下子比单片机复杂好多。能否请您帮助一下,谢谢
nan wang2:
回复 Tao Zhang22:
您好,编译dtb输出什么错误信息呢?
Tao Zhang22:
回复 nan wang2:
您好 显示
DTC arch/arm/boot/dts/am437x-gp-evm.dtbError: arch/arm/boot/dts/am437x-gp-evm.dts:1194.6-8 syntax errorFATAL ERROR: Unable to parse input treemake[1]: *** [arch/arm/boot/dts/am437x-gp-evm.dtb] Error 1make: *** [am437x-gp-evm.dtb] Error 2
如果节点只写成
&spi1{ status = "okay";
}
编译设备树可以通过,而且会在/sys/class/spi_master里增加新的spi,但是/dev里面一直不会有spi设备。
nan wang2:
回复 Tao Zhang22:
应该是你的dts文件里面有哪些语法错误,看看拼写有没有错误的,把一个一个语句屏蔽试试看
nan wang2:
回复 leo chen:
您好,一个从机的情况下,CS信号一直是低电平是否正确呢?可否控制CS输出高低电平呢,如下图那样。
Tao Zhang22:
回复 nan wang2:
您好,我现在还没到看硬件波形这一步,今天设备树修改了,但是开发板上/dev里面没有spi1.0或者类似的设备,只能在/sys/class/spi_master里面看到相应的变化,不知道问题出在哪,自循环测试现在也做不了。所以现在不清楚是我设备树写的有问题还是其他设置有问题,我也在看其他的资料,不知道您这边还有什么调试的建议吗,谢谢。
nan wang2:
回复 Tao Zhang22:
现在您这段dts编译通过了么?我仔细看了一下,问题应该出在&spi1@0,改成&spi1试试看。其他地方没问题。在内核里面有选中User mode SPI device driver support这一项么?
&spi1@0 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&spi0_pins_s0>;spidev@0 {spi-max-frequency = <24000000>;reg = <0>;compatible = "rohm,dh2228fv";};};
nan wang2:
回复 Tao Zhang22:
您的问题就出在&spi1@0这里,语法不对,所以编译不过去。我已经验证了,你把@0去掉,然后在内核里把spidev驱动添加进去。就可以了
Tao Zhang22:
回复 nan wang2:
你好 修改之后已经在/dev下能找到相应的设备文件了,多谢您的帮助