Dos modos SPI diferentes en un microcontrolador

0

Estoy conectando dos chips con comunicación SPI con atmega328. Un chip usa el modo SPI 0 y el otro modo SPI 1. ¿Es recomendable cambiar los modos en micro cada vez que se recibe una solicitud de interrupción desde cualquier chip? ¿Qué otras opciones tengo? Intenté hacer bit bang SPI para uno, pero el reloj máximo que pude alcanzar fue de 900 kHz, mientras que mi requisito de reloj mínimo es de 1Mhz para ambos chips.

    
pregunta Nirmala

2 respuestas

2

Para intentar responder a todos los aspectos de su pregunta, rápidamente saqué las páginas relevantes de la hoja de datos. Desafortunadamente, la descarga de Atmel no funciona en este momento, por lo que estoy usando el antiguo de mi archivo que solo va a los dispositivos mega168 (P) (A), pero probablemente no hayan eliminado ninguna funcionalidad. Incluso tengo dudas de que hayan cambiado algo más que las especificaciones de memoria. Por lo tanto, no voy a vincular ninguna página, gráfico o tabla, porque eso sería confuso sin un enlace directo al PDF que estoy viendo.

Un aspecto de mi respuesta es: Sí, puedes cambiar de modo si no estás sincronizando activamente a alguno de los dispositivos conectados, lo que significa que mantener tu Selección de Chip sin confirmar es la forma más fácil de asegurarte. Luego, cuando esté en el modo único, asegúrese de no hacer valer accidentalmente el chip equivocado, ya que podría estar tomando decisiones sobre datos defectuosos. Si tienes ese seguro debes ser dorado. Sería conveniente cambiar y tener alrededor de 1,5 ciclos de espera de reloj de bus (basado en interrupciones o de otro tipo), ya que las partes internas del dispositivo SPI posiblemente muestren algún comportamiento transitorio.

Edit1: basado en la publicación de Markt y comentando allí, el procedimiento de apagado, cambio, activación puede ser más rápido que esperar 1.5 ciclos de un bus de 1MHz, ya que el núcleo que funciona a 10MHz + probablemente manejará estas instrucciones en menos tiempo que eso E incluso si eso toma un poco más de tiempo, será más confiable y más fácil de garantizar (esperar 1,5 ciclos no es lo más trivial de inmediato).

Sin embargo, ¿sabe que el USART también puede operar en modo Master SPI 0, 1, 2 y 3? En mi hoja de datos después de la sección sobre USART0, se muestra una sección llamada específicamente "USART en modo SPI". Si está muy preocupado por las dificultades para cambiar, y posiblemente las señales perdidas (creo que las señales que faltan son muy dudosas si planifica sus interruptores lo suficientemente bien, pero aún así) o casi sobre el rendimiento total con el alojamiento de ambos dispositivos: ¿Otro puerto SPI?

    
respondido por el Asmyldof
0

Simplemente cambie el modo cuando sea necesario y mantenga ambas selecciones de chip en el estado sin validar.

Algo para tener en cuenta es que puede ser imposible cambiar el modo si el módulo SPI está habilitado, o puede causar un comportamiento inestable si lo intentas. Por este motivo, recomiendo desactivar el módulo SPI antes de cambiar cualquier configuración (y, obviamente, volver a habilitarlo antes de intentar usarlo).

    
respondido por el markt

Lea otras preguntas en las etiquetas