組み込み 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に問題があるようです。カーネルの driver/spi ディレクトリにある spidev.h または spidev.c を変更する必要があるのでしょうか? またはどうすれば解決できますか?
プロセッサのリファレンスマニュアル