Entradas

Mostrando las entradas con la etiqueta Cypress Semiconductor

Programación de PSoC con kitprog + OpenOCD

Teniendo la versión más reciente de OpenOCD (más un parche con el que da soporte inicial a kitprog, ver aqui para los pasos de instalación) es posible grabar el PSoC4 de la tarjeta 049-42xx con un kitprog (el presente en el kit 059 por ejemplo) y por supuesto también se pueden grabar PSoC5LP !!!. Para grabar el PSoC4 del kit 049-42xx hacemos las siguientes conexiones: KITPROG               PSoC4   VTARG       <----->    VDD     GND        <----->    GND   SWDIO      <----->   SWDIO   SWDCLK   <----->   SWDCLK RST             <----->     RESET Todo esto lo estoy haciendo en Ubuntu 16.04, debe ser parecido en otras d...

PSoC 4S - CapSense ADC

Imagen
Los PSoC 4S no cuentan con un ADC per se, pero los ingenieros encontrarón una forma de utilizar los componentes que forman el bloque de CapSense como ADC, aunque es un tanto limitado, resolución de 8 o 10 bits, y corre hasta los ~11.6 ksps (kilo samples per second / miles de muestras por segundo) maximo. El primer problema que encontré es que para que funcione el CapSense ADC se tiene que añadir por lo menos un widget de CapSense (boton, slider, etc., acá perdemos un pin). Al principio trataba de usar este periférico sin crear widgets pero el programa se detenía al llamar la función _Start(), y este error se soluciona creando el widget. Otro problema que encontré es que en la versión 3.3 de PSoC Creator no esta incluida la documentación de las funciones del bloque ADC en el Datasheet del CapSense_ADC, hay que bajarlas de este link. Si como yo estas trabajando en PSoC Creator 4 este error ya fue corregido. El proyecto ejemplo será sencillo, el CapSense_ADC y una UART para imp...

Kit CY8CKIT-041-40XX

TODO Proyectos: Proyectos con PSoC 4s y SmartIO  

PSoC 4M DMA Periferico a Periferico Ej. 1

Imagen
Recien me llego una tarjeta de desarrollo de Cypress, la  CY8CKIT-043 que trae un PSoC 4200M. Lo primero que hice fue actualizar la versión de KitProg que trae de fabrica, esto se hace con el PSoC Programmer. Despues cree un proyecto nuevo, elegi el dispositivo que trae la placa, que es el CY8C4247ZI-M485. Este proyecto lee una entrada analogica con el ADC , y manda el resultado al compare value de un bloque PWM , ya lo habia  hecho con un PSoC 5LP, pero el componente DMA es muy diferente entre estas dos familias. Primero implemento el esquematico: Esquematico El ADC esta configurado con resolución de 8bits, sampleo continuo, rango Vss - Vdda (0 - 5V), el sample rate lo deje en 1000 que es lo más bajo que acepta el componente, terminal single y no differential, la configuración completa se puede ver en la siguiente imagen. Configuración 1 del ADC El ADC es de 12bits de resolución, pero se puede cambiar a 8bits o 10bits (indicado en la opción Alternate res...

PSoC y DMA

DMA en PSoC Este es el indice de una serie de posts donde voy a utilizar el DMA en PSoC. Conceptos básicos TODO DMA en PSoC 5 LP TODO DMA en PSoC 4 M/L TODO Transferencia memoria - memoria TODO Transferencia memoria - periferico TODO Transferencia periferico - memoria TODO Transferencia periferico - periferico TODO Métodos de transferencia de datos. TODO Single TD (Un solo TD) Chained TD (TDs en cadena) Indexed TD (TDs indexados) Ping pong DMA  Scatter Gather Nested DMA Ejemplos: PSoC 5LP Periferico a Periferico: ADC - PWM   Limpiar STATUS registers con DMA PSoC 4M   Periferico a Periferico: ADC -> PWM   PSoC 4L  TODO

PSoC 5LP DMA Periferico a Periferico Ej. 1

Imagen
Que tal, en este post vamos a utilizar el DMA que tiene el PSoC 5LP para enviar datos del resultado de la conversión del ADC al PWM, en especifico al valor cmp. Podemos ver el resultado del proyecto en el siguiente video: Podemos ver que sirve perfectamente, excepto cuando llegamos a ambos extremos del potenciometro, la razón la veremos al final del post. Primero creamos un nuevo proyecto en PSoC Creator y le damos el nombre que queramos. Colocamos uno a uno los componentes, los componentes que utilizamos es: ADC Delta - Sigma Clock Pin analogico Pin Digital de salida PWM DMA Los conectamos de la siguiente forma: Esquematico La configuración de cada componente la vemos a continuación: El ADC esta configurado con una resolución de 8bits, de forma continua, con el sample rate mas bajo, aqui no nos interesa la velocidad, el rango de entrada esta entre Vssa y Vdda, en el caso de la tarjeta 059 Vdda esta conectado a 5V. Configuración ADC El PWM esta con...

'Limpiar' registros de STATUS con DMA en PSoC 5LP

Imagen
En ocasiones cuando queremos usar las señales generadas por interrupciones de los bloques digitales de PSoC tenemos que leer los registros de STATUS de dicha interrupción para 'limpiar' ese flag. Esto lo podemos hacer usando interrupciones,  que dentro de su rutina no hagan nada mas que leer el registro STATUS de la interrupcion, sin embargo las interrupciones tienen latencia y usamos el CPU para atenderlas. En la imagen de abajo podemos ver como se implementaria la lectura del registro de STATUS de las interrupciones del Tx de un bloque SPI Master, la interrupción se genera al mandar un byte/word por el pin MOSI. Usamos el componente isr para activar la interrupcion con un flanco ascendente. y dentro de nuestro main: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include <project.h> #include "cyapicallbacks.h" int main () { CyGlobalIntEnable; isr_Tx_Start(); SPI_Start(); CyDelay( 2500...

PSoC Creator Custom Component - Localización en el Catálogo de Componentes

Imagen
Cuando tenemos listo el simbolo de nuestro componente custom podemos definir su locación en el catálogo de componentes de PSoC Creator de manera fácil. Lo primero es tener listo nuestro simbolo, teniendolo listo damos clic derecho sobre cualquier espacio en blanco del simbolo y elegimos la opción Properties . Simbolo del componente custom Clic derecho -> Properties  Nos aparecerá una ventana, en ella podemos ver varias opciones que nos serán útiles en el futuro, por ahora solo no interesa Catalog Placement (Localización en el catalogo) damos clic en los tres puntos para abrir otra ventana. Catalog Placement (Localización en el catalogo) En la ventana que nos aparece definiremos el lugar en el catalogo donde se va a colocar nuestro componente custom. Primero definimos el nombre del tab donde se va a colocar el componente, en este caso le nombre Community, despues colocamos una diagonal / y la palabra que sigue es el nombre de la carpeta donde se va a colocar...