Mikrocontroller mit ADC und SPI-fähig

Ich entwerfe ein System, wo

Analoges Signal ---> (ADC-Digital Data) ---> UWB-Chip meist WSR601 oder AL6301/AL5100 Chipsatz

Hinweis (1): UWB ist eine Abkürzung für Ultra Wide Band Wireless Communication Technology. Wireless USB Chips, die hier zum Einsatz kommen, machen sich diese Technologie zunutze. Kurz gesagt, die Daten werden mit 5 Mbit / s über SPI oder USB 2.0 an die UWB-Chips (Wireless USB) übertragen. Diese Funkchips übertragen dann Daten an den Empfänger.

Hinweis (2): Die über den ADC abgetasteten Daten müssen nur direkt über eine beliebige Schnittstelle (USB, SPI usw.) an den UWB-Chip weitergegeben werden. Daten müssen in keiner Weise verarbeitet werden.

Ich suche nach einem Mikrocontroller, der die Funktion des ADC übernimmt und eine Schnittstelle zum UWB-Chip bildet. Beide (WSR601 und AL6301/AL5100) unterstützen verschiedene Optionen wie USB 2.0, SPI, SDIO 2.0, UART usw.

1) Der ADC, den ich brauche, ist 10 Bit und die Datenrate, die sich daraus ergibt, was ich zum UWB-Chip übertragen muss, beträgt etwa 5 Mb/s. Die erforderliche ADC-Abtastrate würde etwa 5 * 10 ^ 5 Mal pro Sekunde betragen.

2) Es muss so wenig Strom wie möglich sein

3) Wäre SPI in Anbetracht der Datenrate und des geringen Stromverbrauchs die beste Wahl dafür, oder denken Sie, dass eine andere Kommunikationsschnittstelle besser wäre?

4) Irgendwelche uC-Vorschläge mit ausreichender Rechenleistung, damit ADC und SPI gleichzeitig arbeiten können?

Mir wurde PIC32MX250F128D von jemandem vorgeschlagen, der behauptete, dass es 14,5 mA bei 40 MHz, 3,3 V verbraucht. Aber auch dieser uC hat eine Menge Schnittstellenoptionen zur Verfügung, die ich für unnötig halte, und auch dieser uC scheint auf der Microchip-Website nicht verfügbar zu sein.

Ich hoffe also, jemand kann uC mit etwas geringerer Funktionalität und hoffentlich geringerem Stromverbrauch als einem in Betracht gezogenen vorschlagen.

Diese Frage ist zu weit gefasst, es fehlen wichtige Informationen und sie kann in der jetzigen Form nicht vernünftig beantwortet werden.
Ein wichtiges Thema, das Sie berücksichtigen sollten, ist, wie regelmäßig das Stichprobenintervall sein muss und wie Sie dies sicherstellen würden. Können Sie beispielsweise als Reaktion auf einen Interrupt (der eine gewisse Latenz hat) abtasten oder müssen Sie den ADC Daten unter direktem Hardware-Timing generieren lassen und den Interrupt verwenden, um die resultierenden Daten abzufangen. Berücksichtigen Sie auch die Kompromisse zwischen FPGAs und Software. Sie müssen auch Pufferanforderungen für den UWB berücksichtigen und wenn Sie fehlgeschlagene/verlorene Daten erneut senden oder einfach fortfahren und auf eine brauchbar hohe Erfolgsquote hoffen.
@ChrisStratton Ich denke, ich werde einfach auf eine brauchbar hohe Erfolgsquote hoffen, da die zu übertragenden Daten Low-End-Bilder oder -Videos sind. Da die Steuersignale für die Kamera (deren Ausgabe vom ADC abgetastet werden soll) nur vom Mikrocontroller weitergeleitet werden, ist das Abtasten mit Interrupts meiner Meinung nach die natürliche Option (die Latenz ist akzeptabel).
@gururaj - Ist das eine Art sehr einzigartige Kamera? Weil es etablierte Schemata für die Bildübertragung gibt - sowohl analog als auch über WLAN-Netzwerke usw., die viel einfacher einzurichten wären.
@ChrisStratton - Ja, das ist eine Kamera, die (nicht von mir) in einer Universität entwickelt wurde, um in das Gehirn einer Ratte implantiert zu werden. Das gesamte Sendermodul muss also etwas stromsparend sein. Könnten Sie mich auf die etablierten Systeme verweisen, von denen Sie sprechen? Es muss eine Art festes Protokoll geben, dem die Kamera folgen muss, damit diese Schemata funktionieren, denke ich?
@gururaj - es wäre wahrscheinlich produktiver, sich auf die Einschränkungen der Anwendung zu konzentrieren, und ja, vieles hängt von der Ausgabe der Kamera ab. Wenn es analog mit Sync-Signalen ist, würde eine einfache HF-Modulation, dh "Fernsehen", wenig Schaltungsaufwand erfordern (Digitalisierung am Empfänger). In einem kleinen Bereich benötigen Sie wahrscheinlich überhaupt keine HF-Verstärkung am Sender, obwohl Stromverbrauch und Wärme ein Problem darstellen können.
Verwenden Sie kein UWB. Benutze WLAN. Uwb ist ein toter Standard und höchstwahrscheinlich werden die Uwb-Unternehmen ihr Geschäft aufgeben. Am Ende werden Sie wieder mit WLAN designen. Schauen Sie sich wiced mit stm32 an, es hat alles, was Sie brauchen, einschließlich ADC-WLAN und Spi usw.

