4 votos

Bus intermitente SPI

Estoy tratando de interfaz de un PIC18F4520 a un 25LC640 a través de protocolo SPI. Estoy utilizando el construido en el MSSP hardware del PIC. El PIC18F4520 es el único maestro en el bus. Estoy leyendo los 16 bytes de datos de la EEPROM de 32 veces por segundo. He comprobado los siguientes elementos:

  1. TRIS se Registra para SDI y SDO, SCK, y CS
  2. Velocidad En Baudios ~ 1 Mhz
  3. El Modo SPI 0,0

He comprobado la señal en un osciloscopio y todo parece bien. He intentado usar un BusBee para el registro de los datos de la EEPROM y el 99% del tiempo es correcto. Cada vez que hay una cadena de peticiones donde el MOSI (SDO) de la línea no parecen contener la correcta lectura EEPROM de instrucción que causa los datos que se registró en el micro para ser válido. Esto ocurre a pesar de que estoy escribiendo el mismo lean las instrucciones en el SSPBUF cada momento. ¿Qué otra cosa puede ir mal con un bus SPI?

5voto

Jon Ericson Puntos 9703

Si tienes un esquema, puesto que, también cualquier información con respecto a cómo su tratamiento de las líneas de señal. En 1Mhz de la línea de transmisión efectos pueden entrar en el juego, usted mencionó que el ámbito de la señal y todo se veía bien, pero ¿verificar tiempos de subida/caída, reflexiones y sonando? Son su línea de señal terminado y la impedancia controlada? Cuánto son?

Otras cosas al azar podría ser:

  • error en el código, crear un pequeño programa que no hace nada pero la lectura de la EEPROM a prueba
  • Asegúrese de que el CS de la instalación y los tiempos de espera antes de transferencias de comenzar
  • son de escritura en la EEPROM? si es así estás de comprobar el registro de estado para asegurarse de que la escritura se completa antes de intentar una lectura?
  • Estás usando la velocidad de respuesta de control en el MSSP? Ya sea de manera de comprobar que su min/max tiempos de subida/caída están dentro de la EEPROMS límites.

4voto

YonahW Puntos 145

En el pasado me he dado cuenta de que algunos de los PIC hojas de datos no mostrar correctamente el SPI CPOL y CPHA registros, hubo algunos problemas que cuando se mira a la salida de un ámbito, dos de las cuatro combinaciones fueron de nuevo al frente de lo que se esperaba. Así que revise usted está consiguiendo realmente la espera de la forma de onda de salida de tu PIC y que la forma de onda coincide con lo que se necesita en la EEPROM.

También me he encontrado con algunos convertidores a/D que trabajó intermitentemente cuando yo tenía incorrecta de los valores del SPI en un HC12, me llevó plátano tratando de trabajar, fue uno de mis primeros proyectos como ingeniero profesional, con el tiempo he trabajado. Pero estoy divagando. Así que es posible obtener intermitente problemas utilizando el bus SPI debido a establecer incorrectamente CPOL/CPHA. Como es un registro de desplazamiento después de todo, y el último bit en uno de los personajes pueden ser de lectura de la primera de la siguiente carácter. Este tipo de problema no puede ser observado directamente.

Así que asegúrese de que usted tiene la configuración correcta en un ámbito, y no del relé sólo la configuración de los registros del PIC.

0voto

hromanko Puntos 548

He tenido errores intermitentes similares y descubrí que era un error en el código. No tenía que ver con SPI, pero de vez en cuando el chip se reiniciaba y esto causaba que la basura se escribiera en la memoria del chip; asegúrese de que su código sea estable. Una forma de hacerlo sería restablecer para que presione un botón para que no se reinicie automáticamente.

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