Como lo que veo en el esquema, hay 2 canales para esclavos: CS0 y CS1. ¿Significa que solo puedo conectar 2 chips, como MCP3008 o algo así? ¿O puedo adjuntar más esclavos a estos 2 esclavos adjuntos?
¿El esquema Raspberry tiene soporte o algo en común con este esquema de conexión de esclavos SPI tomado de Wikipedia? ¿Es posible hacerlo así?
Respuestas:
Muchas maneras.
Puede hacer una especie de explosión de bits que el esclavo selecciona, es decir, conectar todos los dispositivos con MISO / MOSI / SCLK compartido y tierra, pero con CS separado. Simplemente configure CS bajo para el dispositivo que desea antes de llamar al controlador SPI. El controlador SPI intentará establecer un CS pero no sabrá que no está conectado.
El Pis con el encabezado de expansión de 40 pines tiene otro dispositivo SPI con 3 selecciones de chip. Mi biblioteca pigpio es compatible con ese dispositivo.
Puede hacer un poco de software en todo el protocolo.
Puede agregar hardware adicional para cambiar la línea CS a cualquier dispositivo que desee.
Etcétera etcétera.
EDITADO PARA AGREGAR
El controlador "adecuado" de Raspberry Pi Linux SPI está actualmente en proceso de revisión para permitir que se usen gpios arbitrarios como CS.
EDITADO PARA AGREGAR 2
Se dice que el controlador SPI de Linux actual (spi_bcm2853) admite GPIO arbitrario a medida que se selecciona el chip. Ver / boot / overlays / README.
fuente
Tiene razón en que RaspberryPi proporciona solo dos selecciones de chip en su bus SPI (ver aquí ). Y supongo que los controladores SPI y las soluciones de software se basan en ese hecho (aunque la respuesta de @ joan sugiere que diferentes bibliotecas lo manejan de manera diferente y el controlador oficial permitirá que se usen pines GPIO arbitrarios como selecciones de chips en el futuro).
Sin embargo, debe tener en cuenta que una selección de chip no es más que una salida digital dedicada del Pi. Por lo tanto, siempre puede tener una mayor cantidad de selecciones de chip si usa los pines GPIO. En cuyo caso, sin embargo, su software será responsable de establecer los pines apropiados para abordar el esclavo SPI correcto.
Dado que la idea de las selecciones de chips es seleccionar mutuamente de forma exclusiva un solo esclavo, también puede utilizar algunos circuitos digitales simples para disminuir la cantidad de pines GPIO "desperdiciados" (si también los necesita para otros fines). Algo así como el 74HC / HCT138, un decodificador / demultiplexor de 3 a 8 líneas podría usarse para direccionar 8 esclavos a través de 8 selecciones de chip con solo 3 pines GPIO.
Es importante tener en cuenta que las líneas de autobús SCLK y MOSI se comparten entre todos los esclavos. Por lo tanto, cuando conecte varios esclavos al Pi, asegúrese de que la carga (resistencia y capacitancia de los pines de entrada de los esclavos) no exceda el despliegue del Pi, aunque esto no es un problema hoy en día con la baja capacitancia y Alta resistencia de las entradas digitales.
fuente
En realidad, hay una muy buena respuesta para esto por parte de un ingeniero de RPi, PhilE, en el foro de frambuesa, ver 28 de septiembre de 2015 . Básicamente, da un ejemplo de una superposición de árbol de dispositivos que utiliza la posibilidad con spi-bcm2835 de tener cualquier GPIO libre como selección de chip.
fuente