diferencia entre SMPEND y SMPMID

1

Estoy conectando un chip SPI con un dispositivo PIC18, programado con un programa C compilado con el compilador XC8, usando bibliotecas de plib.h . En la docs , leí:

void OpenSPI( unsigned char sync_mode,
              unsigned char bus_mode,
              unsigned char smp_phase);
  

smp_phase
  Uno de los siguientes valores, definidos en spi.h:
SMPEND : muestra de datos de entrada al final de la salida de datos
SMPMID : muestra de datos de entrada en la mitad de la salida de datos

¿Qué cambia este parámetro?

Estoy conectando la ENC28J60 , y descubrí que ambos valores para smp_phase dar como resultado una conexión de trabajo. ¿Hay chips que no funcionen con ambos valores y, de no ser así, cuál es el uso de la configuración?

    
pregunta Keelan

1 respuesta

2

Al igual que con todos estos tipos de problemas de bajo nivel, debe leer la hoja de datos. Está bien llamar a las rutinas de la biblioteca, pero en estos sistemas pequeños con recursos limitados, donde siempre está cerca del hardware, debe saber qué sucede en el nivel bajo, ya sea que se haga en una rutina de biblioteca o en su propio código.

Lea la parte SPI del capítulo para el periférico MSSP. Esto incluye algunos detalles sobre estos modos, e incluye diagramas de tiempo para las distintas combinaciones. Podría copiar algo de eso aquí, pero eso sería inútil ya que necesita leer la hoja de datos en cualquier momento.

Este es un buen ejemplo en el que escribir el código usted mismo hubiera sido más fácil que llamar a una rutina de biblioteca. Esto no se debe a que la llamada sea difícil, pero verificar que la biblioteca de otra persona hace exactamente lo que necesita lleva más tiempo que simplemente configurar el hardware de esa manera en primer lugar. Solo hay 2 registros de 8 bits para configurar el uso del MSSP, lo que debería dar como resultado 4 instrucciones.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas