私は組み込み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信号は正しく出力されますが、データ転送中でもチップセレクトはロジックハイに設定されます。
送信中にspidevがロジックローに設定できない理由を調べる方法はありますか?追加のものをカーネルに渡す必要があるか、またはチップセレクトを制御できないspidevに関する問題があるようです。カーネルのdriver/spiディレクトリのspidev.hやspidev.cで何かを変更する必要があるのだろうか?どうすれば解決できますか?プロセッサ
が、それはハードウェアではありませんあなたは確かであるが、spidevは1を選択するチップに接続されているが、多分あなたのデバイスは、だから、0チップセレクトに接続されていることをSPIコアに伝える知っているよう
問題?ピンをGPIOとして設定してみてください。 – stdcall