Forum: Mikrocontroller und Digitale Elektronik ADF4351: offenes Interface mit AVR zum PC über Serial/USB


von ADF Tester (Gast)


Angehängte Dateien:

Lesenswert?

Hier mein Implementierungs-Vorschlag eines Protokolls zur Steuerung
eines ADF4351 oder anderer Synthesizer-Bausteine.

Ein Windows-Programm zum Steuern des Bausteins aufbauend auf diesem
Protokoll folgt in Kürze.

Sinn des Ganzen ist es ein spezielles Interface für den ADF4351 usw.
zu vermeiden und gängige Controller für den Selbstbau verwenden zu
können. Prinzipiell lässt sich aufgrund der schlanken und
übersichtlichen Implementierung jeder kleine AVR Controller mit ein
paar Kilobytes an Flash verwenden. Auch der RAM Verbrauch ist
gering. Die Steuerung erfolgt ganz einfach über eine serielle
Schnittstelle (native oder Virtual Com Port über USB) die ja bei den
meisten AVR Controllern vorhanden ist.

Das Protokoll ist für viele Synthesizer-Bausteine von Analog Devices
(auch Hittite) geeignet, die erforderliche Registerbreite ist für
einen Baustein immer konstant und leicht an andere Gegebenheiten
anpassbar.

Ich habe die beiliegenden Sourcen als AVR Studio Projekt angelegt
und für die beiden naheliegenden Arduino-Controller ATMega328 und
ATMega2560 vorbereitet. Ein Arduino Micro oder Nano ist natürlich
auch verwendbar. Die Anpassungen an andere Controller wie ATMega88,
ATMega168 oder ATMega644 usw. sind leicht durchführbar, es müssen
nur Defines bzw. Macros für die Port-Bits angepasst werden. Die
Pinbelegung ist aus der Source <spi_soft.c> zu entnehmen. Der
Einfachheit halber habe ich alle fünf erforderlichen Bits auf einen
einzigen Port gelegt. Das lässt sich durch geringfügige Definitions-
Erweiterungen auch auf mehrere Ports ändern.

Die Kompaktheit der Implementierung auf dem Controller bedingt
natürlich Intelligenz auf der anderen Seite der seriellen Leitung.
Alle Operationen zum Setzen eines Synthesizer- Registers müssen
berechnet oder anderweitig (Register- Datensatz) zur Verfügung
gestellt werden. Dafür besteht für den User die Freiheit sein (für
seine Bedürfnisse passendes) eigenes Steuerprogramm zu verwenden
bzw. zu schreiben. Man muss nur auf einen seriellen Port schreiben
und davon lesen können. Die Baudrate die vereinbart sein muss habe
ich mal auf moderate 57600 Baus festgelegt, bei höheren Baudraten
schien die Kommunikation aufgrund von zu grossen Toleranzen der
Keramik-Resonatoren nicht mehr zuverlässig zu funktionieren.

Erläuterung zum Protokoll:

Ein 32 Bit-Steuerwort für den ADF4351 wird in 4 Bytes aufgeteilt und
in acht Daten-Nibbles inklusive Start- und Stop- Byte (Frame-
Delimiter) über die serielle Leitung geschickt.

--------------------------------------------------------------
Datenübertragung eines ADF4351 Registerwortes (32 Bit)
über serielle Leitung (MSByte first)

           Beispiel ADF Steuerwort: 0x12345678
------------------------------------------------------------
          0x12        0x34        0x56        0x78
           /  \        /  \        /  \        /  \
0xFE   0xA1 0xA2   0xA3 0xA4   0xA5 0xA6   0xA7 0xA8  0xFD

Start  Byte Byte   Byte Byte   Byte Byte   Byte Byte  End
Byte   high low    high low    high low    high low   Byte
--------------------------------------------------------------
Auf diese Weise haben Nutzbytes und Frame Delimiter immer
unterschiedliche Werte und sind damit eindeutig zu erkennen.

Zur Schnittstelle zum ADF4351 bliebe noch zu sagen dass es für
5Volt-AVR-Controller Pegelwandler braucht damit der Baustein nicht
überfahren wird. Wenn man von Haus aus einen AVR Controller mit 3.3V
betreibt entfällt der Aufwand dafür.

von ADF Tester (Gast)


Lesenswert?

Hier ein Programm zur Steuerung des ADF4351 über oben
beschriebenes Interface

Beitrag "ADF4351 Windows Applikation"

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
Noch kein Account? Hier anmelden.