6 votos

LPC1788 leyendo vía SPI desde ENC28J60

Tengo un problema de comunicación SPI con ENC28J60 chip. Básicamente, no puedo utilizar SSP en el modo SPI como es, porque ENC28J60 espera CS para ser baja para múltiples bytes, mientras que SSP cambia a alta después de cada byte transmitido. Para superar esto, tengo el bit GPIO actúa como CS. Mirando la señal del analizador lógico, me parece correcto, pero todavía no obtengo el resultado esperado.

He conectado LPC1788 <-> ENC28J60 así:

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

La señal se ve así: LA output

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

EDIT: He cambiado el reloj para que sea compatible con ENC28J60 (reloj bajo en reposo). La imagen se ha actualizado también.

3voto

Alfred Puntos 32190

Ahora funciona. La salida maestra estaba conectada a SDI. Eso me parecía lógico. Por alguna razón SDO <-> MOSI hizo el truco. Así que o bien los conectores de la placa están mal marcados o ?

2voto

halfdan Puntos 556

El retraso de 0,5µs es bastante normal. Muchas interfaces SPI envían datos en 8 grupos de 8 bits.

He mirado la hoja de datos del ENC28J60 aquí En la página 25, se indica que:

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

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

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

ps ¿Qué comandos está tratando de enviar?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X