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/
Vielleicht erforschst du einfach den Unterschied zwischen Bit und Byte. Je nach Controller schiebt der auch gleich 32Bit rüber.
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;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.