Extraño comportamiento SPI con un Microchip 25LC01

3

Tengo una de esas situaciones en las que creo que he cruzado mis t y yo, pero las cosas todavía no están funcionando; Sin embargo, soy nuevo en SPI. Tengo un Microchip 25LC01, en un paquete de 6 pines, que parece necesitar relojes adicionales para enviar comandos, lo cual es contrario al hoja de datos . El mejor ejemplo de este comportamiento que se puede ilustrar en el comando donde leí el registro de estado, y la Figura de la hoja de datos muestra la siguiente forma de onda:

Entonces,registraunainstruccióndeochobitsyluego8relojesdespuésdeeso,deberíahaberrecibidosurespuesta.Loqueveoesloquesigue:

Unanota,lasseñalessondehechode3.3V,peromialcanceestáconfiguradoaunaresoluciónde5V,queesloquelanotade5Vestádebajodecadaetiquetadecanal.Entonces,envíoelcomandoparaleerelregistrodeestado,quees0000x101ynoobtengonada.Elbordeascendentedelrelojsesientabienenelcentrodelaorden.Sinembargo,aquíesdondesevuelvemásextrañodesdeaquí.Sivuelvoaleerelregistrodeestado,recibounarespuesta.

¿Cuál es la probabilidad de que ocurra la respuesta correcta? 8 ciclos DESPUÉS de que lo esperaría.

Con los tiempos de microsegundos, estoy dentro de la especificación para el tiempo en el IC, así que mi pregunta es: ¿Microchip tiene algún comportamiento especial de la máquina de estados que sea suficientemente conocido como para no documentarlo?

Solución Aparentemente, el problema se debió a que se desestabilizó / CS demasiado rápido después de que cayó el último borde del reloj. Añadir un poco más de tiempo a / CS después del último reloj parece resolver el problema.

    
pregunta b degnan

1 respuesta

3

Una cosa que observo es que en la primera traza, comienzas con el reloj alto. Tenga en cuenta que la hoja de datos muestra que el reloj está bajo en el momento en que la selección del chip pasa a nivel bajo.

También es extraño que MISO pase por tres estados en el primer diagrama. Debería estar flotando al principio, así que solo debe ser manejado por cualquier pull-up o desplegable que tenga en la línea. El nivel intermedio después de 8 relojes es extraño porque no es sólidamente alto o bajo. Pero luego, MISO se vuelve completamente bajo después de que se anula la selección del chip.

Esto parece que hay algo más que impulsa MISO que solo el dispositivo seleccionado y un pullup débil o desplegable en algún lugar. Tal vez algún otro dispositivo en el bus esté vinculado accidentalmente al mismo chip seleccionado, o siempre se seleccione por alguna razón.

A veces es más fácil depurar problemas extraños de SPI conduciendo el bus estrictamente desde el firmware. De esa manera, puede garantizar que solo se cambie una salida a la vez, con un tiempo mínimo entre los cambios y cuando se lean las entradas. Una vez que obtenga la respuesta correcta del dispositivo, puede volver al hardware SPI y comparar las diferencias.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas