www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT91SAM7S64 oder STR911FAM


Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

steht grad vor der Überlegung welchen ARM Controller ich einsetzen soll: 
AT91SAM7S64 oder STR911FAM (benötigen tue ich USB 2.0 Full-Speed, Flash 
und RAM sollte im Controller bereits implementiert sein, SPI, I2C, 
RS232)...

Welcher von den beiden Controllern ist eurer Meinung besser (schneller)?

Gruß
Herbert

Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zur Anwendung: ich hab drei TLC5912 LED Treiber über SPI, einen Encoder 
und drei Taster sowie einen SPI-Touch-Controller angeschlossen: 
sämtliche Daten müssen ausgewertet werden im ARM und das Ergebnis via 
USB an einen PC gesendet werden.

Reicht hier die Performance der beiden Controller aus? Im Prinzip 
müssten wahrscheinlich alle Eingabe-Elemente jede 1ms abgefragt werden, 
um ein optimales Ergebnis zu erhalten...

Gruß
Herbert

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der STR9 hat exakt einen Vorteil: Es gbt ihn mit bis zu 2MB Flash. Von 
der Performance sollte man aber nicht allezu viel erwarten, seine 96MHz 
sind aufgrund des langsamen Flash-Zugriffs auf Daten nicht unbedingt 
viel mehr als die 55MHz des SAM7.

Wenn Performance ein wesentliches Thema ist, dann orientiere dich lieber 
an LPC1700. Oder, wenn der Fladen für das bischen Anwendung zu gross 
ist, am STM32 (USB in LQFP48). Wobei deine Beschreibung nicht so sehr 
nach hoher Performance klingt.

Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Wobei deine Beschreibung nicht so sehr
> nach hoher Performance klingt.

eigentlich nicht, nur die Auswertung der verschiedenen Inputs und der 
USB-Kram (die große Unbekannte für mich, was die Performance etc. 
angeht).

A. K. schrieb:
> STM32 (USB in LQFP48)
hab ich mir grad angeschaut - was ist hier eigentlich der Unterschied 
genau zu den STR911? Cortex sind strom-sparsamer, aber aus welchem Grund 
sind diese schneller in der Abarbeitung von normalen Code?

Herbert

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Herbert schrieb:

> hab ich mir grad angeschaut - was ist hier eigentlich der Unterschied
> genau zu den STR911? Cortex sind strom-sparsamer, aber aus welchem Grund
> sind diese schneller in der Abarbeitung von normalen Code?

Der Befehlssatz von ARM7/9 und Thumb(1) kann Konstanten zunächst 
unbekannten Wertes (z.B. Adressen) praktisch nur PC-relativ laden, also 
typischerweise aus dem Flash. Mit Cache oder entsprechenden Puffern ist 
das weniger kritisch, aber wenn jedem solchen Ladebefehl unweigerlich 5 
Waitstates auf den Buckel geschnallt werden (STR9@96:5, SAM7@55:1), dann 
macht sich das bemerkbar. Diese Ladebefehle sind in normalem ARM Code 
ziemlich häufig und sind einer der Gründe, weshalb beim ARM7 Code im RAM 
erheblich schneller sein kann.

Mit dem Thumb2 Befehlssatz ist das anders. Da lassen sich 32bit 
Konstanten wie bei vielen anderen RISCs in 2 Hälften ohne Datenzugriff 
auf das Flash laden. Braucht etwas mehr Platz (8 Bytes statt 6), wird 
aber nicht durch Waitstates ausgebremst. Bei NXP kommt von Anfang an 
noch eine Pufferung von Code- und Datenzugriffen auf das Flash hinzu, 
die beim LPC1700 schon an einen kleinen Cache erinnert. Die 
entsprechenden Puffer vom STR9 beziehen sich jedoch nur auf Code, dort 
fehlt jegliche Pufferung von Datenzugriffen auf das Flash.

Der STR9, jedenfalls in der mir vorliegenden ursprünglichen Version ohne 
"A", hat wohl noch andere kleine gelegentlich bremsende Fiesheiten drin, 
jedenfalls benimmt er sich bei bestimmten Performance-Tests teilweise 
recht seltsam, bricht dann markant ein, während LPC2100 und STM32 sich 
wie erwartet verhalten.

Dann gibt's bei den Grosshirnen natürlich noch die Division. Wenn man 
die in der Anwendung oft brauchen sollte, dann kann das auch eine Rolle 
spielen.

Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nachdem die Cortex-ARMs ja auf dem Vormarsch sind, werd ich mal einen 
von ST austesten.

Performance-mäßig sollte dieser (mit 72MHz) das ja hinbekommen, oder? 
Bin mir hier wie gesagt nur bezüglich des USBs nicht sicher. Vielleicht 
kannst du das etwa abschätzen?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe USB dort noch nicht verwendet und kann deine Anwendung auch 
nicht abschätzen.

In den letzten Wochen gab es hier einen Thread, der auf den 
Datendurchsatz von USB und die erforderlichen Performance abzielte. 
Daraus lässt sich vermuten, dass es für den vollen Durchsatz von USB mit 
12Mbps mit jedem solchen vollintegrierten Controller eng werden dürfte, 
zumal wenn die Daten nicht einfach vom Baum fallen, und es dann eher auf 
grössere Kisten wie ARM9 mit 3stelligen MHz rausläuft.

Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab zwar wahrscheinlich nicht diesen aber einen anderen Thread über ARM7 
und USB Performance gefunden:;
Beitrag "AT91SAM7X USB Datenrate"

Aus diesem Thread:
>Kann ich nur bestätigen, auf einem AT91SAM7S256 habe ich auch knapp über
>800 kB/s erreicht. Bulk mit libusb "Treiber". Der µC ist dann aber auch
>schon gut beschäftigt.

Die Datenrate reicht für mich auf jeden Fall; sind ja nur die 
Auswertungen (Touch-Koordinaten, Tastendruck, Encoder, und die LED 
Treiber)...

Wenn ich auf externe Sachen wie Flash und SDRAM verzichten möchte, wird 
das die schnellste Alternative sein...

Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich denke die Frage ob der STM32F ausreicht, wird sein ob dieser in der 
Lage ist drei Endpoints (alle Interrupt Mode) zu verwalten und jede 1ms 
Daten wenn notwendig (reichen dann die 64kB) an den PC zu versenden.

Diese müssen natürlich zuvor per SPI (Touch-Contrller) entsprechend 
ausgewertet werden, damit nur die reinen Touch-Koordinaten versendet 
werden.
Beim Encoder / Tasten ist die Auswertung schnell zu erledigen.

Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
800kB/s / 64BByte/pkt = 12.5k Pakets/s -> 12.5Pakets/ms

-> bin ich auf dem richtigen Weg? Ich bräuchte ja nur 4 Pakets pro 1ms 
-> dann müsste das doch aufgrund dieser Angaben funktionieren von der 
Performance her, oder?

Die 64Byte sind reine Nutzdaten, oder?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.