Por lo que puedo decir, estás haciendo todo bien.
Si estuviera sentado en mi mesa de trabajo, esto es lo siguiente que haría:
En unidades de producción, haría que la resistencia en MISO sea un pull-up, en lugar de un pull-down.
La página 37 de la hoja de datos solo garantiza 100 uA en "MISO out high", pero más de 10 veces la corriente en "MISO out low".
El 1.6 mA en "MISO out low" es suficiente para iluminar (débilmente) un LED de alta eficiencia con una resistencia pull-up apropiada a +3.3 V.
Me parece que agregar LED a cada señal cuestionable me ayuda a encontrar problemas más rápido.
Los 100 uA en "MISO out high" significa que no espere que el chip flash funcione con un menú desplegable de 33 KOhm o menos.
En mi plantilla de prueba (pero no en unidades de producción), cambiaría temporalmente la resistencia en MISO cambiada para tirar débilmente de MISO a alrededor de 1.5 V, lo que ayuda a distinguir entre alta (cerca de 3.3 V), baja (cerca de 0 V) , y tristate (cerca de 1.5 V).
Volvería a ejecutar la prueba y me aseguraré de que la cosa only conectada a MISO sea la sonda o'scope (o analizador lógico) y esa resistencia de polarización (ni siquiera el PIC conectado) para descartar la posibilidad de que el PIC esté conduciendo accidentalmente MISO a GND.
Haría un programa de prueba personalizado en el PIC que no hace nada más que seleccionar el chip flash, intentar una IDENTIFICACIÓN DE LECTURA y leer 20 bytes, luego deselecciona el chip flash y luego se repite para siempre. (Parece que tal vez ya has hecho esto).
En teoría, es posible que un chip PIC se dañe lo suficiente como para que el analizador lógico distinga "0" de "1", pero no lo suficiente para que el chip flash pueda distinguirlos. / p>
Por lo tanto, puedo verificar los voltajes (a) ajustando el programa de prueba personalizado para que ejecute el CLK a 1 Hz, de modo que pueda verificar cada línea en el chip flash con un voltímetro, o (b) ejecutar el programa de prueba en una velocidad más típica (500 KHz o 10 MHz debería funcionar bien) y revisar cada pin con un oscope real (no solo un analizador lógico).
Es bastante fácil destruir un chip flash, por lo que se ve bien en la inspección visual, pero está dañado, por lo que ahora nunca funcionará (siempre con tres estados o siempre con 0).
Tal vez intercambie el chip flash por un chip M25P16 "idéntico" en algo como JeeLink y vea si El problema sigue al chip flash o permanece con el chip PIC.
Tal vez reconstruya todo el circuito con cables nuevos, un chip PIC nuevo y un chip flash nuevo, y cambie los chips para ver si el problema sigue al chip PIC, sigue al chip flash o sigue los cables prototipo. .