Due + SD + Ethernet

Buenas.
Estoy poniendo en marcha un proyecto que usará SD y Ethernet. Ambos usan el puerto SPI. Individualmente los he hecho funcionar, pero no juntos.
La librería SD me deja elegir el CS pin, pero la librería ethernet no.
Aunque elijo un pin distinto con la librería SD, no funcionan en conjunto.
¿Os ha pasado algo así?
Un saludo y gracias.

Por favor, no usar esta parte del foro.

Bueno. Ya te ha dicho Héctor, así que no voy a redundar.
Ahora que ya estás en la sección adecuada, sería conveniente, dado que no sabemos si el problema puede ser hard o soft, que pusieras una foto o esquema de tu montaje, y el código que estás intentando hacer funcionar.
Evidentemente, con que uno de los dos módulos permita seleccionar el pin SS ya puedes sortear el problema de colisión de selector; osea que el problema es otro.

Buenos días.

Quiero compartir mi experiencia usando un lector de tarjetas SD y un modulo Ethernet con la placa DUE.

En principio el hardware consistía en:

  • Placa arduino DUE
  • Lector de tarjetas SD LCSTUDIO lcsoft.net
  • Modulo Ethernet USR-ES1. Concretamente el que tiene el W5500 en diagonal y la serigrafía "popctrl.taobao.com"

Hay muchos malos comentarios en la red sobre el módulo SD. Como estos fallos afectaban al regulador 3v3 y yo uso una DUE, los fallos parece que se solucionan usando la entrada 3v3 en lugar de la 5v. Así fue como lo hice funcionar sin muchos problemas haciendo un montaje con cables "dupont"

Por otro lado hice funcionar el módulo Ethernet. Existen un datasheet con el patillaje. Bajé la última versión de la librería Ethernet y la configuré para w5500. En el siguiente enlace está la información.

Monté el servidor web y funcionó.

El problema vino cuando quise hacerlos funcionar a la vez. Aunque el lector SD parecía funcionar bien, el módulo Ethernet decía tomar IPs raras y no respondía. A veces lo hacia al ping, otras no.

Probé modificando pullups de los pines Slave Select, cambiando a otros pines SS, ... pero nada.

Entonces adquirí el sku 429362 de dx. OpenSmart MicroSD reader. Como aclaración el pin DO equivale a MISO y el pin DI equivale a MOSI. Como no tienen ningún tipo de conversor de nivel, ni resistencias ni nada, deduje que era 3v3 y la conecté directamente.

Obtuve el mismo resultado. Ambos módulos funcionan bien individualmente pero el modulo Ethernet se niega a trabajar con el lector de tarjetas.

Todos los montajes hecho con cables "dupont"

Para mejorar el contacto, fabriqué una T soldada sobre pcb de prototipos. Entonces un grupo de cables iba desde la due hasta la T, y desde allí salía un grupo de cables para cada módulo. Tampoco funcionaba, pero algo me decía que era cuestión de los cables, su longitud o contactos.

Entonces fabriqué una PCB para montar ambos módulos. El montaje quedaba: DUE-cables_dupont-PCB_cutre_con_ambos_módulos. ¡PREMIO!

Con esta configuración he hecho funcionar ambos módulos. Bueno, ahora que lo pienso, la sd la uso en el setup y no vuelvo a usarla. Tengo que verificar que funciona en el loop al mismo tiempo que el módulo Ethernet.

Posibles causas del problema:

  • Uno de los cables dupont no estaba bien crimpado y no funcionaba bien.
  • La longitud, la topología o ambas afectan al bus SPI

Espero que sea de ayuda a otros compañeros.

Un saludo.

Para que sea de ayuda a otros compañeros, publicaría algunas fotos de como has hecho tu proyecto (usando las normas claro está, o sea con tags para imágenes) y también pondría el código que has usado.
El tema de la SD interactuando con otros dispositivos siempre es motivo de consulta en este foro.