Pregunta

Estoy empezando a tratar de interfaz con algunos componentes externos (Skyetek M1 Mini o M1 escáner RFID) que admite los siguientes protocolos TTL, SPI o I2C.Me pregunto que una de estas rutas que recomendaría.La aplicación que se está ejecutando en el lugar necesita una gran cantidad de tiempo de procesamiento (un funcionamiento continuo gesto algoritmo de coincidencia) y es bastante recurso caro.

Los enlaces o fuentes sobre el tema, sería muy apreciado.

Enlaces útiles que he encontrado:

TTL:

  • Lista De La Función incluyendo aquellos para UART de control.
  • No parece tener buen tampón de control de acuerdo a este

Gracias por tu ayuda.


Editar:

Si se ayuda a que el dispositivo estoy tratando de interfaz con el Skyetek M1 y M1 mini.La plataforma/CPU es el Sol Las manchas solares.

¿Fue útil?

Solución

Por TTL, ¿te refieres a UART (donde un periférico recibe / envía una transmisión en serie automáticamente) o bitbanging (donde establece / restablece / alterna manualmente los bits)?

Probablemente recomendaría SPI. Es un protocolo relativamente fácil, y en el lado maestro, si es necesario, puede golpearlo. (Pero es mucho más fácil usar periféricos SPI incorporados). El maestro SPI envía una línea de reloj (SCLK) y una línea de datos (MOSI = maestro fuera esclavo), donde los bits de datos son válidos en un borde designado del reloj línea; recibe una línea de datos (MISO = maestro en esclavo fuera) del esclavo donde los bits de datos son válidos en un borde designado de la línea del reloj. Si tiene varios esclavos, la técnica suele ser tener una línea de selección de chip (CS) para cada esclavo; si CS es bajo, entonces el esclavo en cuestión está activo, de lo contrario se supone que ignora las señales de reloj / datos y no perturba la línea MISO. SPI es simple e incluso funcionará con un registro de salida HC594 o HC595 (conecte MOSI a SER, SCLK a SCK, CS a RCK) si su microcontrolador tiene pocos pines de puerto de salida y necesita algunos adicionales. Si tiene más de 3 dispositivos SPI, considere usar un HC138 como decodificador para producir las líneas CS del dispositivo individual a partir de un conjunto de bits de dirección y una línea de selección de chip maestro desde el microprocesador. (dado que se supone que solo una línea CS es baja a la vez)

I2C es un dolor. Su principal ventaja es que puede hacer todo en 2 cables (+ alimentación y tierra) compartidos entre un montón de periféricos. Pero tienes que manejar la contención de direcciones y muchas otras cosas. También es más lento que el SPI y tiene líneas de colector abierto, por lo que su consumo de energía + inmunidad al ruido están relacionadas con lo que usa para resistencias pullup (o fuentes de corriente).

Un UART puede ser la solución más rápida. SPI tiene una limitación de velocidad relacionada con el tiempo de propagación de ida y vuelta, ya que ambos lados usan la misma señal de reloj. (ruta de señal = el maestro cambia el pin SCLK, el esclavo lo ve y responde cambiando el pin MISO, luego el maestro usa la señal MISO en el siguiente borde SCLK, por lo que la señal del esclavo debería haber llegado para entonces) En un UART, los flujos de bits entrantes y salientes son independientes y la latencia no significa que su rendimiento se reduzca a menos que el protocolo de alto nivel sea para que el punto final UART A envíe un comando al punto final UART B, espere a que B responda y luego envíe el siguiente comando. Las transmisiones en serie realmente rápidas deberían considerar usar LVDS para mantener la integridad de la señal. Pero analizar bytes UART es un poco complicado en comparación con SPI; en SPI hay paquetes claramente delimitados, mientras que en UART se trata de un flujo en serie no delimitado y cualquier paquete debe realizarse analizando los datos en sí.

edit: una ventaja más con un UART, es que a veces el procesador puede manejar automáticamente grandes buffers de envío / recepción, de modo que su programa puede poner en cola una gran cantidad de bytes para enviar, y luego analizar un montón de bytes recibidos cuando te apetezca. El hardware puede manejar la inmediatez de enviar / recibir cada byte individual, y libera a su programa de preocuparse por la falta de bytes individuales que llegan cuando su programa está haciendo otra cosa.

Otros consejos

Jason la respuesta es mucho más detallada, pero pensé que me gustaría añadir mi breve experiencia.

He utilizado un SkyTek M1 Micro de lectura/escritura RFID módulo conectado a un BASIC Stamp más de TTL.Nunca he tenido ningún problema, y la puesta en marcha era mucho más simple de lo que hubiera sido si yo hubiera elegido I2C.

Sólo se requiere el microcontrolador para enviar simple serie TTL comandos, después de la SkyeTek protocolo.Yo lo tenía configurado y funcionando en unos 5 minutos en mi protoboard.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top