LPC1788 leyendo a través de SPI desde ENC28J60

6

Tengo un problema con la comunicación SPI con el chip ENC28J60 . Básicamente, no puedo usar el SSP en el modo SPI tal como está, porque ENC28J60 espera que el CS sea bajo para varios bytes, mientras que el SSP lo hace alto después de cada byte transmitido. Para superar esto, tengo GPIO bit actua como CS. En cuanto a la señal del analizador lógico, me parece correcto, pero todavía no obtengo el resultado esperado.

He conectado LPC1788 < - > ENC28J60 como este:

SSP0_SCK  - SCK
SSP0_SSEL - NC
P0_19     - CS
SSP0_MISO - SDO
SSP0_MOSI - SDI
GND       - GND

La señal se ve así:

MOSI parece correcto, el reloj es algo extraño (no estoy seguro de si este retraso de 0.5 us es normal), la habilitación también es correcta, pero MISO debería devolver algo en el último byte MOSI (0x00).

EDITAR: He cambiado el reloj para que cumpla con la norma ENC28J60 (reloj bajo en modo inactivo). La imagen también se actualiza.

    
pregunta Gossamer

2 respuestas

3

Funciona ahora. La salida maestra estaba conectada a SDI. Eso me pareció lógico. Por alguna razón, SDO <-> MOSI hizo el truco. Entonces, ¿los conectores de la placa están marcados incorrectamente o?

    
respondido por el Gossamer
2

El retardo de 0.5µs es bastante normal. Una gran cantidad de interfaces SPI disparan datos en 8 grupos de 8 bits.

Eché un vistazo a la hoja de datos del ENC28J60 aquí , en la página 25, establece que:

  

el puerto SPI requiere que SCK esté inactivo en un estado bajo;

Me parece que su reloj está en el modo SPI correcto (Modo 0), está inactivo ALTO.

No puedo explicar por qué esto afectaría las comunicaciones, pero solo puedo imaginar que no ayuda.

ps ¿Qué comandos intentas enviar?

    
respondido por el Mitchell

Lea otras preguntas en las etiquetas