【发布时间】:2013-10-25 09:23:56
【问题描述】:
我在嵌入式 linux 设备(olimex imx233 micro)上使用内核 3.12.rc4。我的目标是使用/dev/spidev 能够与另一个spi 设备进行通信。
我将arch/arm/boot/dts/imx23-olinuxino.dts 编辑为:
ssp1: ssp@80034000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx23-spi";
pinctrl-names = "default";
pinctrl-0 = <&spi2_pins_a>;
clock-frequency = <1000000>;
status = "okay";
spidev: spidev@0 {
compatible = "spidev";
spi-max-frequency = <1000000>;
reg = <1>;
};
};
arch/arm/boot/dts/imx23.dtsi: 有这个配置
spi2_pins_a: spi2@0 {
reg = <0>;
fsl,pinmux-ids = <
0x0182 /* MX23_PAD_GPMI_WRN__SSP2_SCK */
0x0142 /* MX23_PAD_GPMI_RDY1__SSP2_CMD */
0x0002 /* MX23_PAD_GPMI_D00__SSP2_DATA0 */
0x0032 /* MX23_PAD_GPMI_D03__SSP2_DATA3 */
>;
fsl,drive-strength = <1>;
fsl,voltage = <1>;
fsl,pull-up = <1>;
};
设备绑定看起来正确。当我编译内核时,我得到了/dev/spidev1.1。之后我使用spidev_test.c 并通过示波器监控引脚。 SCK 和 MOSI 输出信号正确,但是,即使在数据传输期间,片选也设置为逻辑高。
有什么方法可以确定为什么spidev在传输过程中不能设置为逻辑低?似乎需要在内核上传递其他内容,或者 spidev 上存在无法控制芯片选择的问题。我想知道是否需要更改内核驱动程序/spi 目录中的 spidev.h 或 spidev.c 上的任何内容?或者我该如何解决?
The reference manual 用于处理器
【问题讨论】:
-
您确定不是硬件问题吗?尝试将引脚设置为 GPIO 并确保它发生变化
标签: linux linux-kernel spi