我在嵌入式linux設備(olimex imx233 micro)上使用內核3.12.rc4。我的目標是使用/dev/spidev
能夠與另一個spi設備進行通信。spidev無法控制芯片選擇信號
我編輯arch/arm/boot/dts/imx23-olinuxino.dts
爲:
ssp1: [email protected] {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx23-spi";
pinctrl-names = "default";
pinctrl-0 = <&spi2_pins_a>;
clock-frequency = <1000000>;
status = "okay";
spidev: [email protected] {
compatible = "spidev";
spi-max-frequency = <1000000>;
reg = <1>;
};
};
arch/arm/boot/dts/imx23.dtsi:
有此配置
spi2_pins_a: [email protected] {
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輸出信號正確,但是,即使在數據傳輸期間,chipselect也被設置爲邏輯高電平。
有什麼方法可以確定爲什麼在傳輸過程中spidev不能設置爲邏輯低電平?似乎需要在內核上傳遞額外的東西,或者在spidev上存在無法控制片選的問題。我想知道是否需要在內核的driver/spi目錄下的spidev.h或spidev.c上更改任何內容?或者我該如何解決它?
The reference manual因爲我從來沒有使用設備樹的處理器
你確定這不是一個硬件問題?嘗試將引腳設置爲GPIO,並確保它變化 – stdcall