Confiabilidad del expansor de E / S serie como MCP23S17

1

Background:

Estoy haciendo un rediseño de un sistema existente que se mueve desde la base HC11 con E / S asignadas en memoria a un ARM Cortex-M3 con E / S en serie SPI / I2C (entradas opto aisladas y salidas de relé). El acceso de E / S se realizará a través de SPI en serie o I2C a los chips de expansión de E / S ( MCP23S17 ) . 2 chips por placa para 32 puntos de E / S cada uno, y se pueden apilar / interconectar hasta 4 tableros mediante un cable de cinta corto para los buses SPI. La placa del microprocesador se apilará en la parte superior de la placa de E / S principal y tendrá acceso a las placas de E / S adicionales a través de los buses SPI como se mencionó anteriormente.

Pregunta :

¿Esta ruta serial, SPI a MCP23S17, será sólida y confiable para acceder a los puntos de E / S o la naturaleza serial será demasiado susceptible al ruido y / u otros problemas relacionados?

Este es un sistema de control de misión crítica que funciona las 24 horas del día, los 7 días de la semana, encuestando la E / S, por ejemplo, entre 500Hz y 1kHz. Quiero que la velocidad del bus SPI sea de alrededor de 2MHz, así que no tan rápido sino también lento.

En más de 20 años con mi diseño actual de mapeo de memoria HC11 con acceso a E / S a través de un cable plano de 3 pies y 50 pines, nunca tuve un solo problema, pero me preocupa que el cambio a un diseño serial basado en SPI pueda comenzar causando todo tipo de problemas.

Apreciaría cualquiera de tus pensamientos y experiencias con esto.

    
pregunta Visinet

2 respuestas

3

El MCP23S17 es confiable pero algunas peculiaridades son:

  1. Vih es bastante alto (es proporcional a Vdd), por lo tanto, verifique que todo lo que esté activando los pines de entrada cumplirán y excederán el parámetro Vih.

  2. Puede perderse eventos de interrupción sobre cambio porque la lectura del registro de reconocimiento de interrupción (GPIO o INTCAP) borra todos ocho bits de ese puerto. Si se produce otra interrupción en el cambio en un pin diferente del mismo puerto durante la lectura, en el momento en que finalice la operación de lectura (por ejemplo, dentro de una ventana de 500us), habrá perdido esa información que sucedió otra. Puede recibir de forma segura un evento de interrupción sobre cambio como máximo en cada puerto, no ocho.

  3. La funcionalidad de interrupción en el cambio puede ser sensible al borde (ambos bordes) o sensible al nivel, pero no puede seleccionar solo el borde ascendente o el borde descendente solamente. En el modo sensible al nivel, si reconoce un evento de interrupción en el cambio pero el nivel activo aún persiste, entonces se produce un error en la línea de interrupción de algunas decenas de nanosegundos. Su MCU podría filtrarlo o podría provocar una segunda interrupción, así que tenga cuidado.

  4. Verifique la errata para un problema de direccionamiento relacionado con el bit HAEN del registro IOCON, hay una descripción alternativa que Microchip describe. No deja de mostrarse, pero la hoja de datos no lo aborda, solo lo hace la errata.

respondido por el user171804
0

Un enlace SPI correctamente diseñado debería estar bien; piense en cuántos sistemas de misión crítica se ejecutan en buses como Ethernet o CAN. No hay ningún error "inherentemente" con un enlace de comunicaciones serie, pero puede ser inteligente al respecto en su diseño.

Por ejemplo, a nivel de software, puede introducir un manejo robusto de errores y hacer cosas como volver a leer los valores después de escribir en un registro para asegurarse de que lo que usted escribió es lo que realmente sucedió.

Desde un punto de vista de hardware, puede ver algunas de las muchas notas de aplicación que hay para SPI de "larga distancia". Algunas de las estrategias incluyen la conversión a diferencial para la ejecución del cable, y luego volver a un extremo en el nodo receptor. No es que 3 pies sean particularmente "largos", pero el diferencial es una forma fácil de comprar inmunidad contra el ruido.

También considere el diseño a nivel del sistema; en el caso de 'pérdida de comunicación', ¿es eso un fallo detectable? ¿Se puede enviar una señal de latido cardíaco tonto a lo largo del arnés que pondrá a la E / S en un estado "seguro" si falla? Estos son unos cuantos cables adicionales, pero probablemente podría meter todo esto en una conexión de tipo D (o micro-D) de 9 o 15 pines.

    
respondido por el Krunal Desai

Lea otras preguntas en las etiquetas