Bei PSoC (Programmable System on Chip) handelt es sich um drei Mikrocontrollerfamilien, die von der Firma Cypress hergestellt werden. Seit 2001 sind die ersten Produkte auf dem Markt erhältlich. Inzwischen sind die PSoC (jetzt PSoC1 zur Unterscheidung zu den beiden neuen Familien) zu einer breiten Familie ausgebaut worden. Als Controllercore kommt bei den PSoC1 ein, von Cypress selbst entwickelter, „M8C“-Prozessorkern zum Einsatz, dessen Vorgänger der „M8“ bereits in vielen OTP Varianten bei den USB-Controllern von Cypress zum Einsatz kam und immer noch geliefert wird. Die neuen Familien sind die PSoC3 mit einem 80C51 und PSoC5 mit einem Arm-Cortex-M3 Microcontrollerkern.
Die Stärke der PSoC1 gegenüber anderen Mikrocontrollern liegt darin, dass die individuell benötigten Ressourcen in der Peripherie dynamisch angepasst werden können. So kann während der Laufzeit eines Programmes die Hardware des Controllers z. B. einfach von einer UART auf PWM, oder umgekehrt, umkonfiguriert werden. Dies gilt für digitale, wie analoge Funktionen. Dies gilt jedoch nur für die PSoC1.
PSoC1
BearbeitenDie Hauptbestandteile eines PSoC bestehen zunächst aus einem Standard Mikrocontroller mit dem Rechenwerk, Flash, RAM, 32 kHz onChip-RC-Oszillator mit PLL, Watchdog, Spannungsreferenz, I/O-Ports und einiges mehr, sowie bei einigen Modellen auch mit integrierten Peripherien wie I²C, USB oder CAN (CAN nicht bei PSoC1). Des Weiteren befinden sich auf den PSoC sogenannte digitale und analoge ‚Blöcke‘, welche individuell vom Entwickler mit Peripheriefunktionen belegt werden können. Die PSoC1 werden mit Flash Speicher von 2 bis 32 KByte, RAM Speicher von 128 Byte bis 2 KByte, sowie in Gehäusen von 8 Pin bis 100 Pin angeboten. Die Bezeichnung für die PSoC1 von Cypress lauten CY8C2xxxx. PSoC3 haben einen Speicher von 16 bis 64 KByte, RAM Speicher von 2 bis 8 KByte und EEPROM Speicher von 0,5 bis 2 KByte. Gehäuse von 48 Pin bis 100 Pin. Die Bezeichnung für die PSoC3 lauten CY8C3xxxx. PSoC5 haben einen Speicher von 128 bis 256 KByte, RAM Speicher von 32 bis 64 KByte und EEPROM Speicher 2 KByte. Gehäuse von 48 Pin bis 100 Pin. Die Bezeichnung für die PSoC5 lauten CY8C5xxxx.
Die verschiedenen Familien der PSoC1 sind
- CY8C25xxx, CY8C26xxx: die erste Generation der PSoC, mit 4 bis 16 KByte Flash, 256 Byte RAM, 8 digitale und 12 analoge Blöcke, Gehäusegrößen von 8 bis 44 Pin. Diese Familie sollte für neue Entwicklungen nicht mehr verwendet werden, Nachfolger sind die Produkte der Familie CY8C27x43.
- CY8C27x43: die zweite Generation der PSoC, mit 16 KByte Flash, 256 Byte RAM, 8 digitale und 12 analoge Blöcke, Gehäusegrößen von 8 bis 44 Pin.
- CY8C29x43: mit 32 KByte Flash, 2 KByte RAM, 16 digitale und 12 analoge Blöcke, Gehäusegrößen von 28 bis 100 Pin.
- CY8C28xxx: mit 16 KByte Flash, 1 KByte RAM, sehr unterschiedlich in der Peripherieausgestaltung bis max 12 digitale und 12 analoge Blöcke, teilweise mit 10 Bit ADC, CapSense (siehe nachstehend), Gehäusegrößen von 28 bis 48 Pin.
- CY8C24x23: mit 4 KByte Flash, 256 Byte RAM, 4 digitale und 6 analoge Blöcke, Gehäusegrößen von 8 bis 28 Pin.
- CY8C22x13: mit 2 KByte Flash, 256 Byte RAM, 4 digitale und 3 analoge Blöcke, Gehäusegrößen von 8 bis 20 Pin. Diese Familie sollte für neue Entwicklungen nicht mehr verwendet werden, Alternativen sind die Produkte der Familie CY8C24x23.
- CY8C21x34: mit 8 KByte Flash, 512 Byte RAM, 4 digitale und 4 modifizierte analoge Blöcke, mit diesen Controllern ist CapSense möglich (s.u.), Gehäusegrößen von 20 bis 32 Pin.
- CY8C21x23: mit 4 KByte Flash, 256 Byte RAM, 4 digitale und 4 modifizierte analoge Blöcke, Gehäusegrößen von 8 bis 24 Pin.
- CY8C20x34: mit 8 KByte Flash, 512 Byte RAM, I²C/SPI aber keine Blöcke, mit diesen Controllern ist CapSense möglich (s.u.), Gehäusegrößen von 16 bis 32 Pin.
- CY8C20xx6: auch CapSense-Express, mit vorinstallierter CapSense und Kommunikations Firmware, 2 KByte RAM, I²C/SPI aber keine Blöcke, mit diesen Controllern ist CapSense möglich (s.u.), Gehäusegrößen von 16 bis 48 Pin.
- CY8C24x94: mit 16 KByte Flash, 1 KByte RAM, USB, 4 digitale und 6 analoge Blöcke, mit diesen Controllern ist CapSense möglich (s.u.), Gehäusegrößen von 56 bis 100 Pin.
- CY8CTMA1xx, CY8CTMG1xx, CY8CTST1xx: auch PSoC TrueTouch, mit besonderen Funktionen wie 2-Punkt-Gesten-Erkennung oder Multi-Touch-All-Point bis zu 10 Fingern, mit 8 bis 16 KByte Flash, 512c bis 1024 Byte RAM, Gehäusegrößen von 32 bis 100 Pin.
- CY8CLED0xx0x: auch PowerPSoC, mit besonderen Power Funktionen: bis maximal 4 mal 0,5 oder 1 Ampere MOSFET oder nur mit externen Gate-Treibern, mit 16 KByte Flash, 1 KByte RAM, Gehäusegröße 56 Pin.
- CY8CNP1xxB auch PSoCnv: ist ein CY8C29xxx in 100pin, jedoch ist zusätzlich ein nichtflüchtiger Speicher von 64 bis 256 KByte enthalten (eine Kombination aus RAM mit Schatten-EEPROM).
- CYWUSB6953: ist ein CY8C27643 in 48pin, jedoch ist zusätzlich ein, auch von Cypress diskret lieferbarer, wirelessUSB Chip mit im Gehäuse integriert.
PSoC3
Bearbeiten- CY8C3xxxx: 16, 32 oder 64 KByte Flash, 2, 4 oder 8 KByte RAM, 0,5, 1 oder 2 KByte EEPROM, 1 20 Bit SigmaDelta ADC, DACs, Komparatoren und Operationsverstärker, Timer Module und 16, 20 oder 24 digitale UDB (kleine digitale Blöcke ) und 2 bis 4 analoge Blöcke. Optional mit CAN 2.0B und / oder USB 2.0. Die maximale Geschwindigkeit von 48 oder 67 MHz ergeben eine Rechenleistung von ca. 33 Mips. Debugging und Boundary Scan mittels JTAG. Gehäusegrößen 48 pin SSOP, 64 pin QFN oder 100 pin TQFP.
PSoC5
Bearbeiten- CY8C5xxxx: 128 oder 256 KByte Flash, 32 oder 64 KByte RAM, 2 KByte EEPROM, 1 oder 2 12 SAR-ADC, optional 1 20 Bit SigmaDelta, DACs, Komparatoren und Operationsverstärker, Timer Module und 20 oder 24 digitale UDB (kleine digitale Blöcke ) und 2 oder 4 analoge Blöcke. Optional mit CAN 2.0B und / oder USB 2.0. Die maximale Geschwindigkeit von 40 oder 80 MHz ergeben eine Rechenleistung von bis zu ca. 100 Dhrystone Mips. Debugging und Boundary Scan mittels JTAG. Gehäusegrößen 48 pin SSOP, 64 pin QFN oder 100 pin TQFP.
Speicheraufteilung
BearbeitenDie Speicheraufteilung ist nach der Harvard-Architektur ausgeführt, d. h. Programm- und Datenspeicher werden über getrennte Busse angesprochen.
Der Zugriff auf den Datenspeicher, das RAM, ist bei den PSoC nur bis 256 Byte RAM direkt möglich, Zugriffe auf höhere Speicheradressen müssen über Banking erfolgen.
Peripherie in den Blöcken
BearbeitenDie ‚Blöcke‘ in den PSoC sind kleine, in sich getrennte, Arrays. Diese Arrays werden bei der Programmentwicklung vorkonfiguriert, können aber auch zur Laufzeit dann ganz andere Funktionen bekommen, dies ist leicht durch ändern einiger Register vom Programm zu erledigen. Neben der Hauptunterscheidung Analog und Digital, gibt es weitere kleine Unterscheidungsmerkmale.
- Digitale Blöcke, diese sind als 8 Bit Funktionseinheit mit Register konzipiert, so kann ein solcher Block einen Timer oder Counter von 8 Bit aufnehmen. Benötigt man einen 16 oder 32 Bit Timer muss man mehrere Blöcke zusammenschalten. Weitere Funktionen, die man in die digitalen Blöcke einfügen kann sind UART, SPI, PWM mit oder ohne Totzeit, CRC-Generator, Zufallszahlengenerator und viele mehr. Zu beachten ist dabei, dass die Kommunikationsfunktionen (UART, SPI) nur in der Hälfte der zur Verfügung stehenden Blöcke abgelegt werden kann, da der anderen Hälfte eine Kommunikationsleitung fehlt.
- Analoge Blöcke, hier wird zwischen sogenannten ‚Switch Capacitor‘ und ‚Continuous Time‘ unterschieden, um unterschiedliche analoge Funktionen in ihnen abbilden zu können. Bei den CY8C21xxx Familien gibt es jedoch nur eine reduzierte Funktionalität. In den analogen Blöcken lassen sich z. B. AD-Wandler (nach SAR, inkremental oder Delta-Sigma Verfahren), DA-Wandler, Operationsverstärker, Komparator, Filterfunktionen und einiges mehr abbilden.
- Bei den CY8C20x34 hat man auf die Blöcke ganz verzichtet, hier ist nur noch die Möglichkeit der seriellen Kommunikation mittels I²C oder SPI in Hardware und die Anbindung von CapSense möglich.
CapSense
BearbeitenDies ist eine spezielle, neue Funktion bei mehreren Familien der PSoC. Unterstützt wird CapSense bei den Standard Micros CY8C21x34, den speziell dafür ausgelegten CY8C20x34 und bei den Micros mit USB, den CY8C24x94. Mit CapSense kann man auf einfache Weise Tasten, eindimensionale Schieberegler (Slider) oder zweidimensionale Eingabefelder (Touchpad) realisieren, dabei bestehen die Eingabeelemente aus reinen Leiterbahnflächen auf einer Platine, wobei keine weiteren Hardwareelemente, wie Kondensatoren oder ähnliches, benötigt werden. Der Entwickler wird hierbei durch einen ‚Wizard‘ im PSoC-Designer unterstützt. Auf der Platine kann dann, je nach Ausführung, auch noch eine Folie oder Glas angebracht werden, um den Anwender der Schaltung bzw. des Gerätes nicht mit der Platine direkt in Berührung zu bringen.
Programmentwicklung
BearbeitenUm den Mikrocontroller in einer Anwendung einsetzen zu können, muss zuerst vom Entwickler ein Programm entwickelt werden. Die Programmentwicklung kann mittels Assembler oder einer Hochsprache, z. B. C geschehen. Bei den PSoC kommt in der Industrie heute zumeist C zum Einsatz, da der Programmcode später damit besser zu pflegen ist. Cypress stellt für die Entwicklung die kostenlose Software ‚PSoC-Designer‘ auf ihrer Homepage zur Verfügung, der Designer beinhaltet eine grafische Oberfläche zum Einbinden und Konfigurieren von den gewünschten Peripherie Modulen, den Assembler und (nach Freischaltung) einen C-Compiler. Mit dem ebenfalls von Cypress kostenlos erhältlichen PSoC-Express ist die Programmentwicklung auch komplett auf grafischer Ebene möglich, dies eigenet sich besonders für die Abschätzung auf Machbarkeit, sogenannte Machbarkeitsstudien, oder auch für Neueinsteiger in der Elektronikentwicklung, die keine oder nur wenig Erfahrung mit Programmiersprachen haben.
- Programmierung in C
- Von Cypress ist ein kostenloser C-Compiler erhältlich, welcher von Image-Craft lizenziert wurde.
- Fehlersuche - Emulator
- Zum Debuggen kann man auf den Emulator von Cypress, den ICE-Cube, zurückgreifen. Mit dem ICE-Cube kann man auch die Chips programmieren.
- Programmierung
- Dieser Vorgang wird auch als Brennen bezeichnet. Dies bedeutet, dass Informationen (z. B. ein compiliertes Programm, auch Firmware genannt) auf dem internen Flash-Speicher des Bausteins gespeichert werden. Hierzu bieten die PSoC-Microcontroller eine serielle Programmier-Schnittstelle, die auch noch zur Übertragung des Maschinencode benutzt werden kann, wenn der Chip bereits in die Schaltung eingebaut wurde. Dieser Vorgang kann dann mit einem Programmiergerät, durchgeführt werden. Besonders günstige Programmiertools gibt es von Cypress unter der Bezeichnung ‚CY3210-MiniEval1‘ oder ‚CY3210-PSoCEval1‘.
Literatur
Bearbeiten- Fredi Krüger, PSoC Mikrocontroller, Franzis Verlag, ISBN 978-3-7723-5399-4
- Fredi Krüger, Messen, Steuern und Regeln mit PSoC Mikrocontroller, Franzis Verlag, ISBN 978-3-7723-5437-3
Weblinks
Bearbeiten- Wikibooks PSoC Projekt (englisch)
- Cypress Homepage
- www.psocdeveloper.com Forum, sowie Neuigkeiten, FAQ, Software und anderes rund um PSoC (englisch)