comunicación SPI - solo recibe 0xFF (Linux)

3

Me he quedado atascado en la configuración de la comunicación SPI en Linux y no puedo encontrar ninguna solución.

Estoy trabajando con un beagle bone black, que ejecuta Linux. Tengo un fragmento de código que envía datos a través del bus SPI. Si conecto los pines MISO y MOSI, recibiré los datos que he enviado (hasta ahora tan buenos).

El problema surge cuando intento conectarme con el sensor con el que quiero comunicarme, ¡todo lo que recibo son ceros!

Estoy bastante seguro de que el problema proviene de la configuración de SPI en Ubuntu (ya que ya pude comunicarme con el sensor, usando SPI, usando un Arduino para este propósito). ¡Pero de alguna manera, cuando intento replicar el mismo código en Beaglebone no puedo comunicarme!

En este enlace hay una explicación de cómo configurar SPI en ubuntu: enlace

Ya he seguido el tutorial, pero el problema persiste. ¿Alguien tiene algún consejo que me ayude?

    
pregunta Fred Gomes

1 respuesta

0

Por lo tanto, ya analicé con el alcance y encontré que tan interesante, está sucediendo lo siguiente:

  • En el pin cs y sck está teniendo oscilación. Sin embargo, en los pines MISO y MOSI hay alguna oscilación.

Lo que más me intriga es que si conecto MISO y MOSI, recibo los datos enviados, pero no puedo ver ninguna variación en estos pines. ¿Alguna idea de lo que está pasando aquí?

Aquí está mi árbol de dispositivos:

/ dts-v1 /; / plugin /;

/ {     compatible="ti, beaglebone", "ti, beaglebone-black";

/* identification */
part-number = "spi0pinmux";

fragment@0 {
    target = <&am33xx_pinmux>;
    __overlay__ {
        spi0_pins_s0: spi0_pins_s0 {
            pinctrl-single,pins = <
              0x150 0x13  /* spi0_sclk, OUTPUT_PULLUP | MODE3 */
              0x154 0x13  /* spi0_d0, INPUT_PULLUP | MODE3 */
              0x158 0x33  /* spi0_d1, OUTPUT_PULLUP | MODE3 */
              0x15c 0x13  /* spi0_cs0, OUTPUT_PULLUP | MODE3 */
            >;
        };
    };
};

fragment@1 {
    target = <&spi0>;
    __overlay__ {
         #address-cells = <1>;
         #size-cells = <0>;

         status = "okay";
         pinctrl-names = "default";
         pinctrl-0 = <&spi0_pins_s0>;

         spidev@0 {
             spi-max-frequency = <24000000>;
             reg = <0>;
             compatible = "linux,spidev";
        };
    };
};

};

No estoy seguro de la definición de OUTPUT_PULLUP e INPUT_PULLUP. Intenté seguir el tutorial sobre el máximo posible. Puedes ver los registros de huesos de Beagle buscando "registros de huesos de Beagle" en google.

Gracias por tu ayuda,

    
respondido por el Fred Gomes

Lea otras preguntas en las etiquetas