Comparaison famille PSoC Feature PSoC 1 PSoC 3 - CY8C38 PSoC 5 CORE 8-bit M8C/ 4 MIPS 8-bit 8051 ARM Cortex-M3 33 MIPS 100 DMIPS FLASH 4 KB 32 KB 16 KB 64 KB 32 KB 256 KB SRAM 256B 2 KB 2 KB 8 KB 16 KB 64 KB EEPROM 512B 2 KB 512B 2 KB POWER Active: 2 ma Active: 1.2 ma Active: 2 ma Sleep: 3 ua Sleep: 1 ua Sleep: 2 ua Hibernate: 200 na Hibernate: 300 na ADC 6- to 14-bit ΔΣ 12- to 20-bit ΔΣ 12- to 20-bit ΔΣ DAC 6- to 8-bit 8- to 12-bit 8- to 12-bit VOLTAGE REF 2x 12-bit SAR (1 Msps) ± 1.53% Vref Accuracy ± 0.1% Vref Accuracy ± 0.1% Vref Accuracy DIGITAL BLOCKS Up to 16 DB Up to 24 UDBs/PLD-based CONNECTIVITY UART, I2C, SPI, USB UART, I2C, SPI, USB, CAN LIN, I2S Up to 24 UDBs/PLDbased UART, I2C, SPI, USB, CAN LIN, I2S I/Os Up to 64 Up to 72 Up to 72
PSoC : Principe Séminaire PSOC 16/12/2011 J.Salon - Laplace 2
Alimentation Séminaire PSOC 16/12/2011 J.Salon - Laplace 3
Schéma de base Séminaire PSOC 16/12/2011 J.Salon - Laplace 4
System Clocks Séminaire PSOC 16/12/2011 J.Salon - Laplace 5
Blocs analogiques Séminaire PSOC 16/12/2011 J.Salon - Laplace 6
Fonctions ADC Convertisseur ADC Delta Sigma 8 à 20 bits De +/- 0.0625V à +/-6.144V Vitesse d échantillonnage 10sps à 384Ksps Convertisseur ADC (PSOC 5) - 8 à12 bits - Gamme moins étendue - Vitesse d échantillonnage 12Msps en 8 bits 1Msps en 12 bits Séminaire PSOC 16/12/2011 J.Salon - Laplace 7
Fonctions DAC Convertisseurs Digital to Analogique en tension (4) 8 bits, 8Msps Gamme 0 à 1.020V et 0 à 4.080V Convertisseurs Digital to Analogique en courant (4) 8 bits, 8Msps Gamme 255µA, 2.040mA, 32.875mA 2 IDAC peuvent être couplé pour faire un 12 bits Séminaire PSOC 16/12/2011 J.Salon - Laplace 8
Ampli Opérationnel Ampli Opérationnels Suiveur ou configuration classique Sortie 25 ma, gamme Vssa à Vdda Bande passante au gain unité >3 MHz Ampli à gain programmable Gain 1, 2, 4, 8, 16, 24, 32, 48, and 50 Produit gain bande passante 8 Mhz http://www.cypress.com/?id=2314 (tension négative) Séminaire PSOC 16/12/2011 J.Salon - Laplace 9
Autres fonctions analogiques Amplificateur Courant tension Tension de sortie Vout = Vref Iin * Rfb avec Rfb et Cfb programmable (fréquence de coupure) Comparateur Sortie routable sur des blocs logiques internes ou des sorties externes Polarité de sortie programmable Séminaire PSOC 16/12/2011 J.Salon - Laplace 10
Fonctions logiques Porte logique And, nand, or, nor, xor, xnor, not, D Flip Flop, Bufoe, De-Multiplexer, Multiplexer, Lookup Table Fonctions Timer et counter (8,16, 24 ou 32 bits), PWM, Registre à décalage, Calcul CRC, décodeur en quadrature Séminaire PSOC 16/12/2011 J.Salon - Laplace 11
Communications CAN (jusqu à 1Mhz) I2C esclave et maître (100, 400, 1000Khz) I2S communication série pour le son SPI esclave et maître (3 à 16 bits) jusqu à 9Mhz UART jusqu à 3Mhz USB Full Speed (12Mhz) Séminaire PSOC 16/12/2011 J.Salon - Laplace 12
Clavier et affichage Clavier : Gestion complète de clavier capacitif (Cap Sense) Afficheur LCD : LCD en mode caractère En mode graphique En mode segment Séminaire PSOC 16/12/2011 J.Salon - Laplace 13
Outils logiciels pour PSoC Téléchargement sur le site Cypress : http://www.cypress.com/?rid=39551 - PSoC Programmer pour sonde JTAG - PSoC Creator avec les outils Keil pour la famille 8051 et un compilateur GCC pour ARM 32. C est un environnement complet pour placer les composants, éditer le code, programmer la mémoire Flash et débugger. Séminaire PSOC 16/12/2011 J.Salon - Laplace 14
Clignotement de diode (hard) void init() { Clock_100hz_Start(); PWM_Led_Start(); } Séminaire PSOC 16/12/2011 J.Salon - Laplace 15
Clignotement de diode (soft) void init() { Clock_100hz_Start(); PWM_Led_Start(); PWM_Led_WritePeriod(199); // à mettre après start } void gere_clock() { Control_Clock_Write(Sw1_Read()); } Séminaire PSOC 16/12/2011 J.Salon - Laplace 16
Conversion ADC et LCD ADC_Start(); LCD_Start(); LCD_Position(0,0); LCD_PrintString(" "); LCD_Position(1,0); LCD_PrintString(" "); ADC_StartConvert(); do {} while (ADC_IsEndConversion( ADC_RETURN_STATUS)==0); // attends <>0 adccounts=adc_getresult32(); tension=adc_countsto_volts(adccounts); sprintf(strval,"%+8.3f",tension); LCD_Position(0,0); LCD_PrintString(strVal); Séminaire PSOC 16/12/2011 J.Salon - Laplace 17
ADC, DAC, Ampli-op & Mux Séminaire PSOC 16/12/2011 J.Salon - Laplace 18
ADC Mux : Soft 2 float lastdac=0.0 ; uint8 intsw=0; void VDAC_SetVolt( float Tension) { uint8 daccounts; Tension =( (Tension>1.024)? 0.0 : Tension); daccounts=255*tension/1.024 ; VDAC_SetValue(dacCounts); lastdac=tension; } void main() { char strval[17]; uint32 adccounts; uint8 i=0; float tension; init(); for(;;) { AMux_Select(i); ADC_StartConvert(); Do {} while (ADC_IsEndConversion( ADC_RETURN_STATUS)==0); adccounts=adc_getresult32(); tension=adc_countsto_volts(adccounts); sprintf(strval,"%+8.3f",tension); LCD_Position(i,0); LCD_PrintString(strVal); i=(i+1) & 1; if ( intsw ) { lastdac=lastdac+0.1; VDAC_SetVolt(lastDac); intsw=0;} } Séminaire PSOC 16/12/2011 J.Salon - Laplace 19
ADC Mux : Soft (1) void init () { Opamp_Start(); VDAC_Start(); VDAC_SetRange(VDAC_RANGE_1V); VDAC_SetVolt(0.5); AMux_Start(); ADC_Start(); LCD_Start(); LCD_Position(0,0); LCD_PrintString(" "); LCD_Position(1,0); LCD_PrintString(" "); isr_sw_start(); CYGlobalIntEnable; } Séminaire PSOC 16/12/2011 J.Salon - Laplace 20