Ich bin nur ein Enthusiast, der Rat sucht.
Ich möchte einen Mikrocontroller verwenden, um Frames von einer Kamera zu lesen und diese Frames auf einen kleinen LCD-Bildschirm zu schreiben. Die Kamera und der Bildschirm befinden sich auf demselben SPI-Bus. Ich habe mit einem Arduino Prototypen entwickelt, möchte aber irgendwann zu einem AVR wechseln.
Das Problem ist, dass ein Bildrahmen 9600 Byte groß ist und der Arduino SRAM 2,5 KB groß ist. Ich kann keinen ganzen Frame puffern. Ich habe versucht, von der Kamera zu lesen und jeweils ein paar Zeilen auf den Bildschirm zu schreiben, aber da sie sich auf demselben SPI-Bus befinden, muss ich die Kamera deaktivieren, den Bildschirm aktivieren und dann die Kamera erneut aktivieren. Wenn Sie das Mittelbild der Kamera deaktivieren, verlieren Sie die Synchronisierung.
Ich muss einen Weg finden, 9600 Bytes von der Kamera auf den Bildschirm zu bekommen, ohne die Kamera zu deaktivieren. Scheint, als hätte ich 2 Möglichkeiten: SRAM erhöhen, um einen Frame oder separate SPI-Busse zu puffern.
SRAM erhöhen:
Separate SPI-Busse:
Etwas anderes?
Danke!
Etwas anderes (irgendwie):
Mehrere der ATmega-Geräte können ihre USART(s) neu konfigurieren, um als SPI-Master zu fungieren. Schließen Sie einfach eines der Geräte an eines dieser neu konfigurierten Peripheriegeräte an. Suchen Sie im Datenblatt nach „USART im SPI-Modus“ oder „MSPIM“.
Probieren Sie ein STM32F4Discovery- Board aus; 15-25 US-Dollar. Die MCU ist ein STM32F407VG: 168 MHz ARM Cortex-M4, 1 MB Flash, 192 kB RAM, 3 SPI-Ports und DMA, mit dem Sie beispielsweise mit minimaler Prozessorbeteiligung von einem SPI-Port zu einem anderen streamen können. Der Discovery verfügt über einen eingebauten SWD-Programmierer/Debugger, sodass keine zusätzliche Hardware erforderlich ist; Probieren Sie CooCox für eine kostenlose und unbegrenzte IDE aus.
Der meiste externe RAM ist SPI, der unter dem gleichen Dual-Bus-Problem leidet, das Sie bereits haben. Das heißt nicht, dass es unmöglich ist, es zu verwenden.
Ein cleverer Weg wäre, den Datenausgang der Kamera mit dem Dateneingang eines SPI-SRAM-Chips zu verbinden und den SRAM-Chip zur direkten Erfassung der Bilddaten zu verwenden. Sie können dann nach Belieben auf jeden Teil des zuletzt empfangenen Frames zugreifen. Es würde jedoch eine gewisse Menge an schlauen externen Schaltungen erfordern, um den Dateneingang zwischen der Kamera und Ihrer MCU zu teilen, da sie nicht beide gleichzeitig verbunden werden können und Sie möglicherweise auch direkt von der Kamera empfangen müssen einrichten und Status prüfen usw. (abhängig von der Kamera natürlich).
Eine einfachere Methode wäre, einfach eine größere MCU zu verwenden.
PIC32-basierte Boards wären in dieser Situation eine gute Alternative für die Arduino-Boards. So etwas wie ein ChipKIT uC32 würde Ihnen 32 KB RAM und mehrere SPI-Ports geben, sodass Sie sowohl einen ganzen Frame puffern als auch separate SPI-Ports verwenden können. Außerdem sind es 32 Bit und 80 MHz, sodass Sie Ihre Daten viel schneller verarbeiten können.
Es gibt auch PIC32-Boards, die 28-Pin-DIP-Chips verwenden (z. B. das DP32, das einen PIC32MX150-Chip verwendet), was besser für das Prototyping geeignet ist.
Die IDE (MPIDE) und die Sprache sind fast identisch mit Arduino, nein, nichts (viel) Neues zu lernen.
Benutzer253751
Markt
Adam Griffin
Markt