Elektroda.de
Elektroda.de
X

PY32F002 - chinesische ARM für 8 Cent von PUYA

piotr_go 7629 43
This content has been translated flag-pl » flag-de View the original version here.
  • PY32F002 - chinesische ARM für 8 Cent von PUYA PY32F002 - chinesische ARM für 8 Cent von PUYA

    Es gab schon einen ARM für 16 Cent, jetzt haben wir ARM für 8 Cent. Ja, acht. :)
    PY32F002/PY32F003 von PUYA sind Mikrocontroller mit ARM Cortex M0+ Kern, der mit 24/32 MHz getaktet wird.
    PY32F002 haben 20 kB FLASH, 3 kB RAM, SPI, USART, I2C, ADC, Timer... nichts zu meckern.
    PY32F003 zusätzlich DMA und ein paar Timer mehr, außerdem gibt es eine größere Speicherauswahl.
    Es gibt eine SWD-Schnittstelle, man braucht also keinen exotischen Programmierer.
    Stromversorgung 1,7 V...5,5 V.
    Gehäuse von Standard-SOPs über TSSOPs bis hin zu kleinen QFNs oder DFNs.

    PDFs zum Herunterladen auf der chinesischen Version der Website:
    https://www.puyasemi.com/cpzx3/info_267_aid_242_kid_235.html
    Wir Klicken auf den orangefarbenen Ordner. Jeder hat das gleiche RAR mit einer Reihe von PDFs und anderen Hilfsmitteln. Manche auf Chinesisch, manche auf Englisch.

    PY32F002:
    PY32F002 - chinesische ARM für 8 Cent von PUYA
    PY32F003:
    PY32F002 - chinesische ARM für 8 Cent von PUYA

    Beispiele für Gehäuse:
    PY32F002 - chinesische ARM für 8 Cent von PUYA PY32F002 - chinesische ARM für 8 Cent von PUYA PY32F002 - chinesische ARM für 8 Cent von PUYA PY32F002 - chinesische ARM für 8 Cent von PUYA

    Hello world (Quellen beigefügt):
    PY32F002 - chinesische ARM für 8 Cent von PUYA
    Blinkende LEDs und Text auf UART (9600 bps)

    Tests:
    Soweit mir aufgefallen ist, gibt es ein paar Probleme mit dem Zurücksetzen.
    1. Beim Anschließen einer Taste an den RESET-Pin erscheint manchmal ein HardFault-Interrupt, wenn er gedrückt wird.
    Der externe Reset kann deaktiviert werden, so dass das Problem eher gering ist. Einen externen Reset habe ich schon lange nicht mehr benutzt.
    2. Das System kann ca. 2 Mal übertaktet werden, indem der "wait state" des Flashs auf 1 gesetzt und die Kalibrierung des Generators geändert wird.
    Das einzige Problem ist, dass das Zurücksetzen "wait state" des Flashs zurücksetzt, und die Generatorkalibrierung wird nicht zurückgesetzt.
    Wenn jemand übertakten möchte, nicht zurücksetzen.

    Die Stromaufnahme im Schlafmodus liegt bei etwa 5 µA, als 8-Bit-Killer würde ich es also nicht bezeichnen. Obwohl preislich... :)

    Programmierung:
    Um Unterstützung für PUYA-Chips zu J-Link hinzuzufügen, muss man die ,,.FLM"-Dateien aus dem Anhang in das Verzeichnis ,,/opt/SEGGER/JLink/Devices/Puya/" hochladen und Folgendes zur Datei ,,JLinkDevices.xml" hinzufügen:
    Zitat:
    <!-- -->
    <!-- Puya -->
    <!-- -->
    <Device>
    <ChipInfo Vendor="ST" Name="PY32F002Ax5" WorkRAMAddr="0x20000000" WorkRAMSize="0xC00" Core="JLINK_CORE_CORTEX_M0"/>
    <FlashBankInfo Name="FLASH" BaseAddr="0x08000000" MaxSize="0x5000" Loader="Devices/Puya/PY32F0xx_20.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
    <FlashBankInfo Name="OPT" BaseAddr="0x1FFF0E80" MaxSize="0x10" Loader="Devices/Puya/PY32F0xx_OPT.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
    </Device>
    <Device>
    <ChipInfo Vendor="ST" Name="PY32F003x4" WorkRAMAddr="0x20000000" WorkRAMSize="0x800" Core="JLINK_CORE_CORTEX_M0"/>
    <FlashBankInfo Name="FLASH" BaseAddr="0x08000000" MaxSize="0x4000" Loader="Devices/Puya/PY32F0xx_16.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
    <FlashBankInfo Name="OPT" BaseAddr="0x1FFF0E80" MaxSize="0x10" Loader="Devices/Puya/PY32F0xx_OPT.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
    </Device>
    <Device>
    <ChipInfo Vendor="ST" Name="PY32F003x6" WorkRAMAddr="0x20000000" WorkRAMSize="0x1000" Core="JLINK_CORE_CORTEX_M0"/>
    <FlashBankInfo Name="FLASH" BaseAddr="0x08000000" MaxSize="0x8000" Loader="Devices/Puya/PY32F0xx_32.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
    <FlashBankInfo Name="OPT" BaseAddr="0x1FFF0E80" MaxSize="0x10" Loader="Devices/Puya/PY32F0xx_OPT.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
    </Device>
    <Device>
    <ChipInfo Vendor="ST" Name="PY32F003x8" WorkRAMAddr="0x20000000" WorkRAMSize="0x2000" Core="JLINK_CORE_CORTEX_M0"/>
    <FlashBankInfo Name="FLASH" BaseAddr="0x08000000" MaxSize="0x10000" Loader="Devices/Puya/PY32F0xx_64.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
    <FlashBankInfo Name="OPT" BaseAddr="0x1FFF0E80" MaxSize="0x10" Loader="Devices/Puya/PY32F0xx_OPT.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
    </Device>

    Cool? DIY-Rangliste
    Über den Autor
    piotr_go
    DIY Elektronikdesigner
    Offline 
    piotr_go hat 2533 Beiträge geschrieben mit der Bewertung 2802 geschrieben, und dabei 88 Mal geholfen. Er ist seit 2003 bei uns.
  • #4
    szymon122
    Niveau 38  
    Daher bin ich überrascht, dass alle chinesischen "Spielzeuge" immer noch auf modernen 51er-Versionen sind.

    Bezüglich chinesischer Schaltungen, weiß vielleicht jemand wie es mit Kompatibilität aussieht, z. B. HC32F460KCTA und STM32F446RC? Unter der Annahme, dass man für beide dieselben Pins und Anweisungen verwendet, kann man das Programm einfach verschieben, ohne etwas anderes als das "Ziel" in der Umgebung zu ändern?
    Oder kennt vielleicht jemand direkte Teile zum Ersetzen, z. B, STM32F405 usw.?
  • #5
    ZbeeGin
    Niveau 39  
    szymon122 hat geschrieben:
    Daher bin ich überrascht, dass alle chinesischen "Spielzeuge" immer noch auf modernen 51er-Versionen sind.

    Anscheinend gehen sie davon aus, dass man gegen Spatzen keine Kanonen verwenden soll (Es gab schon mal Aktion mit Spatzen).
  • #6
    Galareta
    Niveau 23  
    Weil 51er für 4 Cent sind, nicht für 8 ;) und sie haben Programme, die seit Jahren fertig sind.
  • #7
    interbudtr
    Niveau 2  
    Schade, dass solche Mikrocontroller nicht bei ali erhältlich sind. Wenn ich nur diesen Mikrocontroller mit lscs bestellen würde, wäre es immer noch billiger, etwas auf dem lokalen Markt zu bekommen.
  • #8
    piotr_go
    DIY Elektronikdesigner
    szymon122 hat geschrieben:
    Weil 51er für 4 Cent sind, nicht für 8 ;) und sie haben Programme, die seit Jahren fertig sind.

    Es gibt immer mehr ARM oder RiscV, aber 8-Bit für 2 Cent werden wohl nicht verschwinden.

    interbudtr hat geschrieben:
    Schade, dass solche Mikrocontroller nicht bei ali erhältlich sind.

    Es gibt PY32F003, nur der Preis ist irrational.

    interbudtr hat geschrieben:
    Wenn ich nur diesen Mikrocontroller mit lscs bestellen würde, wäre es immer noch billiger, etwas auf dem lokalen Markt zu bekommen.

    Ich bestelle meistens mit Leiterplatten, dann bekomme ich versandkostenfrei.
  • #9
    gulson
    Forenbetreiber
    szymon122 hat geschrieben:
    Daher bin ich überrascht, dass alle chinesischen "Spielzeuge" immer noch auf modernen 51er-Versionen sind.

    Jemand hat vor 20 Jahren ein Programm für Spielzeug geschrieben und verwendet es einfach weiter.
    Es ist eine Frage der Zeit und sie werden es auf ARMs tun. Änderungen finden vor unseren Augen statt, zumindest was die Preise betrifft.
    Außerdem soll der Halbleitermarkt Milliarden von Dollar / Euro / Yuan von allen Regierungen erhalten, also werden wahrscheinlich die Prozessoren auf der Straße liegen und jeder Kontinent seinen eigenen produzieren (Ende der Globalisierung bei Halbleitern). Wir stehen vor einem regelrechten Wettrüsten, nicht nur bei den Preisen. Designer und Ingenieure werden gewinnen.
  • #10
    Macosmail
    Niveau 34  
    gulson hat geschrieben:
    Wir stehen vor einem regelrechten Wettrüsten, nicht nur bei den Preisen. Designer und Ingenieure werden gewinnen.

    Hoffen wir, obwohl angesichts der letzten Nachrichtenflut, wie ChatGPT Programme auf der Grundlage einer verbalen Beschreibung ausspuckt, verwirrt sein können, ob alles in die gute Richtung geht.

    In vielen Produkten, in denen früher STM32 vorhanden war, findet man heute oft chinesischen Ersatz. Das gilt natürlich nicht nur für den STM32F103, das Angebot dieser chinesischen Hersteller ist breit.
    PY32F002 - chinesische ARM für 8 Cent von PUYA
    PY32F002 - chinesische ARM für 8 Cent von PUYA PY32F002 - chinesische ARM für 8 Cent von PUYA PY32F002 - chinesische ARM für 8 Cent von PUYA PY32F002 - chinesische ARM für 8 Cent von PUYA PY32F002 - chinesische ARM für 8 Cent von PUYA PY32F002 - chinesische ARM für 8 Cent von PUYA PY32F002 - chinesische ARM für 8 Cent von PUYA
    PY32F002 - chinesische ARM für 8 Cent von PUYA
    Sogar der ATmega328 hat seinen Ersatz LGT328, der interessanterweise so optimiert wurde, dass die meisten Befehle, die mehr als 1 Zyklus benötigten, doppelt so schnell im selben Takt ausgeführt werden. Auch in der Peripherie gibt es einige Verbesserungen.
  • #11
    krisRaba
    Niveau 31  
    piotr_go hat geschrieben:
    Es gibt eine SWD-Schnittstelle, man braucht also keinen exotischen Programmierer.

    Das ist ein großer Vorteil. Bei vielen Lösungen sind die Verrenkungen, die zum Ausführen der Umgebung erforderlich sind, ein Hindernis bei begrenzter Zeit. Schön, dass sie diesen Weg gehen :)
  • #12
    jarekgol
    Niveau 31  
    Galareta hat geschrieben:
    Weil 51er für 4 Cent sind

    Wo kann man das kaufen und wie viel?
  • #13
    l0ud
    Niveau 14  
    krisRaba hat geschrieben:
    piotr_go hat geschrieben:
    Es gibt eine SWD-Schnittstelle, man braucht also keinen exotischen Programmierer.

    Das ist ein großer Vorteil. Bei vielen Lösungen sind die Verrenkungen, die zum Ausführen der Umgebung erforderlich sind, ein Hindernis bei begrenzter Zeit. Schön, dass sie diesen Weg gehen :)

    Dies ist ,,kostenlos" durch die Verwendung des Cortex M-Kerns. Es hatte keinen Sinn, etwas Eigenes zu erfinden, also haben wir die Kompatibilität kostenlos erhalten.

    Kürzlich wurde ich Besitzer von mehreren hundert Stück PY32F003 und hatte auch etwas Spaß.
    Was mich am meisten überrascht hat, der Hersteller in der Dokumentation hat über den Stromverbrauch nicht gelogen. Ich habe verschiedene Konfigurationen des internen Oszillators getestet und tatsächlich stimmen die Werte mit dem Datenblatt überein. Dieser Mikrocontroller ist wirklich ziemlich sparsam und frisst 8-Bit-Atmega und alte STMs vom Typ STM32F0 zum Frühstück. Bei aktiviertem LSI und aktiviertem Flash-Schlafmodus kann man ohne Schlafmodus einen wirklich niedrigen Stromverbrauch erzielen.
    Eine angenehme Überraschung ist auch die Tatsache, dass es sich um eine Variante des Kerns mit schnellerer Multiplikation und Single-Cycle-I/O handelt.

    Am schwierigsten war das Schreiben eines Flash-Treibers für OpenOCD und eines Startskripts (der Hersteller lieferte einen Start-up im Dialekt eines geschlossenen ARM-Assemblers). Nachdem man diese Schritte ausgeführt hat, funktionieren die Herstellerbeispiele normal auf GCC. HAL ist wohl mehr oder weniger Mist von STM geklaut, aber es funktioniert und gibt einen Einblick in die Peripherie.
    Ich bin überrascht, wie gut diese MCUs für einen so lächerlichen Preis sind.
  • #14
    piotr_go
    DIY Elektronikdesigner
    Macosmail hat geschrieben:
    Hoffen wir, obwohl angesichts der letzten Nachrichtenflut, wie ChatGPT Programme auf der Grundlage einer verbalen Beschreibung ausspuckt, verwirrt sein können, ob alles in die gute Richtung geht.

    In 20 Jahren diktieren Sie die Beschreibung auf Ihr Smartphone und erhalten nach einer Woche ein fertig montiertes und programmiertes Schaltung.
    Mir wird übel.
  • #15
    gulson
    Forenbetreiber
    piotr_go hat geschrieben:
    In 20 Jahren diktieren Sie die Beschreibung auf Ihr Smartphone und erhalten nach einer Woche ein fertig montiertes und programmiertes Schaltung.
    Mir wird übel.

    Vielleicht nicht in 20 Jahren, sondern in 10 Jahren.
    Und zwar nicht nur eine fertig montierte Schaltung, sondern möglicherweise das ganze Gerät mit einem auf einem 3D-Drucker gedruckten Gehäuse ;)
    Interessanterweise wird alles vollständig automatisiert.

    Es sei denn, sie setzen uns zuerst zurück.

    Nun, ich muss ein paar Proben bestellen.
  • #16
    Azbi
    Niveau 10  
    @piotr_go, welche Umgebung oder SDK verwenden Sie, um diese PUYAs zu entwickeln?
    Ich würde auch gerne mit ihnen spielen :)
  • #17
    piotr_go
    DIY Elektronikdesigner
    Einfacher Editor mit Syntaxhervorhebung und mehreren Karten. Es passt zu allem.
    Ich hatte so viele verschiedene Chips probiert, dass ich mich daran gewöhnt hatte.
    Außerdem GCC/SDCC oder was auch immer es für eine bestimmte Schaltung gibt.
  • #18
    l0ud
    Niveau 14  
    VSCode funktioniert recht gut mit dem Cortex Debug-Plugin, der richtigen Konfiguration und OpenOCD.
  • #19
    szymon122
    Niveau 38  
    Macosmail hat geschrieben:
    In vielen Produkten, in denen früher STM32 vorhanden war, findet man heute oft chinesischen Ersatz.

    Wie ist die Kompatibilität solcher Programme?
    Ich verstehe, dass "Hex" nicht funktioniert, aber mit dem Quellcode reicht es aus, ihn mit "chinesischen Tools" zu kompilieren?
  • #20
    Macosmail
    Niveau 34  
    Ich behalte es jetzt einfach im Auge. Ich habe ein GD32, aber noch keine Zeit es zu testen. Soweit ich weiß, sollte in den meisten Fällen eine für STM32 kompilierte Binärdatei auf einem chinesischen Ersatz funktionieren. Immerhin haben diese Chips das Namenssystem vom STM32 übernommen.
    Eventuell werden Änderungen und Verbesserungen meiner Meinung nach "nicht kollisionsfrei" implementiert, z. B. indem leere (oder reservierte) Teile der Register der originellen MCU verwendet werden.
    Größere Unterschiede können bei GD32 durch die Verwendung von seriellem Flash-Speicher auftreten, von dem der Programmcode nach dem Start und Aufwachen aus Schlafmodus ins SRAM kopiert wird, was eine gewisse Zeit in Anspruch nimmt. Bei "energiesparender" Software kann dies ein Problem sein.
    Natürlich kann man keinen dieser Chips direkt von CubeIDE aus programmieren, aber es lohnt sich, ältere Versionen des STM32 ST-LINK utility oder spezielle chinesische Tools auszuprobieren, obwohl einige nur auf Chinesisch sind.
  • #21
    piotr_go
    DIY Elektronikdesigner
    Ich konnte das externe Reset-Problem etwas genauer lokalisieren. HardFault erscheint beim Zugriff auf AHB/APB.

    Ehhh, sie haben in der Dokumentation gelogen. PY32F002AA15M6TU hat 32 kB FLASH und 4 kB RAM. :)
    Ich bin immer noch auf der Suche nach einem DMA.

    =============== Aktualisierung ================

    Es sieht so aus, als ob es auch DMA gibt.
    Ich habe einen einfachen Code geschrieben, um Daten an SPI zu senden, und es gibt eine Uhr auf SCK.
    Wenn DMA ausgeschaltet ist, verschwindet die Uhr.

    Der minimale SPI-Teiler im Master-Modus ist 2.
  • #22
    piotr_go
    DIY Elektronikdesigner
    Immer besser. Im PY32F002AA15M6TU befindet sich eine PLL. :)
    Nur Boni.

    =============== Aktualisierung ================

    Ich habe es auf ~96 MHz übertaktet. Einfacher Code aus dem RAM funktioniert stabil. FLASH funktioniert nicht (1 ist der maximale wait state).
  • #23
    Macosmail
    Niveau 34  
    Vielleicht sind dies einige defekte Strukturen von PY32F003.
    Hat jemand es geschafft, das Reference Manual auf Englisch zu finden? Die Datenblätter sind in Englisch und das Wichtigste nicht.
    Im Allgemeinen gibt es dabei eine seltsame Situation, weil zum Beispiel hier ( http://47.103.60.28:8090/en/download1.aspx ) ist ähnlicher µC (obwohl anders - und der Preis ist anders) und auch kein RM.
    Im Allgemeinen bin ich irgendwo auf Informationen gestoßen, ich weiß jetzt nicht mehr, welcher Hersteller der MCU es ist, aber um zur Dokumentation zu gelangen, muss man VPN verwenden :-)
    Edit:
    Update 13.06.2020: Die Website ist von Europa aus nicht erreichbar. Die Verwendung eines VPN mit einem asiatischen Ausgangspunkt ermöglicht jedoch den Zugriff auf die Website. Auch wenn die Website nur bei Zugriff aus Asien zu funktionieren scheint, ist das Datenblatt auf Englisch verfügbar. Neben dem Datenblatt sind Entwicklungsbibliotheken verfügbar, ich konnte jedoch kein Benutzerhandbuch finden (jede Dokumentation, in der die Registerwerte erörtert werden). Daher erkläre ich die Dokumentation als unvollständig.
  • #24
    piotr_go
    DIY Elektronikdesigner
    Macosmail hat geschrieben:
    Vielleicht sind dies einige defekte Strukturen von PY32F003.

    PY32F003 (laut PDF) hat keine PLL.
    Macosmail hat geschrieben:
    Hat jemand es geschafft, das Reference Manual auf Englisch zu finden?

    Es gibt für PY32F030.
    https://www.puyasemi.com/cpzx3/info_267_aid_242_kid_235.html

    =============== Aktualisierung ================

    2 USARTs, 2 SPI.
    PY32F030 werden in PY32F002 gepackt :)
  • #26
    Macosmail
    Niveau 34  
    Dann gibt es wahrscheinlich auch für PY32F003 (ich habe solche bestellt :) ). Ich frage mich, ob es diesen LED-Treiber für 7-Segment-Anzeigen auch gibt. Soweit ich weiß, sollten die Pins dann Stromquellen sein (20-40-60-80 mA). Mit diesem 10-Pin-Gehäuse im PY32F002 kann man eine gemeinsame Kathode auf PB3 für erste Ziffer, und eine Anode des C-Segments auf PA1 haben.
    Man kann eine LED anschließen und sehen, ob sie sich ein- und ausschalten läßt und die Helligkeit mit Stromeffizienz und Multiplexfrequenz ändern kann. Dann wäre es zu 99,9% sicher, dass es sich um PY32F030 handelt :)
    Ich sehe die Zähler und wahrscheinlich die meisten Peripherie, die mit denen in STM32 identisch sind :)
  • #27
    piotr_go
    DIY Elektronikdesigner
    Code: c
    Melde dich an, um den Code zu sehen

    Es gibt das Ergebnis "0x00000078" :)
    Ohne gesetztes RCC_APBENR2_LEDEN ist es "0x00000000".

    Getestet auf PY32F002 in SO8.
  • #28
    Macosmail
    Niveau 34  
    Das Register akzeptiert Daten (innerhalb seiner 8 Bits), nachdem der Takt geliefert wurde. Also würde es wahrscheinlich und physikalisch funktionieren :) obwohl das 8-Pin-Gehäuse diese Fähigkeiten möglicherweise nicht hat :-)
    Aus Marketing-Sicht ist es vielleicht besser, wenn der Hersteller eine ganze Reihe von Chips anbietet, als nur einen in verschiedenen Gehäusen :)
  • #29
    piotr_go
    DIY Elektronikdesigner
    Ich habe PY32F002 in TSSOP20, QFN16 und SOP16 bestellt, sie sollten jetzt auf dem Weg zu mir sein. Anscheinend haben sie C19 bei LCSC, also gibt es Verzögerungen.
    Außerdem Adapter und diverse Universalplatten.