viernes, 2 de septiembre de 2016

Librería RFM69 para micros PSoC 4 y PSoC 5LP.

De entre todas las posibilidades que hay actualmente en el mercado para comunicar dispositivos mediante radiofrecuencia de forma barata y sencilla, los módulos RFM69 de HopeRF son una de ellas. Estos son los módulos que he utilizado en uno de mis últimos proyectos y para los cuales he desarrollado una librería que facilite su uso con los microcontroladores PSoC de Cypress. Ahora que la mayor parte de las funcionalidades que necesitaba ya están implementadas he decidido liberar la librería por si a alguien le puede ser de utilidad. Son varios los tipos de módulos RFM69 disponibles, y la librería puede ser utilizada con todos ellos. Tanto con los módulo normales como con los módulos de alta potencia. En la figura siguiente puedes ver los distintos módulos disponibles hasta este momento y la distribución de sus patillajes.



Compartir:  Facebook Twitter

lunes, 18 de enero de 2016

Port de la librería FatFs para micros PSoC de Cypress.


Esta entrada no es un tutorial sobre cómo utilizar la librería FatFs de ELM-Chan, tan solo voy a dar las indicaciones necesarias para poder utilizar el port que he realizado para los microcontroladores PSoC de Cypress.
Si necesitas saber más sobre la librería o el uso de sus funciones, en internet puedes encontrar abundante información sobre su uso y uno de los mejores sitios es la propia página de la librería: ELM-Chan.

 

Sobre el Port. 

El motivo para realizar el port de la librería fué la necesidad de implementar la grabación de datos en tarjetas SD con un micro de Cypress de la familia PSoC 4, para posteriormente tratar esos datos en un PC de sobremesa.

Partiendo  de la versión R0.11a, que en el momento de escribir esta entrada, es la última versión disponible y la más moderna; los cambios necesarios para hacer funcionar la librería con el micro PSoC 4 fueron mínimos. No fueron necesarios cambios en ninguno de los archivos principales de la librería y se realizaron cambios únicamente en el archivo “sdcard.c” que es el que implementa el acceso a bajo nivel a las tarjetas SD. De hecho, los cambios fueron tan sencillos que al final decidí comprobar que funcionaban también en micros de la familia PSoC 4M e incluso hice un port para los micros de la familia PSoC 5LP.
El port de la librería así como algunas aplicaciones desarrolladas para pruebas puedes descargarlos de Github.

 

Cómo utilizar la librería.

Para utilizar la librería en tu proyecto sigue los pasos que te indico a continuación:
  • Añade un módulo de comunicaciones SPI al esquema de tu proyecto y configúralo como maestro en modo CPHA = 0, CPOL = 0.
  • Añade una salida digital que será utilizada para la señal de selección del bus SPI. Para el buen funcionamiento de la librería, esta señal tendrá que ser controlada por el código de la librería en lugar de dejar al hardware y a la API que lo hagan. En PSoC 4 puedes hacerlo de dos manera distintas: añadir una salida digital, o reutilizar una de las señales SS del propio módulo SPI. Para utilizar esta última manera, habrá que desconectar la señal SS del módulo SPI del HSIOM (High Speed I/O Matrix). Si no sabes a qué me refiero, mira los ejemplos y consulta el manual de referencia de PSoC 4.
  • Añade los archivos que hay dentro de la carpeta PSoC_FatFs_Library del repositorio a tu proyecto.
  • Si vas a configurar la librería con funciones de escritura y quieres que la fecha y hora de los archivos sean los correctos tendrás que implementar por tí mismo un reloj de tiempo real (más información sobre RTC aquí).
  • Añade los “#includes” necesarios en la parte que corresponda de tu código (mira los ejemplos).
  • Retoca los valores de las macros que hay al principio del archivo “sdcard.c”:
    • SPI_NAME. En esta macro, pon el nombre que le hayas dado al módulo SPI en el esquema de tu proyecto. Gracias a esta macro, si decides cambiar el nombre del módulo SPI en el esquema, no tendrás que retocar los nombres de todas las funciones relativas al bus SPI dentro del código de “sdcard.c”, solo tendrás que cambiar el valor asignado a esta macro.
    • mmSPI_SS_Write(value). Función de la API correspondiente a la línea que hayas utilizado para la señal SS del bus SPI. Ejemplo: supón que añades en el esquema una salida digital a la que llamas SS. La api proveerá una función llamada SS_Write(valor) que permitira, desde el firmware fijar el valor lógico de esa salida. Esta es la función que has de asignar a esta macro. El motivo es el mismo que para la macro anterior.
    • CS_DELAY_US. Retardo en microsegundos desde que se activa la señal SS del bus SPI hasta que empieza el envío de datos.
    • M_DELAY_US. Retardo utilizado internamente en “sdcard.c”.
Retardo CS_DELAY_US
Compartir:  Facebook Twitter