Antworten (2)

Ich weiß nicht, was Sie mit "UWB" meinen (verwenden Sie Standard- oder gebräuchliche Abkürzungen, nein, ich werde es nicht nachschlagen, es ist Ihre Aufgabe, es zu erklären), aber viele, viele Mikros haben 10-Bit-A / Ds und SPI-Hardware . Auch ohne die SPI-Hardware ist SPI einfach in der Firmware zu realisieren, indem die I/O-Leitungen direkt gesteuert werden.

Im Microchip-Sortiment gibt es ein breites Spektrum, das diese Anforderungen erfüllt. Ein Low-End-PIC 16 kann klein, billig und sehr stromsparend sein. Ein schneller dsPIC33 kann bis zu 40 MIPS laufen, verbraucht aber natürlich mehr Strom. Dazwischen liegen verschiedene PIC 18 und PIC 24.

Was Sie erklären müssen, ist, wie schnell Sie die 10-Bit-A / D abtasten müssen und was das Mikro mit diesen 10-Bit-Werten tun muss, bevor Sie sie über SPI weitergeben.

Diese "Antwort" ist eher ein Kommentar, weil zu viele wichtige Informationen fehlen. Es kann zu einer Antwort werden, wenn Sie kooperieren und die gestellten spezifischen Fragen beantworten , nicht das, was Sie gerne beantworten möchten oder was Sie für wichtig halten. So wie es aussieht, ist diese Frage zu vage, um vernünftig beantwortet zu werden, und sollte geschlossen werden. Die Leute werden vorbeikommen und es schließen, wenn sie darauf stoßen. Wenn 5 enge Stimmen abgegeben werden, ist es vorbei. Die Uhr tickt. Möglicherweise haben Sie nur Minuten bis einige Stunden Zeit. Tun Sie, was ich gesagt habe, genau so, wie ich es schnell gesagt habe, und Sie erhalten vielleicht Ihre Antwort. Ignoriere es und kooperiere nicht und du wirst ohne Keks nach Hause geschickt.

Hinzugefügt:

Sie haben nun hinzugefügt, dass die A/D-Samplerate 500 kHz beträgt und dass diese A/D-Rohdaten per SPI weitergegeben werden sollen. Da A/D 10 Bit beträgt, haben Sie hier anscheinend die SPI-Datenanforderung von 5 Mb/s erhalten.

Dies ist machbar, erfordert jedoch ein einigermaßen hochwertiges Mikro. Der limitierende Faktor ist der 10 Bit A/D bei 500 kHz Samplerate. Das ist für ein Mikro ziemlich schnell, was die verfügbaren Optionen einschränkt. Eine andere zu berücksichtigende Sache ist, dass SPI mehr ist, als nur die Bits zu senden. Bytes müssen möglicherweise in Chunks übertragen werden, wobei die Chipauswahl pro Chunk aktiviert und deaktiviert wird. Wie werden beispielsweise diese 10-Bit-Daten in 8-Bit-Bytes gepackt oder überhaupt?

Die Hauptbetriebsschleife der Firmware wird recht einfach sein. Wahrscheinlich haben Sie den A/D so eingerichtet, dass er automatische periodische Konvertierungen durchführt und alle 2 µs mit einem neuen Wert unterbricht. Jetzt haben Sie die meisten von 2µs, um es an den SPI zu senden. Wenn das Gerät wirklich nur einen Strom von Bits akzeptieren kann, ist es möglicherweise einfacher, die SPI in der Firmware auszuführen. Die meiste SPI-Hardware möchte 8 oder 16 Bits gleichzeitig senden. Sie müssten Bits puffern und ein 16-Bit-Wort 5 von jeweils 8 Interrupts senden. Es könnte einfacher sein, nur 10 Bits pro Interrupt in der Firmware zu senden.

Das Senden von SPI-Bits in der Firmware, wenn Sie nur die Uhr und die Datenausgabe steuern müssen, ist ziemlich einfach. Pro Bit müssen Sie:

  1. Bitwert in Datenleitung schreiben.

  2. Uhr erhöhen

  3. Untere Uhr

