viernes, 19 de noviembre de 2010

Comunicaciones

La comunicación del Arduino con los integrados de la radio es del tipo serie y el protocolo es propietario, esto es, inventado por Sanyo. El protocolo es parecido al SPI con varias salvedades:
- en el SPI el número de bits transmitidos/recibidos es múltiplo de 8
- y en el SPI la transmisión y la recepción son simultáneas.
En este caso la recepción es posterior a la transmisión, y el número de bits es raro (180, 57, y otros números...).

El  caso es que este tipo de protocolos donde existe un maestro y varios esclavos permite compartir el bus de datos. Esto se hace gracias a que el esclavo sólo "habla" cuando el maestro lo "pide" y sólo "habla" el esclavo que el maestro "escucha". ¿Cómo se hace esto? Cualquier esclavo que no esté seleccionado con la señal ENABLE deja su línea compartida en estado de alta impedancia.

De este modo, el número de líneas que se utilizan para las comunicaciones con N esclavos son: (N) ENABLES, (1) CLK, (1) DO y (N) DI.

Todo esto está muy bien. Pero ¿por qué el diseñador usó líneas de comunicación separadas para cada integrado pudiendo compartirlas? Mi opinión: para qué complicarse la vida. La regla de oro: KISS (Keep It Simple, Stupid!) aplicable a la mayoría de los aspectos de la vida.


Puesto que yo hice lo mismo para comunicar los integrados con el Arduino, sólo me queda una solución para hacer el protocolo: "BIT-BANGING". Dicho en español: "A PELO". Es decir, usar software para emular un periférico eminentemente hardware como un puerto SPI, I2C o un puerto serie.  Se van poniendo las señales 1 y 0 en los pines de comunicaciones al ritmo del reloj que también vamos dictándo nosotros y después leemos la entrada manteniendo la señal de reloj.


No hay comentarios:

Publicar un comentario