Conduciendo múltiples lectores RFID sobre SPI

1

Actualmente estoy intentando controlar al menos 16 lectores RFID (RC522) a través de la comunicación SPI. La configuración es así:

  • 1 placa base de PCB con 16 zócalos para conectores de cable plano
  • 16 PCB de placa satélite, cada uno con conector de cable plano y un encabezado para el lector RFID

En la placa principal, un Particle Electron controla el circuito y dirige cada lector RFID individualmente mediante un registro de desplazamiento para los pines de selección del esclavo.

Todo funciona bien hasta que conecto la séptima placa satélite + lector. Supongo que tiene algo que ver con la capacidad de carga y que alcanza algún tipo de límite allí.

Ahora mismo puedo ir de dos maneras: intentar mejorar la señal SPI con la configuración actual (lo que no sé cómo hacer) o hacer un rediseño más grande.

En términos de rediseño, mi idea fue colocar un ATmega168 o 328 en cada placa de satélite y hacer que controlen los lectores RFID individuales. La placa base podría entonces comunicarse con las placas satélite a través de I2C, haciendo que cada placa satélite sea un esclavo I2C. Para evitar el mismo problema de capacitancia que antes (solo en las líneas I2C), consideré usar un extensor de bus como el P82B715. Esta solución también requeriría mucho menos cableado, ya que cada placa de satélite podría estar conectada en cadena debido a que I2C no usa una línea de selección de esclavos.

Sin embargo, mi esperanza es que haya una solución mejor / más fácil que hacer un rediseño. Agregar ATmegas aumenta el costo del sistema (que se vuelve importante a largo plazo), y agrega más pasos en cuanto a la actualización del MCU en cada placa de satélite.

Básicamente, me gustaría algunos comentarios o sugerencias en términos de qué enfoque sería el más adecuado, avanzando. Estoy abierto a todo, solo necesito elegir una dirección que dará como resultado un sistema más robusto, incluso si requiere un nuevo diseño.

¿Alguna sugerencia? :-)

¡Gracias!

    
pregunta Anders

2 respuestas

1

Compartiré mi experiencia en la que me había enfrentado a una situación similar. Tuve que programar aproximadamente 24 memorias flash SPI usando solo en la tarjeta maestra. La configuración fue así. Una gran placa madre. Varias tarjetas de la hija estaban conectadas a él. Casi todas las tarjetas secundarias tenían dos FPGA y un DSP. Y ambas, FPGA y DSP, tenían memorias flash SPI dedicadas que se usaban para almacenar el código.

Cómo resolví que estaba usando LVDS. Dirigí todas las líneas SPI desde el maestro al controlador LVDS y el enrutador LVDS en el lado de la balsa llevará estas líneas a este esclavo.

Para 24 esclavos tuve 24 GPIOs (configurados como Chip select ). Y solo una línea MOSI , línea MISO y línea CLK .

Tomé todas estas 27 líneas a través del conector. Todas las tarjetas hijas tenían buffers para la señal de selección de chip entrante.

Por lo tanto, la selección de chip está ordenada.

Las líneas MISO, CLK y MOSI se conectaron al controlador IC de LVDS. En el otro extremo, se conectaron a los nodos de LVDS. LVDS admite dispositivos múltiples para conectarse y tenía aproximadamente 7 placas. Estuvo bien. Funcionó.

Para su caso, puede agruparlos y almacenarlos. Solo una línea SPI, selección manual de CHIP (GPI0s). CS no necesita ser cambiado continuamente ¿verdad? Es por eso que los había conectado directamente. Lo había guardado también en ambos lados.

Las señales LVDS son diferenciales. Te ayuda a dibujarlos a poca distancia fácilmente. No necesitan referencia de tierra también. Para cables largos y de larga distancia, la señal diferencial ayuda a la integridad de los datos (los niveles de voltaje pequeños son suficientes).

También es inmune al ruido externo ya que se cancela debido a su naturaleza diferencial.

Estaré encantado de ayudar más.

    
respondido por el Umar
0

Consideraría el uso de aisladores digitales para redirigir la señal SPI y proporcionar aislamiento, o simplemente un búfer digital regular.

Aislador: enlace

Buffer: enlace

    
respondido por el Eric Johnson

Lea otras preguntas en las etiquetas