Forum: Mikrocontroller und Digitale Elektronik rpi - bitfolge und takt an gpio ausgeben


von Norbert S. (norproz)


Lesenswert?

hallo zusammen

ich habe hier ein tunermodul von philips und will das per rpi 
ansteuern... ein 24-bit muster, 300 baud, sind dafür erforderlich. für 
die bandwahl, die frequenz, den sendersuchlauf etc...

http://pdf.datasheetcatalog.com/datasheet/philips/TEA5762H.pdf

ich googelte mich wie blöd durchs netz, wie man die gpio's so 
programmieren kann (py) dass nicht nur ein bit (setzen h/l) gesetzt wird 
sondern auf einem port das muster und auf dem andern den clock parallel 
dazu ausgegeben wird.

terminalprogrammsender über die "normale" seriellfunktion hab ich zig 
gefunden, aber da nicht zahlen oder buchstaben gesendet werden müssen, 
fällt das wohl weg.

suche ich falsch oder ist mein ansatz über 2 gpio's die steuerun zu 
übernehmen falsch? müsste ich noch ein schieberegister 
dazwischenschalten? nicht wirklich, oder?

danke für einen kleinen hinweis, wie ich das am besten anstelle.

von S. R. (svenska)


Lesenswert?

Man kann über eine serielle Schnittstelle auch Binärdaten übertragen.

Wenn du einen Pin high/low setzen kannst, dann kannst du auch mehrere 
Pins high/low setzen (und nein, es muss nicht exakt gleichzeitig sein). 
Und wenn du mehrere Pins high/low setzen kannst, dann kannst du das auch 
mehrmals hintereinander machen.

Nur mit dem Timing musst du aufpassen.

von S. R. (svenska)


Lesenswert?

Das Timing ist unkritisch, solange du unterhalb von 300 kHz bleibst.
Du brauchst 3 GPIOs: WRITE-ENABLE, BUS-CLOCK und DATA.
DATA ist bidirektional, also musst du den GPIO sowohl lesen als auch 
schreiben können.

von Norbert S. (norproz)


Lesenswert?

den enable hätt ich fast vergessen :) - danke.

das timing ist ja nur insofern unkritisch, wenn es so ist, dass das 
clock-signal high ist, wenn das datenbit gültig ist... es fühlt sich 
etwas umständlich an. also müsste ich enable setzen, das erste bit 
setzen, den clock-puls ausgeben, das zweite bit setzen, den clock 
ausgeben... und das bis das ganze telegramm durch ist?

der ansatz über die serielle... da es glaubs kein serial.TWENTYFIVEBITS 
gibt, könnte es dank start- und stopbit auch verwirrend sein für den 
armen tuner.

von S. R. (svenska)


Lesenswert?

Ja. Synchrone Übertragung läuft immer so:
- Clock inaktiv
- Data setzen
- Clock aktiv
- Warten
- ...wieder von vorne...

Wenn man das in Hardware gießt, übernimmt man die Daten üblicherweise 
mit der Taktflanke (nicht mit dem Taktwert), und dann kann man das ein 
Stück weit überlappen. Je nachdem, welche Flanken mit welcher Polarität 
ausgewertet werden, ergeben sich daraus die bekannten 4 SPI-Modi. ;-)

Dein Chip spricht nicht UART, der spricht in etwa SPI. Das ist synchron, 
da gibt's keine Start- oder Stopbits.

Und ich bin mir relativ sicher, dass man dem Chip auch einfach 32 Bit 
entnehmen kann (dann kommen die bekannten 25 Bit plus ein bisschen 
Müll), bzw. auch einfach 32 Bit hinschicken kann. Sonst könnte man mit 
einem handelsüblichen Controller keine SPI-Hardware benutzen - was nicht 
im Sinne des Entwicklers ist.

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.