Manejo de múltiples lectores RFID sobre SPI

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

  • 1 PCB de placa base 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 base, un electrón de partículas controla el circuito y se dirige a cada lector RFID individualmente mediante un registro de desplazamiento para los pines de selección de esclavos.

Todo funciona bien hasta que conecto la 7ª 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í.

En este momento puedo ir de dos maneras: intentar mejorar la señal SPI con la configuración actual de alguna manera (que no sé cómo hacer), o hacer un rediseño más grande.

En términos de rediseño, mi idea era poner un ATmega168 o 328 en cada placa de satélite y controlar los lectores RFID individuales. La placa base podría entonces comunicarse con las placas satélite a través de I2C, convirtiendo a cada placa satélite en 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 conectarse en cadena ya que I2C no usa una línea de selección esclava.

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 términos de actualizar la 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 para avanzar. Estoy abierto a todo, solo necesito elegir una dirección que resulte en un sistema más robusto, incluso si requiere un rediseño.

¿Alguna sugerencia? :-)

¡Gracias!

¿Cuál es la longitud de cada cable SPI individual? ¿A qué velocidad está ejecutando SPI?

Respuestas (2)

Compartiré mi experiencia en la que me enfrenté a una situación similar. Tuve que programar unas 24 memorias flash SPI usando solo la tarjeta maestra. La instalación fue así. Una placa madre enorme. Varias tarjetas secundarias estaban conectadas a él. Casi todas las tarjetas secundarias tenían dos FPGA y un DSP. Y tanto FPGA como DSP tenían memorias flash SPI dedicadas conectadas a ellas que se usaban para almacenar el código.

Cómo lo resolví fue usando LVDS. Enruté todas las líneas SPI del maestro al controlador LVDS y el controlador LVDS en el lado del bálsamo luego traerá estas líneas a este esclavo.

Para 24 esclavos tenía 24 GPIO (configurados como Chip select). Y sólo una MOSIlínea, MISOlínea y CLKlínea.

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

Entonces, la selección de chips está resuelta.

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

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

La señal LVDS es diferencial. Te ayuda a dibujarlos a poca distancia fácilmente. Tampoco necesitan referencia a tierra. ingrese la descripción de la imagen aquíPara cables largos y de larga distancia, ir a la señal diferencial ayuda a la integridad de los datos (los niveles de voltaje pequeños son suficientes).

También inmune al ruido exterior ya que queda anulado por su carácter diferencial.

Estaré encantado de ayudar más.

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

Aislador: http://www.analog.com/en/products/interface-isolation/isolation/standard-digital-isolators.html

Búfer: http://www.ti.com/logic-circuit/buffer-driver-transceiver/non-inverting-buffer-driver/products.html