Uso il kernel 3.12.rc4 su un dispositivo Linux incorporato (olimex imx233 micro). Il mio obiettivo è utilizzare /dev/spidev
per poter comunicare con un altro dispositivo spi.spidev non può controllare il segnale di selezione del chip
modifico arch/arm/boot/dts/imx23-olinuxino.dts
come:
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:
ha questa configurazione
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>;
};
dispositivo si presenta vincolante corretta. Quando compilo il kernel ottengo lo /dev/spidev1.1
. Dopo di che uso spidev_test.c e monitoro i pin con un oscilloscopio. I segnali di uscita SCK e MOSI sono corretti, tuttavia, il chipselect è impostato sulla logica alta anche durante il trasferimento dei dati.
Esiste un modo per determinare perché spidev non è possibile impostare la logica basso durante la trasmissione? Sembra che o altre cose debbano essere passate sul kernel o c'è un problema su spidev che non può controllare il chip select. Mi chiedo se è necessario modificare qualcosa su spidev.h o spidev.c nella directory driver/spi del kernel? o come posso risolverlo?
The reference manual per il processore
Sei sicuro che non è un hardware problema? Prova a impostare il pin come GPIO e assicurati che cambi – stdcall