Es wäre sinnvoll, diese Schleife mit Präprozessorlogik oder so zu entrollen. Ein PIC 24H kann mit bis zu 40 MIPS laufen, sodass Sie 80 Anweisungen pro Interrupt haben. Offensichtlich können Sie nicht 8 Anweisungen verwenden, um jedes Bit zu senden. Wenn Sie es in 6 tun können, sollte es funktionieren. Es gibt etwas Overhead, um in jeden Interrupt hinein- und herauszukommen, also könnten Sie das Ganze zu einer Abfrageschleife machen, die auf den A/D wartet, aber dann kann der Prozessor nichts anderes tun. Ich würde wahrscheinlich versuchen, dies mit jedem möglichen Trick in die A / D-Interrupt-Routine zu stopfen, damit mindestens ein paar Vordergrundzyklen für Hintergrundaufgaben übrig bleiben, z. B. um zu wissen, wann man aufhören muss usw.

Schauen Sie sich die Microchip PIC 24H-Linie an. Ich denke, die meisten, wenn nicht alle, haben A/Ds, die 500 kbit/s können, und sie können alle mindestens bis zu 40 MIPS laufen. Die neue E-Serie ist noch schneller, aber ich bin mir noch nicht sicher, wie real das ist.

Entschuldigung, wenn meiner Frage Informationen fehlten. Ich bin Neuling, bitte haben Sie Geduld mit mir. UWB ist eine Abkürzung für Ultra Wide Band. Es ist eine Technologie zur drahtlosen Kommunikation. Ich dachte nicht, dass die Funktionsweise dieses Chips hier relevant ist, und ging daher nicht näher darauf ein. Der UWB-Chip benötigt Daten (die Daten, die ich drahtlos weitersenden möchte. Die oben genannten Chips unterstützen Datenraten von bis zu 480 Mbit / s), die entweder über SPI oder USB 2.0 an ihn gesendet werden. Der 10-Bit-ADC müsste etwa 5 * 10 ^ 5 Mal pro Sekunde abtasten. Hoffe das beantwortet deine Fragen.
Danke für die ausführliche Antwort. Es hat vieles klarer gemacht. Ich muss prüfen, ob der UWB-Chip nur 8-Bit / 16-Bit-Wörter oder direkt einen Bitstream akzeptiert. Können Sie mir ungefähr sagen, wie viel Strom ein PIC24H verbrauchen würde, wenn ich einen Timer verwende, um Interrupts an den Adc zu senden und dann Daten in Stücke von 8/16 Bits zu zerlegen und sie durch Spi-Hardware zu senden?
@gururaj: Die Leistungsanforderungen jedes PIC24 unter verschiedenen Bedingungen sind in ihren Datenblättern gut beschrieben.
An alle, die dies abgelehnt haben: Es wäre hilfreich, wenn Sie erklären würden, was genau Ihrer Meinung nach falsch ist.
@Olin: Während alles unter "Hinzugefügt:" hilfreich ist, ist der obige Text nicht hilfreich. Man muss sich durch 4 Absätze Rauschen wühlen, um zu den eigentlichen Informationen zu gelangen. Bitte bearbeiten und löschen Sie, anstatt einfach mehr (noch besseren) Text hinzuzufügen. Wenn die Dinge (Frage und Antwort) schlecht beginnen, besteht keine Notwendigkeit, die schlechten Dinge nach der Verbesserung zu behalten. Es scheint, als hättest du es nur dort gelassen, um einen Punkt hervorzuheben, der für zukünftige Leser dieses Threads nutzlos und ärgerlich ist. Bitte denken Sie daran, dass ein Teil der Größe von SE in seiner Wiki-Natur liegt, dh Bearbeitung und Verbesserung anstelle von Flammenkriegen.
-1, weil die Tatsache, dass Sie nicht wissen, wofür UWB steht, für die Beantwortung der Frage irrelevant ist.
@ThePh: Der Punkt ist, dass die Leute keine Abkürzungen herumwerfen sollten, es sei denn, sie sind außergewöhnlich häufig und universell. Wir sehen dieses Problem hier häufig, daher ist es nützlich, es gelegentlich zu erwähnen, nicht nur, um das OP dazu zu bringen, Dinge zu reparieren, sondern auch, damit andere sehen, dass diese Art von Schlamperei oder Arroganz davon ablenken kann, das gewünschte Ergebnis zu erzielen. Und nein, es war nicht offensichtlich, dass Details von "UWB" nicht wichtig waren, bis es besser erklärt wurde. Genau das ist der Punkt.
@OlinLathrop UWB-Kommunikation ist eine bekannte Sache, genau wie die CMOS-Logik eine bekannte Sache ist. Dass Sie in diesem Bereich nicht arbeiten, ändert daran nichts. Erwarten Sie, dass jeder jedes Mal „kostenloser Metall-Oxid-Halbleiter“ schreibt, wenn er über CMOS sprechen möchte?
@TheP: UWB mag bekannt sein, aber die Abkürzung ist alles andere als üblich. Es mag in einer bestimmten Nische bekannt sein, aber das ist wieder der Punkt. "CMOS" ist eine dieser weithin bekannten Abkürzungen, die in den meisten (aber nicht allen) Kontexten hier in Ordnung wären. UWB ist nicht in der gleichen Klasse wie CMOS, nicht einmal annähernd.
OK, UWB ist eine bekannte Sache, wie GSM oder TDMA eine bekannte Sache ist.

