Frecuencia de operación de maestro y esclavo SPI

0

Si un maestro está funcionando a 4MHz y el esclavo a 16MHz, los datos aún deben muestrearse a la velocidad del pin SCLK, la diferencia de frecuencia no debería importar, ¿verdad?

Utilicé una placa Mikroe Dev y traté de comunicarme con un periférico CAN usando SPI.
El módulo de la placa funcionó a 16MHz usando un oscilador externo mientras que mi MCU solo usó su reloj interno de 4MHz, no funcionó ningún comando hasta que funcionó un oscilador externo utilizado a 16MHz.

¿Pueden un maestro y un esclavo operar en dos frecuencias diferentes, no las frecuencias de pin SCLK sino la frecuencia de ciclos de reloj real?

    
pregunta user155600

2 respuestas

1

Se trata de la velocidad del periférico al que intenta conectarse. En general, el microprocesador o puerto está en un múltiplo de la frecuencia CAN.

No tiene problemas para comunicarse entre el maestro SPI y MCP2251. Pero el maestro de 4MHz significaría 500kHz (dividido por 8) periférico CAN-BUS. Las probabilidades son que el periférico CAN no reconoció las comunicaciones si era de 1MHz (o 250kHz).

Su microprocesador estaba intentando comunicarse con un periférico a una velocidad más lenta de lo que esperaba el periférico.

Las probabilidades son que el periférico se puede reconfigurar para comunicarse a la velocidad más baja si lo necesita.

    
respondido por el StainlessSteelRat
2

Tienes tres frecuencias diferentes aquí. El maestro tiene una frecuencia de reloj de 4MHz. El esclavo tiene una frecuencia de reloj de 16MHz. La interfaz SPI tiene un reloj de transferencia determinado por la línea SCLK. Esto lo genera el maestro y puede ser cualquier frecuencia que elija, siempre y cuando a) el maestro pueda crearlo y usarlo b) el esclavo lo pueda aceptar yc) sea lo suficientemente rápido para sus requisitos de velocidad de transferencia.

Generalmente, los maestros y periféricos SPI tienen registros de cambio de hardware dedicados, que manejan los requisitos de alta velocidad del reloj, y solo demandan o presentan bytes completos al controlador.

    
respondido por el Neil_UK

Lea otras preguntas en las etiquetas