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