Con varios esclavos en un bus SPI, solo uno puede comunicarse a la vez. El maestro es responsable de elegir qué chip es, manipulando la línea de selección de esclavos apropiada. Si tienes varios esclavos y es posible que deban enviar mensajes al maestro, tienes varias opciones:
- Encuestar a los esclavos. El maestro recorre regularmente los esclavos, verificando si quieren comunicarse.
- Usa otro cable. Algunos chips SPI pueden establecer una conexión por separado que no forma parte del bus SPI, pero está conectada al esclavo y al maestro. Cuando el maestro ve que esto sucede, sabe cómo contactar ese chip a través del bus SPI. Esto a veces se conoce como una interrupción, aunque puede o no desencadenar una interrupción real en el microcontrolador.
No hay un sentido de prioridad más allá de la idea básica de que se selecciona un esclavo y todos los demás ignoran el bus. Si necesita tener un sistema de prioridad, puede hacerlo en el software del maestro, pero no es parte de SPI.
Un ejemplo de un chip que he estado utilizando recientemente es el AD7730. Es un ADC, y regularmente tiene nuevos resultados de conversión para pasar al maestro. Una forma de usar este chip es conectarse mediante SPI y leer regularmente el registro de estado. Cuando uno de los bits en el registro de estado se pone alto, significa que hay una nueva medición lista, y puede leerla (también sobre SPI). Una forma alternativa de usarlo es conectar el pin RDY en el AD7730 a un pin GPIO en su maestro y, cuando la medición esté lista, ese pin va alto. El maestro puede leer el resultado a través de SPI.