Hallo
Ich bin auf der Suche nach einem passenden Controller für folgende
Problmestellung:
Die Daten von 7 ADC Kanälen, jeweils 1MSps bei 8Bit pro Sample, in Summe
also 7*8*1MBps=56MBps sollen an einen PC gesendet werden. Für die
Übertragung zum PC würde ich gerne UDP über Ethernet verwenden.
Folgende Controller sind aktuell meine Favoriten:
- STM32F407ZG: ADC würde nur für 6 Kanäle reichen, wäre noch akzeptabel
- LPC1837 oder LPC4337: mit externem ADC
Der Controller sollte noch per Hand lötbar sein.
Außerdem bin ich auf Codebeispiele insbesondere für den Ethernetteil
angewiesen.
Ist die Datenrate so überhaupt realisiebar?
Kann mir jemand einen der Controller empfehlen oder von einem abraten?
Ich bin auch offen für andere Vorschläge.
Vielen Dank!
timtam
Im Prinzip würden ja auch schon die Connectivity-Modelle der
STM32F1-Reihe reichen (STM32F107 z.b.). Die lassen sich auch per Hand
löten.
Eventuell wäre es auch sinnvoll, direkt auf externe ADCs zu setzen.
timtam schrieb:> Die Daten von 7 ADC Kanälen, jeweils 1MSps bei 8Bit pro Sample, in Summe> also 7*8*1MBps=56MBps sollen an einen PC gesendet werden. Für die> Übertragung zum PC würde ich gerne UDP über Ethernet verwenden.>> Folgende Controller sind aktuell meine Favoriten:> - STM32F407ZG: ADC würde nur für 6 Kanäle reichen, wäre noch akzeptabel> - LPC1837 oder LPC4337: mit externem ADC
Die haben frei keine 6 ADCs drin (STM32F und LPC) sondern die haben 2
ADCs drin auf die die AD-Pins gemultiplext sind. Maximal erzeugst du dir
also 2*10bit*1MSPS = 20MBit/s = 2,5MB/s
Das sollte ein Cortex M4 + Ethernetphy + DMA problemlos hinbekommen.
timtam schrieb:> Ist die Datenrate so überhaupt realisiebar?
Ja, da bleibt auch bei einem 100Mbit-Netz noch genug Luft. Es sei denn,
außergewöhnlich hoher Broadcast-Traffic im Netz beansprucht die Resource
zu stark.
Dagegen hilft dann u.U. ein managebarer Switch. Die dort zu treffende
Konfiguration schränkt allerdings auch die Universalität wieder ein,
denn Sender und Empfänger deines Datenstroms können ja dann zumindest
Teile der Broadcasts nicht mehr "hören", die entsprechenden Dienste dann
also auch nicht mehr verwenden.
timtam schrieb:> Der Controller sollte noch per Hand lötbar sein.
Warum?
timtam schrieb:> Folgende Controller sind aktuell meine Favoriten:> - STM32F407ZG:
Wenn du LQFP-144 von Hand löten willst... bitte. da kauf ich lieber das
fertige STM32F4-Discovery Board (ist auch ein stm32f407 + noch ein
bisschen nettes speilzeug drauf + stlink/v2 debugger on board) für rund
15€, mit erweiterungsboard für netzwerk sinds zusammen 50€. Der
Controller alleine kostet bei Farnell zwischen 11€ und 17€ und dann hast
du immer noch das selber löten und ne Platine brauchst du auch noch...
Board:
(https://hbe-shop.de/Art-2009276-STMICROELECTRONICS-STM32F4DISCOVERY-EVALUATIONSBORDSTM32F4-DISCOVERY)
Erweiterung:
(https://hbe-shop.de/Art-2250205-STMICROELECTRONICS-STM32F4DIS-BB-ERWEITER-STM32F4-CORTEX-M4-DISCOV)
timtam schrieb:> Außerdem bin ich auf Codebeispiele insbesondere für den Ethernetteil> angewiesen.
Fertige Funktionen/Libs und Beispiele gibt es da genug, in der regel
liegen Beispiele auch schon der IDE deines vertrauens bei. z.B.
Keil-MDK5 (codegröße auf 32k begrenzt)
Grüße
Falls Du TCP/IP zur Übertragung nutzen willst, bedenke, dass der
Controller die Prüfsummen der IP Pakete berechnen muss. Bei der
anvisierten Datenrate erwarte ich Probleme.
Moin,
also die Prüfsummenberechnung ist kein Thema, da in Hardware gegossen
beim STM32F4. Da gehen noch ein paar Mbits mehr.
Es wäre nur ggfs. die Frage, ob du etwas mehr Speicher brauchst um die
Datenrate so hoch zu kriegen bzw. zu halten. Vielleicht ein F429
Discovery? Aber LQFP144 per Hand löten geht ganz gut.
Eine auf 32KB beschränkte IDE würde ich nicht empfehlen. Die hat man mit
einem entsprechenden Stack schnell geknackt.
LG Jan
Vielen Dank für eure Antworten.
Ich wollte sowieso mit eineme fertigen Board anfagen um Hardwarefehler
erst einmal ausschließen zu können, wenn die Software dann läuft würde
ich ein eigenens Board in angriff nehmen. Ursprünglich hatte ich an das
olimex STM32-E407[1] gedacht, auf das ich auch hier im Forum gestoßen
bin. Der Speicher auf dem F429 Discovery ist aber natürlich ein gutes
Argument. Das werde ich mir nochmal im Detail ansehen.
Bei den ADCs bin ich davon ausgegangen zwei Kanäle über einen ADC Kanal
laufen lassen zu können, indem ich nach jeder Sampleaufnahme den
Eingangspin umstelle. Ist das so nicht machbar?
Die Netzwerkseite ist ersteinmal unproblematisch, da ich eine
Dirketverbindung zum PC verwenden will.
Mir ist allerdings noch nicht klar, wie ein Prozessor der mit maximal
168MHz läuft (STM32F407ZG), es schafft 56MBit+Frame+Codierung seriell
kontinuierlich auszugeben ohne an seine Leistungsgrenze zu stoßen (es
müsste ja etwa bei jedem zweiten Takt ein Pinzustand geändert geändert
werden. Liegt das daran, dass der integrierte Ethernet Controller das
setzen der Pinzustände völlig unabhängig vom Controller macht?
Gruß
timtam
[1] https://www.olimex.com/Products/ARM/ST/STM32-E407/
timtam schrieb:> Liegt das daran, dass der integrierte Ethernet Controller das setzen der> Pinzustände völlig unabhängig vom Controller macht
Das ist der Sinn eines Ethernet Controllers. Wenn das nicht so wäre,
könnte man ja gleich alles in Software machen... Und dann gibt es ja
auch noch DMA .
Ein laestiges Thema sind bei STM32 immer die externen PHYs.
Seine eigene PHY STE100 verwendet selbst ST nicht mehr...
Die neuen LM4F von TI haben den schon Onboard.
Was unter anderem heisst, dass auch alle von TI bereit gestellten
Codebeispiele out of the box funktionieren.
Ein nettes Evalboard hat TI natuerlich auch: EK-TM4C1294XL.
Gibt es im TI-Store versandkostenfrei fuer etwas mehr als 14 Eu.
timtam schrieb:> Mir ist allerdings noch nicht klar, wie ein Prozessor der mit maximal> 168MHz läuft (STM32F407ZG), es schafft 56MBit+Frame+Codierung seriell> kontinuierlich auszugeben ohne an seine Leistungsgrenze zu stoßen (es> müsste ja etwa bei jedem zweiten Takt ein Pinzustand geändert geändert> werden. Liegt das daran, dass der integrierte Ethernet Controller das> setzen der Pinzustände völlig unabhängig vom Controller macht?
DMA lautet das Zauberwort. Da muss der Prozessor gar nichts machen, nur
die Sache Starten, der Rest geht ohne Prozessorleistung.
Noch dazu muss der DMA nur den Ethernet-Block (Byteweise oder so)
befüllen, um die einzelen Bits kümmert sich der Block.
Du must nur die Übertragung eines Speicherbereichs starten, der Rest
sollte von alleine gehen.
--> der Prozessor langweilt sich dabei zu Tode, wenn du es richtig
machst;-)