Wow. 500.000 Samples/s (aka 500 kSamples/s) bei 10 Bit Auflösung sind ziemlich schnell. Ich vermute, dass jeder Prozessor, der über einen ADC verfügt, der dies kann, die erforderliche SPI-Datenverarbeitung problemlos bewältigen kann. SPI ist eine perfekte Wahl für die Übertragung mit dieser Datenrate über ein paar Zentimeter.

eigenständige ADCs

Gibt es einen Grund, für diese Anwendung keinen eigenständigen ADC zu verwenden? (Diese SPI-ADC-Chips erfordern einen anderen Chip, um als SPI-Master zu fungieren. Wenn Ihr UWB-Chip nicht als SPI-Master eingerichtet werden kann, funktioniert keiner dieser Chips damit – fahren Sie mit dem nächsten Abschnitt fort). Es ist ziemlich einfach, das parametrische Auswahlwerkzeug bei Newark oder Digikey zu verwenden, um "mindestens 5.000.000 Samples/Sekunde" UND "mindestens 10 Bits/Sample" UND "SPI" auszuwählen. Die Ergebnisse umfassen Dutzende von Chips wie z

  • Linear Technology LTC1197LCS8#PBF: ADC, 10BIT, 500kSPS, SOIC-8, SPI
  • National Semiconductor ADC101S051CIMF: ADC, 10BIT, 500kSPS, SOT-23-6, SPI
  • Texas Instruments ADS7884SDBVT: ADC, 10BIT, 3MSPS, SOT-23-6, SPI
  • National Semiconductor ADC124S101CIMM : ADC, 12BIT, 1MS/s, MSOP-10, SPI
  • National Semiconductor ADC122S101CIMM: ADC, 12BIT, 1MS/s, MSOP-8, SPI

Ein eigenständiger ADC ist kleiner und konzeptionell einfacher und verbraucht wahrscheinlich weniger Strom als ein Prozessor mit eingebautem ADC.

Prozessoren

Es gibt einige Prozessoren, die 500.000 Samples/Sekunde bei 10 Bit/Sample verarbeiten können. Leider machen es die parametrischen Auswahlwerkzeuge nicht einfach, diejenigen herauszufiltern, die diese Anforderung erfüllen, aus der überwiegenden Mehrheit oder Prozessoren, die diese Spezifikationen nicht ganz erfüllen.

  • Alle Chips der 8-Bit-AVR-Atmel-Xmega-AU-Serie, wie der ATxmega128A4U, können mit 2.000.000 Samples/Sekunde bei einer 12-Bit-Auflösung abtasten.
  • Viele in der "32-Bit-AVR" Atmel AT32UC3C-Serie, wie der AT32UC3C0512C, können mit bis zu 1.500.000 Samples/Sekunde bei einer 12-Bit-Auflösung abtasten.
  • Viele in der 32-Bit-ARM-NXP-LPC-Serie, wie der LPC1347FBD48, können mit 500.000 Samples/Sekunde bei einer Auflösung von 12 Bit abtasten.
  • Viele Chips in der 32-Bit-ARM-Cortex-M3-Atmel-SAM3S-Serie, wie z. B. der SAM3S1A, führen Cam-Samples mit 1.000.000 Samples/Sekunde bei einer Auflösung von 12 Bit aus.
  • Viele Chips der 16-Bit-Reihen dsPIC und PIC24 von Microchip, wie z. B. der PIC24FJ64GB002, können mit 500.000 Abtastungen/Sekunde bei einer Auflösung von 10 Bit abtasten.

Videosender

Die drahtlose Videoübertragung ist mehr oder weniger ein gelöstes Problem. Vielleicht können Sie mit einem handelsüblichen "winzigen Videosender" und einem passenden Empfänger etwas Wochen früher zum Laufen bringen, sodass Sie sich auf die Teile Ihres Projekts konzentrieren können, die keine "gelösten Probleme" sind. Später, nachdem der Rest des Systems zu arbeiten beginnt, könnten Sie damit experimentieren, ein Videoaufnahme-/Übertragungssystem zu bauen, das weniger Leistung hat oder auf andere Weise besser ist.