Cómo escribir datos continuos de 4 bytes sin ningún retraso SCK a través de SPI con Pic18f45k20

1

En pic18f45k20, tengo que escribir datos de 4 bytes a la vez sin ningún retraso de configuración SCK a través de SPI. ¿Hay alguna forma de cancelar el retraso de SCK mientras se envían 4 bytes juntos? (Como Assembly) Estoy usando MPLAB-XC8 y hitech c. En 10Mhz SPI, obtuve 460ns de retardo SCK entre dos bytes. Sin embargo, me gustaría cancelar ese retraso para escribir datos de 4 bytes a la vez.

    
pregunta tnt

1 respuesta

4

Cite de la hoja de datos de 18F4550, que debería ser la misma en relación con SPI:

  

En las operaciones de recepción, SSPSR y SSPBUF juntos crean un receptor con doble búfer. Cuando SSPSR recibe un byte completo, se transfiere a SSPBUF y se establece la interrupción de SSPIF.

     

Durante la transmisión, el SSPBUF no tiene doble búfer. Una escritura a SSPBUF escribirá tanto a SSPBUF como a SSPSR.

SSPBUF es un búfer de 1 byte y SSPSR es un registro de desplazamiento realmente conectado a los pines IO.

Esto significa que el maestro no tiene efectivamente un búfer para enviar datos. Después de enviar un byte, se debe escribir un nuevo byte en SSPBUF y se debe activar un nuevo proceso de transmisión. Esto siempre lleva un tiempo notable como retraso entre las transmisiones de bytes.

Si la reducción de la velocidad de SPI hasta que el retraso sea despreciable no está bien, debe implementar la transferencia de SPI en el software. ¡Esto será más lento que los modos de hardware SPI más rápidos!

Tenga en cuenta los diferentes ciclos de reloj que necesitan las instrucciones. Necesitará varios NOP s para obtener una señal SPI bien definida con un ciclo de trabajo de reloj del 50%. Hice esto hace algunos años y puedo mostrarlo al final de esta semana, ya que actualmente estoy de vacaciones.

Las bibliotecas de microchip también ofrecen software SPI. Pero dudo que puedan hacer transmisiones de múltiples bytes sin problemas.

    
respondido por el sweber

Lea otras preguntas en las etiquetas