PSoC 6 con toda la potencia del IoT
Aquellos que hayan leído nuestras publicaciones anteriores se habrán dado cuenta de que solo podemos decir cosas buenas de la línea de productos PSoC, ya sea un kit de motores BLDC o por ejemplo un lector de cintas perforadas rediseñado, hemos disfrutado muchísimo con los circuitos integrados de PSoC en el pasado.
Cuando tuvimos la oportunidad de ver el kit PSoC6 CY8CKIT-062-BLE, nos lanzamos de cabeza. Hemos conseguido un programa de acceso anticipado (EAP, por sus siglas en inglés) pero será muy similar al kit estándar que estará disponible en el lapso de unas pocas semanas desde la escritura de esta publicación.
Atención en IoT
Siendo el tema de mayor actualidad, no es de extrañar que la nueva gama de PSoC centre su atención en IoT. No hace falta decir que PSoC6 no debería servir a otras funciones pero hay algunas adaptaciones clave que lo diferenciarán de encarnaciones previas destinadas a aplicaciones de puntos de conexión de IoT. Debido a la flexibilidad de la familia PSoC, es casi seguro que estas especializaciones encontrarán otros usos.
Potencia de IoT
La potencia tiene dos significados para los puntos de conexión de IoT:
- El primero como la potencia en vatios, que tiene efectos significativos en la vida de la batería del producto.
- El segundo es la potencia de la velocidad de la CPU, que tiene un efecto significativo en la experiencia del usuario.
Estas características suelen ser mutuamente exclusivas y normalmente, una mayor velocidad de la CPU se traduce en una mayor potencia de uso, así que suele terminar con un compromiso de velocidad frente a potencia de uso.
Una forma moderna de abordar este tema es añadiendo una CPU menor y aunque esto puede parecer en contra del sentido común, es cada vez más común en muchas áreas del diseño de CPU. Un ejemplo conocido sería el nuevo Samsung Exynos 9 (Galaxy Note 8, etc.), que utiliza una arquitectura ARM big.LITTLE que permite a la CPU cambiar de CPU de potencia alta a baja sobre la marcha, a medida que cambian los requisitos de procesamiento.
La nueva arquitectura PSoC 6 busca ofrecer una tercera opción. PSoC 62 tiene un ARM Cortex M4 con punto flotante y un M0+ de "baja potencia". Debemos tener en cuenta que la baja potencia está entrecomillada por un motivo: el M0+ no es un holgazán; es la CPU de la gama PSoC 4 con capacidad más que suficiente para hacerse cargo de aplicaciones por sí misma. Al contrario que la arquitectura big.LITTLE, ambos núcleos están disponibles en paralelo de manera que puedan compartir carga de trabajo, pero al igual que big.LITTLE, el sistema puede apagar la CPU de alta potencia y ejecutarse en el sistema de menor potencia cuando no se precisen los requisitos de procesamiento. Mediante la implementación de la arquitectura de esta forma, PSoC 6 se convierte en una CPU multinúcleo real, aunque sea asimétrica.
Seguridad para IoT
Habrá quien discuta que la seguridad es una de las zonas más problemáticas de IoT hasta la fecha. Con el robo de datos en aumento y sin que pase un mes sin otra gran firma en las noticias por una brecha, es algo que definitivamente podría mejorarse. La idea de que nuestro cepillo de dientes le cuente al mundo que solo nos cepillamos durante 30 segundos y no un minuto entero puede no ser aterradora pero los dispositivos de IoT no se limitan a los cepillos de dientes. Si tu dispositivo cuenta con un micrófono, las cosas pueden ponerse mucho más feas.
Al haber trabajado en el pasado en el diseño de decodificadores, en el que una gran proporción de los diseños de software y hardware están relacionados con la seguridad y la prevención de ataques de piratería. Las brechas cuestan millones por lo que todo esfuerzo se empleó en garantizar que los problemas fueran mínimos. La defensa principal era cifrarlo todo en Flash y RAM, en ningún punto de un diseño moderno debería haber superficie de datos sin cifrar. Como puedes imaginar, esto personalizó en cierta medida las CPU e hizo que fueran secretas a nivel de NDA.
Volviendo al 2017 y observando la arquitectura de PSoC 6, hay bastantes similitudes con las CPU previas.
La arquitectura de PSoC 61, 62 y 63 incorpora un módulo criptográfico para permitir que el código sea seguro de manera que no pueda leerse (o arrancarse) sin la clave correcta. La CPU tiene fusibles de un uso para que esta función pueda grabarse en el chip, forzando un arranque seguro. Esto evita cualquier ataque de piratería del dispositivo así como la ejecución de código malicioso. El puerto de expansión SPI de cuatro nodos permite la ejecución en su sitio, lo que sin un motor criptográfico de seguridad esquivaría completamente cualquier seguridad integrada. Ya se ha pensado en ello para PSoC 62 y 63, y existen aceleradores criptográficos para asegurar que la ejecución en su sitio no afecte al entorno de confianza ni al rendimiento.
El kit CY8CKIT-062-BLE (-EAP en nuestro caso)
Como con todos los CY8CKIT Cypress, está bien presentado y viene con una caja de almacenamiento cerrada magnéticamente (con nada menos que 4 imanes de neodimio).
Dentro del kit:
- Instrucciones
- Cable USB-A USB-C
- La placa de desarrollo PSoD BLE en sí (alimentada a través del USB-C)
- Pantalla de papel electrónico CY8CKIT-28-EPD de 2,7 pulgadas
- Mochila CY5677 CySmart BLE 4.2
- Cables jumper variados
El kit PSoC BLE cuenta con conexiones PMOD y Arduino Shield para permitir la creación rápida de prototipos y llevar tu proyecto con Arduino al siguiente nivel. Si esto no es suficiente como ocurre con el kit PSoC 4 (CY8CKIT-042-BLE), viene con todo lo necesario para empezar, incluido el equivalente al fregadero de una cocina, una mochila Bluetooth para asegurarte que puedes depurar correctamente tu dispositivo. Tu ordenador portátil puede tener Bluetooth pero es bastante probable que no acepte BLE y por este motivo Cypress proporciona un conocido dispositivo BLE que funciona.
Tenemos que ser sinceros y admitir que nuestro kit PSoC 4 ha tenido menos uso que la mochila CY5677 CySmart BLE proporcionada, ya que se ha demostrado que es muy útil como herramienta de depuración para cualquier dispositivo BLE y no solo los dispositivos Cypress.
BLE
Ya hemos hablado sobre BLE en el artículo Thunderboard. Para aquellos que se perdieran el artículo, BLE resulta fácil y complicado al mismo tiempo. Da vueltas alrededor de perfiles GATT que actúan como bases de datos para saber cómo van a transferirse los datos al y desde el dispositivo. Al pegarse a estos perfiles, la implementación de un simple monitor de frecuencia cardiaca se realiza en pocas horas. Aléjate del límite de un perfil GATT y tardará mucho más tiempo.
Si quieres saber más sobre BLE, el kit PSoC4 viene con unos tutoriales estupendos que seguirán siendo pertinentes para los aspectos de BLE con PSoC6.
Alimentado a través de USB-C
El USB-C puede suponer una preocupación constante cuando se trata de compatibilidad, especialmente en PD (suministro de energía). Sin entrar en muchos detalles, hay muchas configuraciones y regulaciones aplicables al USB-C PD1, PD2 y ahora PD3. Esto antes de llegar a la transferencia de datos y los requisitos para la conmutación de alta velocidad o los modos auxiliares...
Todo esto se reduce a la necesidad de un controlador de PD sólido y el kit Cypress viene con CYPD3126, parte de la familia CCG3 de circuitos integrados de suministro de energía, que están totalmente equipados (PD3 e incluso compatibilidad destacable [modo auxiliar]). Si actúa como el CCG2 solo podemos esperar aspectos positivos.
PSoC es especial
Si ya has leído sobre el BLDC o el artículo reciente de la cinta perforada, sabrás que PSoC no es cualquier micro; es una FPGA/CPLD y un servidor front-end analógico para arrancar. PSoC6 tiene variantes con todas las prestaciones compatibles con PSoC 4 y 5, además de los dispositivos de alto rendimiento, que, como tales, son muy potentes. Para los diseños digitales el UDB (FPGA interna) permite una importante reducción de componentes. Si necesitas otro temporizador o registro de desplazamiento, no hay problema.
El tejido analógico integrado hace lo mismo para el dominio analógico. Es muy posible no tener prácticamente ningún otro hardware para muchos diseños. Esto incluye problemas de controles táctiles u otros de dominio analógico.
Aplicación de potencia
Como se puede ver en el vídeo, el dispositivo viene preprogramado con una de las demostraciones. En ella, tanto la función táctil como la tinta electrónica están activadas y, como en todos los kits Cypress, se proporciona el código fuente.
Instalando los archivos del kit y la versión más reciente de PSoC Creator, podemos abrir las demostraciones y abrirlo para echar un vistazo rápido.
A quienes ya han utilizado anteriormente PSoC Creator debe resultarles familiar abrir la demostración de tinta electrónica, ya que la utilizamos en el ejemplo del kit PSoC BLDC.
Al examinar el código encontramos rápidamente los archivos de código fuente. Hay archivos independientes para todo, lo que facilita en gran medida la reutilización del código.
/* Header file includes */
#include <project.h>
#include "touch.h"
#include "screen.h"
/*******************************************************************************
* Function Name: int main()
********************************************************************************
*
* Summary:
* Main function that continuously reads touch information and updates the screen
* accordingly
*
* Parameters:
* None
*
* Return:
* int
*
* Side Effects:
* None
*
*******************************************************************************/
int main(void)
{
/* Variable used to store the touch information */
touch_data_t touchData;
/* Enable global interrupts */
__enable_irq();
/* Initialize the display, touch detection and low power modules */
InitScreen();
InitTouch();
for (;;)
{
/* Read the touch information from the CapSense buttons and the slider */
touchData = GetTouch();
/* Update the screen according to the touch input */
UpdateScreen(touchData);
}
}
/* [] END OF FILE */
cm0p_code
/* Header file includes*/
#include <project.h>
/*******************************************************************************
* Function Name: int main()
********************************************************************************
*
* Summary:
* Empty function : Code execution will not happen as the Cortex-M4 is not enabled
by the Cortex-M0+ in this project.
*
* Parameters:
* None
*
* Return:
* int
*
* Side Effects:
* None
*
*******************************************************************************/
int main(void)
{
}
/* [] END OF FILE */
cm4_code
A diferencia de los anteriores ejemplos de PSoC, hay dos archivos "principales": main_cm4 y main_cm0p. Estos son los dos núcleos M4 y M0+. Para el ejemplo que hemos abierto, todo el código se ha estado ejecutando en el archivo cm0p, por lo que el M4 ha estado inactivo. Otro ejemplo de la potencia del M0+ está en sí mismo, ya que los productos PSoC6 están destinados a aplicaciones importantes muy exigentes en las que las CPU típicas tendrían problemas.
/* Array that stores the text pages */
char const textPage [TOTAL_TEXT_PAGES][TEXT_PAGE_CHARACTER_SIZE] =
{
/* Pages of "PSoC 6 MCU FEATURES" menu item */
/* Page 1 */
{
"PSoC 6 MCU FEATURES (Page 1 of 8)"
" "
"CPU Subsystem: "
"150-MHz ARM Cortex-M4 CPU with "
"single-cycle multiply (Floating "
"Point and Memory Protection Unit)"
" "
"100-MHz Cortex M0+ CPU "
" "
"Two DMA controllers with sixteen "
"channels each "
" "
},
/* Page 2 */
{
"PSoC 6 MCU FEATURES (Page 2 of 8)"
etc...
Al mirar el archivo screen_contents.c podemos ver los archivos de pantalla de tinta electrónica, incluida la ilustración de Cypress.
Algo interesante que destacar es que con la configuración correcta del compilador el uso de "const" equivaldrá al almacenamiento de estos datos en la memoria flash y no al uso de la RAM estática, algo que es importante cuando solo tienes 512 k de RAM en las unidades más pequeñas.
Para finalizar
Como siempre, los archivos de ejemplo son un buen inicio para cualquier proyecto. Con la arquitectura de doble procesador de PSoC 6, es posiblemente el único chip necesario para una solución de IoT completa: seguridad, BLE, analógico o digital, lo tiene todo. El CY8CKIT-62-BLE es uno de los kits mejor equipados hasta el momento y será muy útil en el futuro.
Artículo escrito por Karl Woodward
Karl es un ingeniero de diseño con más de diez años de experiencia en diseño digital de alta velocidad y liderazgo de proyectos técnicos dentro del sector comercial de la electrónica.