PIC, SPI problema con la tarjeta SD y otros dispositivos

0

Estoy usando un PIC24H como maestro conectado con un microSD card , ENC28J60 y un expansor de puerto MCP28S08. Estoy usando la biblioteca FatFs para una tarjeta microSD y la pila TCP / IP de Microchip para ENC28J60. Todo funciona bien, pero tengo algunos pequeños problemas que no puedo explicar ...

El principal problema es que la tarjeta microSD falla en la inicialización. Para solucionar este problema, tengo que colocar una resistencia de pull-up (10k) en la línea SDI (MISO). Con ella, la tarjeta SD funciona bien, y después de la inicialización puedo retirarla y la tarjeta sigue funcionando, por lo que creo que el problema es realmente solo durante la inicialización de la tarjeta.

Puedo reiniciar (MCLR) mi PIC sin problemas, pero si "reinicio de encendido" (POR), entonces tengo que usar la resistencia de pull-up.

De todos modos, esto crea otro problema ... Si uso una resistencia de recuperación en la línea SDI, el MCP28S08 no puede leer el valor correcto del puerto GPIO. Para resolver esto, tengo que quitar la resistencia y luego (sin reiniciar también la MCU) comienza a funcionar bien.

Noté que cuando quito la resistencia y MCP comienza a funcionar, entonces puedo volver a agregar la resistencia sin problemas porque MCP sigue funcionando ... ¿por qué? Esto no tiene sentido ...

Mi circuito está en una placa de pruebas, tal vez haya algunas interferencias en mi circuito.

¿Podría ser un problema de tiempo?

Creo que un osciloscopio puede ayudarme a descubrir este problema. Ahora utilizo un analizador lógico Saleae, pero no puedo encontrar el problema con esto, porque solo puede indicarme cuando una señal es 1 o 0 ... ¿Puede un osciloscopio USB PicoScope 2104 ayudarme con esto?

    
pregunta blow

1 respuesta

1
  

resistencia de [...] pull-up (10k) en la línea SDI (MISO). Con ella, la tarjeta SD funciona bien, y después de la inicialización puedo retirarla y la tarjeta sigue funcionando, así que creo que el problema es realmente solo durante la inicialización de la tarjeta.

Los pines de la tarjeta SD funcionarán en el modo de "drenaje abierto" después del encendido. Necesitan un pullup para generar "alto" hasta que cambie la tarjeta al modo SPI.

  

De todos modos, esto crea otro problema ... si uso una resistencia de recuperación en la línea SDI, el MCP28S08 no puede leer el valor correcto del puerto GPIO.

Una resistencia de 10k dibujará solo 0.33 mA a 3.3 V. Las salidas SPI deberían ser lot más fuertes que eso. Puede probar una resistencia más grande, alrededor de 47 kOhm para empezar, pero es posible que deba disminuir la frecuencia de inicialización de su tarjeta SD.

    
respondido por el Turbo J

Lea otras preguntas en las etiquetas