Cypress PSoC 5LP: Ein (besserer) Ersatz für die 5V AVR im Retro Bereich?

  • Mit dem CY8CKIT-059 habe ich (hoffentlich) eine leistungsfähige Lösung gefunden um mit dem Apple II (Bus) in Verbindung zu treten.
    Was mich an dem PSoC 5LP begeistert:
    - voll 5V TTL kompatibel (max. 4,2V Ausgangsspannung bei 4mA Last ... besser als die üblichen 74LSXX)
    - bis zu 24 Universal Digital Blocks (UDB), die unabhängig von der CPU in den Ram, andere UDB oder Ausgänge schreiben können...
    - integrierte analoge Filter
    - integrierte Operationsverstärker
    - bis zu 110 mips @80mhz (Cortex M4 32bit Kern)
    - bis zu 62 GPIO
    - 64K SRAM
    - 256K Flash
    - 2K EEPROM
    - im TQFP100 verfügbar und somit einfach zu löten.


    Ich habe mir zunächst 10 Stück CY8CKIT-059 bestellt (ca. 12€ pro Stück).


    Hat jemand schon Erfahrungen mit dem CY8CKIT-059 bzw. PSoC 5LP?


    -Jonas

  • Hier sind ein paar weitere Informationen zu dem CY8CKIT-059


    Features
    Operating characteristics
     Voltage range: 1.71 to 5.5 V, up to 6 power domains
     Temperature range (ambient): –40 to 85 °C [1] Extended temperature parts: –40 to 105 °C
     DC to 80-MHz operation


    Power modes
    • Active mode 3.1 mA at 6 MHz, and 15.4 mA at 48 MHz
    • 2-μA sleep mode
    • 300-nA hibernate mode with RAM retention
     Boost regulator from 0.5-V input up to 5-V output


    Performance
     32-bit ARM Cortex-M3 CPU, 32 interrupt inputs
     24-channel direct memory access (DMA) controller
     24-bit 64-tap fixed-point digital filter processor (DFB)


    Memories
     Up to 256 KB program flash, with cache and security features
     Up to 32 KB additional flash for error correcting code (ECC)
     Up to 64 KB RAM
     2 KB EEPROM


    Digital peripherals
     Four 16-bit timer, counter, and PWM (TCPWM) blocks
     I2C, 1 Mbps bus speed
     USB 2.0 certified Full-Speed (FS) 12 Mbps peripheral interface (TID#10840032) using internal oscillator[2]
     Full CAN 2.0b, 16 Rx, 8 Tx buffers
     20 to 24 universal digital blocks (UDB), programmable to create any number of functions:
    • 8-, 16-, 24-, and 32-bit timers, counters, and PWMs
    • I2C, UART, SPI, I2S, LIN 2.0 interfaces
    • Cyclic redundancy check (CRC)
    • Pseudo random sequence (PRS) generators
    • Quadrature decoders
    • Gate-level logic functions


    Analog peripherals
     Configurable 8- to 20-bit delta-sigma ADC  Up to two 12-bit SAR ADCs
     Four 8-bit DACs
     Four comparators
     Four opamps
     Four programmable analog blocks, to create:
    • Programmable gain amplifier (PGA)
    • Transimpedance amplifier (TIA)
    • Mixer
    • Sample and hold circuit
     CapSense® support, up to 62 sensors
     1.024 V ±0.1% internal voltage reference


    Versatile I/O system
     46 to 72 I/O pins – up to 62 general-purpose I/Os (GPIOs)
     Up to eight performance I/O (SIO) pins
    • 25 mA current sink
    • Programmable input threshold and output high voltages
    • Can act as a general-purpose comparator
    • Hot swap capability and overvoltage tolerance
     Two USBIO pins that can be used as GPIOs
     Route any digital or analog peripheral to any GPIO
     LCD direct drive from any GPIO, up to 46 × 16 segments
     CapSense support from any GPIO
     1.2-V to 5.5-V interface voltages, up to four power domains


    Programmable clocking
     3- to 74-MHz internal oscillator, 1% accuracy at 3 MHz
     4- to 25-MHz external crystal oscillator
     Internal PLL clock generation up to 80 MHz
     Low-power internal oscillator at 1, 33, and 100 kHz
     32.768-kHz external watch crystal oscillator
     12 clock dividers routable to any peripheral or I/O


    Programming, debug, and trace
     JTAG (4-wire), serial wire debug (SWD) (2-wire), single wire viewer (SWV), and Traceport (5-wire) interfaces
     ARM debug and trace modules embedded in the CPU core
     Bootloader programming through I2C, SPI, UART, USB, and

    • Offizieller Beitrag

    Ich hab mal ein paar Versuche mit dem PSoC® 4200 Protoyping Kit (CY8CKIT-049-42xx) gemacht.
    Kosten 4 US$ bei Cypress.


    Vielleicht hilft euch das.

  • Da es hier ganz offenbar auch für derartiges Interessenten gibt, möchte ich auch auf das NUCLEO-F091RC Board (bei Farnell, bei Mouser, Info Nucleo-Boards mit dem STM32F091RCT6 ARM Cortex-M0 Prozessor (48MHz, 32kB SRAM, 256kB Flash, CAN, ...) und den vollwertigen Keil Compiler dafür aufmerksam machen.


    Leider hat der STM nur 5V Tolerante I/O und das high Niveau der GPIO liegt weit unter 3V (ca. 2,4-2,8V). Das ist für viele alte Computer schon zu wenig.


    Beim PSoC® 4200 Protoyping Kit (CY8CKIT-049-42xx) ist mir einfach nicht genug Leitungen/Leistung ;) ... aber $4 ist schon cool.
    Leider konnte ich keine klaren Infos zu der Ausgangsspannung der GPIO unter Last mit 5V Versorgungsspannung finden.
    Beim PSoC 5LP ist das 4,2V@4mA .. zum Vergleich hat ein 74LS00 bei 4mA Last zwischen 3,2V-3,5V Ausgangsspannung.


    -Jonas

  • Leider hat der STM nur 5V Tolerante I/O und das high Niveau der GPIO liegt weit unter 3V (ca. 2,4-2,8V).


    War jetzt nicht als Alternativvorschlag für Deine Applikation gedacht, sondern nur ein allgemeiner Hinweis, dass hier ein billiges (10EUR) Evaluationboard mit einem ARM-Cortes-M0 Prozessor (32bit, 48MHz, 32kSRAM, 256kFlash, CAN, ... also 'ne Klasse höher als AVR/PIC) zusammen mit einem eigentlich recht teueren Compiler
    zu bekommen ist. Der Compiler funktioniert übrigens mit allen ST-ARM-Prozessoren, die auf dem Cortex-M0 basieren, so dass er mit aktuell vier weiteren NUCLEO-Boards genutzt werden kann (das NUCLEO-F091RC ist nur das mit dem größten Speicher). Besonders gefällt mir an den NUCLEO-Boards, dass sie über ein USB-Kabel sowohl die Debug-Schnittstelle wie auch einen zusätzlichen Virtuellen ComPort zur Verfügung stellen, so dass eine Schnittstelle zum PC schon vorhanden ist.


  • Die paar Euro rechnen sich meist recht schnell, wenn man beim Design und bei der Inbetriebnahmen nicht mit den Resourcen knausern muss.


    Tatsächlich hatte ich schon ARM M0 MCUs für ca 0,25€ gesehen. Wenn man nun noch ein paar wenige Euro für das PCB und die Komponenten dazu rechnet, kann man ein ausgereiftes Produkt schon für unter 5€ produzieren. Letztlich kann man dann die Marge sehr dynamisch an den Markt anpassen. $4 für ein Protoboard ist da eher ein Hinweis auf die günstige MCU.
    Letztlich möchte ich eine MCU mit voller 5V Kompatibilität haben, da sich ein Großteil meiner Projekte an 5V TTL Geräten abspielen.


    Es ist jedenfalls schon mal interessant zu sehen, dass ich nicht der Einzige bin, der von AVR auf ARM umsteigen will ;)


    -Jonas

    • Offizieller Beitrag

    der GPIO liegt weit unter 3V (ca. 2,4-2,8V). Das ist für viele alte Computer schon zu wenig.


    2,4V reicht fuer TTL aber vollkommen aus.
    Oder haben deine Computer schon CMOS?


    Eventuell, was waren das für Versuche?


    Mit dem Component Catalog hab ich mal ein bischen experimentiert.
    Ich hab mir die DieTemp auf einen Ausgangspin gelegt und ueber die V24 ausgeben lassen.


    Zum probieren mit dem UDB hab ich gerade mal 'ne kleine Schaltung mit 'nem FF gebaut. Hab's aber nicht weiter kontroliert.


    Tiefgruendig hab ich aber nichts gemacht.


  • 2,4V reicht fuer TTL aber vollkommen aus.
    Oder haben deine Computer schon CMOS?


    Man liegt da schon knapp an der Grenze, da 2V ist das absolute Minimum ist, welches noch als High erkannt wird. Wenn du jetzt noch eine Diode dazwischen hast, dann ist Feierabend. Du weisst offensichtlich auch nicht, dass ein 30 Jahre alter Computer heute nicht unbedingt wie 1985 reagiert. Wenn im Datenblatt von 1985 steht, dass 2V noch als High erkannt wird, bedeutet das nicht, das die ICs auch heute noch so funktionieren. Besonders ist dies der Fall wenn bereits interne Schäden (zB. durch elektrostatische Entladungen) an den Chips vorhanden sind, die im normalen Betrieb keine Probleme darstellen. Wenn nun an einer Leitung zusätzlich ein paar mehr mA abgegriffen werden, dann kann die Spannung am Ausgang der LVTTL Schaltung zusätzlich auch mal um ein paar zehntel Volt nachgeben und plötzlich hast du einen undefinierten Zustand. Da wird dann ein TTL IC plötzlich zum Rauschgenerator ;)


    Ich will meine Fehler nicht an solchen Stellen suchen müssen.


    -Jonas

    • Offizieller Beitrag

    Im Datenblatt eines LS244 ist die minimale High Output Spannung mit 2,4 V angegeben. Da ist der STM also nicht schlechter.


    Alterung? Ist evtl. ein Thema, habe ich aber bisher keine schlechten Erfahrungen gemacht.


    Schaeden durch elektrostatische Entladungen: Dann weisst du sowieso nicht wie und ob der Eingang reagiert.

  • Im Datenblatt eines LS244 ist die minimale High Output Spannung mit 2,4 V angegeben. Da ist der STM also nicht schlechter.


    Bei VCC=MIN (4,5V) kann die Ausgangsspannung bei einer Last von 3mA auf 2,4V einbrechen ist aber TYPISCHERWEISE bei 3,2V. Der Richtwert is also 3,2V und nicht 2,4V.
    Wenn ein TTL IC nur 2,4V High Pegel hätte, dann könntest du nicht einmal eine Diode an einen Ausgang packen ohne dass du Probleme bekommst.


    In der Realität (VCC=5,0-5,2V) wirst du eher 3,5-4V Ausgangsspannung an einem TTL IC messen können.


    -Jonas

    • Offizieller Beitrag

    Wer Dioden in TTL-Schaltungen einsetzt, hat es sowieso verdient, wenn ihm die Schaltung um die Ohren fliegt.


    Wie setzt du Uberhaupt eine Diode ein, wenn es um High-Pegel geht?


    Das Wired-AND kennt man ja, aber die sind auch Murks.

  • Wer Dioden in TTL-Schaltungen einsetzt, hat es sowieso verdient, wenn ihm die Schaltung um die Ohren fliegt.


    Wie setzt du Uberhaupt eine Diode ein, wenn es um High-Pegel geht?


    Das Wired-AND kennt man ja, aber die sind auch Murks.


    Es geht hier um den alten Computer und nicht um eine Schaltung, die ich basteln will. Ich kenne nicht unbedingt alle Schaltungsvarianten von allen Computern, die mit dem Bus kompatibel sind. Ich muss eine Sicherheitsmarge haben und 0,4V (im besten Fall) sind nicht gerade viel.


    Eine Leitung kann zu dünn und/oder zu lang sein, Pins haben eventuell nicht 100% perfekten Kontakt (Korrosion), ICs sind nicht so wie sie mal waren usw....


    Ich kann mich bei einem kommerziellen Produkt nicht herausreden und sagen: "also bei mir läuft es..."


    Nja, wie dem auch sei: wir sind unterschiedlicher Meinung ;)


    -Jonas

    • Offizieller Beitrag

    Nja, wie dem auch sei: wir sind unterschiedlicher Meinung ;)


    Das mag ja sein. Und ist m.E. nichts schlimmes.
    Das hindert mich aber nicht, noch etwas zu lernen. Was willst du mit der Diode verschalten?


  • Das mag ja sein. Und ist m.E. nichts schlimmes.
    Das hindert mich aber nicht, noch etwas zu lernen. Was willst du mit der Diode verschalten?


    Nichts.. das war nur ein Beispiel. Auf einer Schaltung von einer Apple II-Karte wurde die Interrupt Leitung entsprechend beschaltet um den Abfluss der 5V (pullup) auf der Leitung zu unterbinden und nur Low bzw. Hochohmig zuzulassen. Es gibt eine ganze Menge Tricks und Kniffe bei alten Computern (um ICs zu sparen), die man heute eventuell nicht direkt nachvollziehen kann oder nicht mehr so machen würde. Wenn mit Pull-Up/Pull-Down in Kombination mit Hochohmig gearbeitet wird, kann man schon hin und wieder auf Dioden treffen ;) Die Diode kann hier auch als Platzhalter für einen "Verbraucher" zu sehen, der den Pegel des Signals reduziert. Das kann auch Schmutz auf der Platine, eine schlechte Lötstelle, Korrosion, Spannungsschwankungen vom Netzteil oÄ. sein. In alten Computern kann eine Menge passieren was die normale Funktion nicht direkt beeinflusst aber unter Last oder in Grenzfällen zu Problemen führt.


    -Jonas

  • das high Niveau der GPIO liegt weit unter 3V (ca. 2,4-2,8V)


    Wenn ich das Datenblatt korrekt interpretiere, liegt Voh mit Ioh == 8mA (also doppeltem TTL-Ioh) bei Vdd-0.4V. Bei Vdd == 3.3V also bei 2.9V, bei Vdd == 3.6V bei 3.2V.
    Sehe deshalb keine Probleme, die ST-Teile in einer TTL-Umgebung einzusetzen - als unschön betrachte ich lediglich, die Notwendigkeit (wenn ich da das Datenblatt richtig lese), dass die internen Pull-UPs abgeschaltet werden müssen, wenn man an den IOs mehr als 4V anliefert!


    Das Interessante an den Cypress-Teilen sehe ich eigentlich in der Kombination programmierbare Logik + programmierbare Analogfunktionen + ARM.

    Einmal editiert, zuletzt von dlchnr ()

  • ich hab' den AVR oft und gerne eingesetzt - wer aber heute noch daran kleben bleibt, die Vorteile der ARMs (Cotex-Mx) nicht sieht, hat in meinen Augen 'ne Knick in der Optik


    Ich denke, dass auch heute noch beide ihre Berechtigung haben. Die AVRs sind eben recht einfach aufgebaut und es gibt Code-Beispiele en masse, da kommt man als Anfänger wahrscheinlich eher mit klar, als mit ARMs. Viele Möglichkeiten bieten eben auch viele Konfigurationsoptionen, mehr Komplexität und mehr Möglichkeiten, etwas falsch zu machen. Das selbst-stricken von Linker-Files scheint auch nicht jedermanns Sache zu sein. Und dann kamen mir noch diverse Code-Beispiele unter, die ich nicht hätte verwenden können, weil ich mir den zugehörigen Keil-Compiler nicht hätte leisten wollen.


    Versteht mich nicht falsch: ich verfolge das hier sehr interessiert, aber ich habe da auch große Zweifel. Es ist ja nicht getan damit, die Prototypenhardware möglichst billig einzukaufen und tolle Specs im Datenblatt stehen zu haben, am Ende muss das Ding auch beherrscht und programmiert werden können. Wenn da jemand Links zu weiterer Info, Code-Snippets oder dem Einrichten der Entwicklungsumgebung hätte, wäre ich neugierig.

  • Versteht mich nicht falsch: ich verfolge das hier sehr interessiert, aber ich habe da auch große Zweifel. Es ist ja nicht getan damit, die Prototypenhardware möglichst billig einzukaufen und tolle Specs im Datenblatt stehen zu haben, am Ende muss das Ding auch beherrscht und programmiert werden können. Wenn da jemand Links zu weiterer Info, Code-Snippets oder dem Einrichten der Entwicklungsumgebung hätte, wäre ich neugierig.


    Mir geht es vor allem darum hier ein wenig 'Werbung' für die Plattform zu machen, damit ich mit meinen Problemen in Zukunft nicht alleine da stehe. Grundsätzlich ist es natürlich richtig die Hardware an die Anforderungen anzupassen. Auch ist es wichtig dass eine Community vorhanden ist, die unterstützend helfen kann. Da sind die AVR und PIC Controller sicherlich massiv im Vorteil. Die Hardware macht tatsächlich meist weniger als 30% an einem Projekt aus aber gerade hier will ich mich dann nicht mit externen Komponenten herum schlagen müssen.


    Ich sehe die PSoC zwischen FPGA- und MCU-Plattformen angesiedelt. Sicherlich nicht der Weisheit letzter Schluss aber doch schon sehr universell ohne externe Komponenten einsetzbar. Leider ist die Entwicklungsumgebung (Software) von Cypress nicht wirklich so leistungsfähig wie die der Konkurrenten und dass es die nur für Windows gibt, fuchst mich doch schon ein wenig.


    Von den 10 CY8CKIT-059, die ich bestellt habe, kann ich (sobald ich die denn habe) auch ein paar hier im Forum weiter geben... wie schon gesagt, ich will Mitstreiter haben ;)


    Übrigens habe ich das hier gefunden:
    https://www.youtube.com/watch?v=B2MvwRQ0q_I


    -Jonas

  • am Ende muss das Ding auch beherrscht und programmiert werden können


    Gerade für die Evaluationboards sind häufig die notwenigen Examples bei den gängigen IDEs (insbesondere auch bei den limitierten für die Hobbyisten) vorhanden. Für meinen "Old-EPROM-Reader", in dem Fall mit einem "SAMD21 Xplained pro" war es nicht mal notwendig, dass Datenblatt zu studieren (ich hab' natürlich bei der Auswahl des Kits schon reingeschaut), das Projekt war auf Grundlage des "getting-started" Examples rein mit der asf-Library zu lösen - und wenn ich mir nicht einen "dicken _Hund" geleistet hätte (war nat. auch schon Pech, dass beide Funktionen in der Library vorhanden waren), wäre das Projekt auch ratz fatz fertig geworden. Ob das PSoC 5PL Board ebenso ausführlich unterstützt wird kann ich grad nicht nachprüfen - ich habe am Freitag einen A3 Scanner erhalten, die .net-nutzende Software aber gleich wieder von meinem XP-Rechner deinstalliert, was diesen in einem nicht mehr nutzbaren Zustand hinterließ (nur noch der Explorer ließ sich starten, für alles andere, selbst für die CMD.EXE wollte er sich nach einem Dienstprogramm im Internet umsehen! - musste deshalb die HDD platt machen und hab' deshalb grad keine IDEs drauf.

  • Ich habe mich gestern mal etwas näher mit den PSOC befasst. Das möchte ich gerne ausprobieren und hatte schon über die Anschaffung eines Entwicklungskits nachgedacht. Mich interessiert besonders der hochauflösende ADC, der auf diesem Board vorhanden ist.
    Ich würde Dir also gerne eines abkaufen.

  • Ich habe Heute ein wenig herum probiert und einen (derzeit) ein stimmigen Synthesizer gebastelt. Letztlich produziert das Projekt aktuell nur recheck-Wellen und verarbeitet die Noten noch über Warteschleifen. Ich will die einzelnen Stimmen entkoppeln und über Interrupts die Noten abarbeiten.


    Aufbau:


    Synthesizer Stimme: 16bit Timer mit flipflop am Ausgang (Takthablierung) von einem 3564khz Takt.
    Frequenzberechnung: ausgehend von 440hz wird der 1782khz Takt in den Teiler umgerechnet (double) und schließlich auf die Klaviatur 'projeziert' (Taste 49). Wie beim Klavier kann taste 1 bis 88 verwendet werden. Tatsächlich erlaubt die Formel auch mehr Tasten (unterhalb von 0 negativ).
    -> (int) (4050/pow(2, (tastennummer-49)/12))


    https://soundcloud.com/vintage…quare-wave-generator-test


    Ziele für dieses Projekt:
    - Synthesizer mit 3 unabhängigen Stimmen mit nachgeschaltetem 8 bit DAC.
    - Rauschgenerator
    - Apple II Interface mit Kompatibilität zur ALF MC16 Synthesizer Karte.
    - Midi Dateien über SD-Karte abspielbar.

  • Ich habe mich gestern mal etwas näher mit den PSOC befasst. Das möchte ich gerne ausprobieren und hatte schon über die Anschaffung eines Entwicklungskits nachgedacht. Mich interessiert besonders der hochauflösende ADC, der auf diesem Board vorhanden ist.
    Ich würde Dir also gerne eines abkaufen.


    Dann gib mir mal ne PM mit deinen Adressdaten, wir sehen dann weiter.

  • Hier eine neue Version meines 3ch synthesizers.


    Neuerungen:


    3 volle Kanäle mit jeweils 2 Wellenformen (Sägezahn und Rechteck)
    Asynchrone Notenverarbeitung für jeden Kanal von einer zentralen 1khz schleife (hier soll später ein Interrupt implementiert werden)


    Weitere Ziele:
    8bit DAC für jeden Kanal (VCA) -> möglicherweise nur extern lösbar. Einige CEM3382 (dual VCA) habe ich noch da.


    Hier ist eine erste Aufnahme. Den Fehler, dass die Musik nicht richtig stoppt habe ich schon behoben ;)
    Irgendwie finde ich das Ergebnis schon lustig :P
    https://soundcloud.com/vintage…sed-3-channel-synthesizer


    -Jonas