fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Protocolo Wireless para IMUX (y otros).

1 Respuestas
1 Usuarios
0 Reactions
1,182 Visitas
beamspot
Respuestas: 1132
Topic starter
(@beamspot)
Noble Member
Registrado: hace 17 años

Hola:

No se si esto debería ir en el foro de lenguaje C, pero como es parte acompañante de mi proyecto IMUX, de momento lo cuelgo aquí, aunque los administradores, en su inmensa sabiduría, lo pondrán donde debe 😉

Dicho esto, paso a explicar primero el proyecto y sus complejidades/intríngulis.

Como he puesto en otro foro, tengo hecho un proyecto HW llamado IMUX (Inertial Measurement Unit X-mega powered), que lleva un módulo RF de Microchip, con un controlador Xmega128A1 (pepinaco, por cierto). Pero también tengo un Raven completo, con ATmega1284/AT86RF230 en los inalámbricos, y ATmega1287/AT86RF230 en el USB que pretendo poner en mi PC.

Además, estoy pensando en hacer otro proyecto (en una última fase) con un STM32F103 (ARM Cortex-M3), utilizando el mismo módulo de Microchip.

Y como no veo inconveniente en hacer al menos la parte de comunicación abierta en este foro, creo que sería interesante también añadir soporte para PIC (aunque yo no haría esta parte).

Así pues, y dado que tengo de Atmel una buena porción de SW para controlar el AT86RF230 con los AVR, pero evidentemente, no tienen nada para controlar el módulo de Microchip. Ni nada para controlar ningún RF con los Cortex-M3, aún menos los de ST.

Si a eso le añadimos que el SW que hay tiene gratis la capa MAC estándar del IE3, y el resto o bien es ZigBee (con royalties) o bien es 6LowPAN (con licencia del SW ya escrito), me da en la nariz que sería mejor desarrollar nuestro propio potrocloro 'propietario' sobre el MAC estándar, y usarlo para nuestros fines.

Así pues, para abordar el problema, mi propuesta es la siguiente:

- Establecer una capa de 'driver' del puerto SPI, con un archivo .h común para todos los micros, pero con archivos .c adecuados para cada uno de ellos: PIC, AVR sin DMA, Xmega con DMA, y ARM (con y sin DMA).
- Sobre esta capa, otra de 'driver' del transceiver/MAC, también con un .h común para ambos xceivers, y con dos archivos .c para cada uno de ellos (el de MicroChip, y el de Atmel), usando el SPI descrito en el apartado anterior.
- La capa de protocolo de comunicación, que podría, o debería ser más o menos única y simple, para todas las configuraciones, y que se debería definir. Así que creo que sería oportuno que entre todos hiciésesmos un brainstorming sobre lo que nos interesa cubrir en dicho protocolo y cómo abordar esta funcionalidad.

Respecto de lo que ya está hecho. Tengo (Atmel tiene) los archivos del protocolo MAC para AVR (ATmegas solo, creo). Creo que ya están listos para usarse con el WinAVR (el que pienso usar) y el IAR (que sólo lo usaría para el ARM).

Lo que no tengo, pero seguro que está medio hecho, es el protocolo MAC para el módulo de Microchip, usando PIC. No tengo ganas de buscarlo ahora, así que si alguien lo tiene y es tan amable, me ahorra algo. Eso sí, portar parte, dividir el soft entre la parte de SPI y la otra para compatibilizar con el de AVR y Xmega, es un faenon que me va a tocar hacer.

Tampoco tengo nada para ARM, pero eso lo dejaría para más tarde, y cogería lo que ya estuviese escrito y probado para AVR (y PIC si alguien se apunta).

Así pues, lo primero sería escribir los drivers de SPI, cosa que de todas maneras voy a hacer para mi IMUX. A partir de aquí, intentar portar primero la parte del AT86, y luego la parte de MRF24J40. Luego, la parte de protocolo, quedaría para ver.

Para depurar tengo un ATmega1287 (con USB) con el AT86, y por otro lado el ATXmega128A1 con el MRF24J40.

¿Alguien se apunta al cotarro e intenta hacer su parte para PICs?¿Alguien tiene algo hecho al respecto?

Responder
Compartir: