Ich versuche, Daten von einem I2C-verbundenen Berührungssensor zu lesen. Genauer gesagt der Azotec IQS266 . Ich habe vor, alle Einstellungen so vorzuprogrammieren, wie ich sie haben möchte, und sie danach nicht mehr anzufassen. Darüber hinaus gibt es wirklich nur einen Speicher, an dem ich interessiert bin, die Gesteninformationen des Trackpads bei TP_FLAGS (0x02, Offset 0).
Das bringt mich zu der Frage: Wie könnte ich eine einzelne Speicheradresse eines einzelnen Geräts auf einer I2C-Leitung ohne die Verwendung eines Mikrocontrollers überwachen? Nehmen wir zum Beispiel an, ich wollte 8 LEDs entsprechend den 8 Bits an Informationen aufleuchten lassen, die an dieser Adresse gespeichert sind, wenn das Azotec-Gerät ein Bereitschaftssignal erzeugt.
Ich stimme zu, dass ein Mikrocontroller am sinnvollsten wäre, aber es gibt einige Fälle, in denen Sie ihre Verwendung vielleicht lieber vermeiden würden. Bestimmte Aufsichtsbehörden werden schwieriger zu handhaben, wenn Sie „Software“ in ein Design einführen, und es kann vorteilhaft sein, einfache Daten von einem I2C-fähigen Gerät mit einem eher „hardwarebasierten“ Ansatz zu erhalten. Ist es möglich, ein I2C-Gerät auf eine bestimmte Adresse zu überwachen und seine Informationen im Wesentlichen in eine parallele GPO-Ausgabe umzuwandeln?
Ich bin mir nicht sicher, ob es ein vorhandenes Produkt gibt, das das tut, was Sie wollen. Wenn Sie eine benutzerdefinierte Lösung entwerfen möchten, könnten einige Optionen Folgendes umfassen:
Verwenden Sie programmierbare Logik wie ein kleines CPLD, um die I2C-Schnittstelle zu implementieren, und lassen Sie eine Zustandsmaschine die Busaktivität verfolgen, um die gewünschten Daten zu erfassen.
Wie Nr. 1, aber verwenden Sie einen dedizierten Chip wie den PCA8584 (I2C zu paralleler Brücke), um die schwere Arbeit für das I2C-Protokoll zu übernehmen, und lassen Sie ein CPLD die Aktivitätsüberwachung auf höherer Ebene übernehmen. Dieser Chip hat einen Snoop-Modus, in dem er garantiert nichts auf dem I2C-Bus treibt und ihn zerstörungsfrei überwacht.
Verwenden Sie einen Mikrocontroller mit einem ähnlichen I2C-Snoop-Modus wie den LPC1769. Ich weiß nicht, ob die Implementierung dieser Funktionalität in Hardware (auf dem Chip) es Ihnen ermöglichen würde, die Vorschriften über Software zu umgehen, da ein Softwarefehler sie aus dem Snoop-Modus herausnehmen und fehlerhaften I2C-Verkehr einführen könnte. Das ist also ein bisschen weit hergeholt.
Deine reine Hardwarelösung ist: 1 Eprom SST39VF010, 1x 74HC4060, 1x 74HC4094. 2xR, 2xC. Kosten ~ 1 $ Die Eprom-Pins sind SDA, SCL, CLK4094, RST4094 . 4094-Daten verbinden sich mit SDA. Der Bitstream, der Ihren Azotec liest, wird im Flash gespeichert und vom 4060-Zähler in einer Endlosschleife ausgetaktet. Wenn die Azotec-Daten ausgelesen werden, werden sie in den 4094 getaktet. Der Bitstrom benötigt 20-30 Bytes pro I2C-Byte, geschätzte 256 Bytes.
(Silego Greenpak Mixed Logic + SPI-Speicher könnte eine 2-Chip-Lösung sein).
Das Azotec-Produkt selbst ist höchstwahrscheinlich etwas mit interner Firmware, wie die meisten komplexen I2C-Slave-Geräte, sodass Ihre zugrunde liegende Idee etwas strittig wird.
Ein Mittelweg besteht darin, ein kleines Mikro genau wie Eprom + Zähler zu verwenden, aber anstatt programmgesteuert zu lesen und zu schreiben, geben Sie einfach seriell einen Steuerbitstrom aus, der das tut, was Sie wollen. Das Mikroprogramm wird zu einer einfachen Dump-Schleife, vielleicht nur 20 Wörter lang. Es kann mit einer zyklomatischen Komplexität von 1 unter Verwendung eines externen LED-Schieberegisters oder 2 (vielleicht 1) implementiert werden, wenn LEDs vom Mikro angesteuert werden, und kann formal als korrekt bewiesen werden. Der Bitstrom ist eine unveränderliche gespeicherte Sequenz ohne Verzweigungen und kann daher durch erschöpfendes Testen der einen möglichen Sequenz als richtig bewiesen werden.
Unser Produkt BL233C ist in der Lage, ein eigenständiger I2C-Redirector zu sein, um zu tun, was Sie wollen, einen I2C-Sensor zu lesen, ihn minimal zu verarbeiten und auf ein anderes I2C-Anzeigegerät zu schreiben.
Es hat natürlich auch eine zugrunde liegende Firmware, aber wie der Sensor kann es einem Rezensenten als zuverlässiger Chip erscheinen (na ja, das ist es natürlich) und nicht als Softwaresystem. Dies ist nicht unvernünftig - Spezialisten wie wir und Azotech sollten über ausgereiftere und daher besser debuggte Produkte verfügen, als es Ihr eigenes Programm bei der erstmaligen Bereitstellung sein würde.
wenn Sie „Software“ in ein Design einführen
Software: Ein Programm, das von einem Prozessor interpretiert wird.
Was Sie brauchen, ist Folgendes:
Schlechte Nachrichten: Das ist ein programmatischer Ablauf, und wir haben festgestellt, dass es sich um ein Programm handelt, indem wir einfach die Spezifikationen dessen aufgeschrieben haben, was Sie wollen. Sie müssen sich mit Software befassen, egal was passiert.
Wenn Sie beispielsweise Folgendes implementiert haben:
Zyklus in logischer Hardware, herzlichen Glückwunsch, Sie haben einen sehr anwendungsspezifischen Prozessor gebaut, der ein vierstufiges Programm ausführt.
Es ist wirklich der Punkt, an dem Sie sagen, dass dies ein Job für einen Mikrocontroller ist. Und wirklich, was denkst du, wie viele Prozessorkerne sind in diesem Touchpad? Ich würde davon ausgehen, dass es mindestens einer ist, aber wenn ich einen entwerfen müsste, wären es tatsächlich zwei verbundene Mikrocontroller. Also, wenn Ihre Aufsichtsbehörde ein Problem mit Mikrocontrollern hat: Pech gehabt.
Die hardwarebasierte Lösung für Ihre kleine I2C-Steuersequenz wird als "nichtflüchtiges FPGA" oder ein gutes CPLD bezeichnet. Sie entwerfen einen seriellen Konverter in einem beliebigen VHDL, weisen/konfigurieren einen Teil des Speichers innerhalb von CPLD und erstellen einen kleinen Sequenzer, um die Bytes aus Ihren vordefinierten I2C-Daten auszuführen. Alles ist eine vorkompilierte Zustandsmaschine, keine Software.
Wenn eine nicht autorisierte Umprogrammierbarkeit im Vordergrund steht, kann ein ROM-basiertes FSM eine Lösung sein.
Die Alternative zu "Software" in einem Digitalen ist eine endliche Zustandsmaschine. Dies wurde hier diskutiert . Wenn Sie sowohl Software als auch FSM wirklich vermeiden möchten, müssen Sie vollständig analog vorgehen (z. B. LM3914 zum Ansteuern der LEDs).
danmcb
Benutzer253751
krass
Benutzer253751
Chris Stratton
Brandon
Nick Alexejew
Chris Stratton
Brandon
Chris Stratton
Brandon
Chris Stratton
Brandon
Chris Stratton
Brandon
Chris Stratton
Brandon
Chris Stratton
Brandon
Chris Stratton
Brandon
Andreja Ko