Forum: Mikrocontroller und Digitale Elektronik USB to synchronous serial


von T. F. (sar)


Lesenswert?

Hi,

Ich bin auf der Suche nach einem USB to synchronous-serial converter IC. 
Diverse von FTDI oder SiLabs habe ich mir schon angeschaut, scheinen 
aber synchronous serial (mit 1 start, 8 daten, 1 stop bit) nicht direkt 
zu unterstützen. MIt Bit-Banging wäre es wohl möglich.

Bis jetzt wäre mir sonst noch nur ein uC mit USB und USART eingefallen 
wie der ATMega8U2 und co.

Das schöne an den fertigen ICs ist, dass man Treiber & Libraries gleich 
mitgeliefert bekommt.

Danke,
Stefan

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> synchronous serial (mit 1 start, 8 daten, 1 stop bit)

Bist Du Dir sicher? Wozu braucht eine synchrone serielle Übertragung 
Start- und Stopbits?

Was ist das Gegenstück, das diese Vorgaben macht?

von T. F. (sar)


Lesenswert?


von Reinhard Kern (Gast)


Lesenswert?

Stefan S. schrieb:
> MIt Bit-Banging wäre es wohl möglich.

Nein, jedenfalls nicht sinnvoll - dann müsste man ja TxD statt vom 
Schieberegister mit einem Befehl für jedes Bit zeitsynchron setzen. Im 
Windows-API für serielle Schnittstellen ist auch keine synchrone 
Übertragung spezifiziert, die Schnittstelle kann also nicht als COMx 
angesprochen werden, also auch nicht von Standard-Treibern. Ausserdem 
sind synchrone Übertragungen wie HDLC oder SDLC lange ausgestorben, 
wahrscheinlich macht sich niemand die Mühe, vorhandene DOS-Software 
umzuschreiben.

Ich habe zwar in einem Prozessorsystem noch einen Zilog-Chip, der alles 
für Synchron beherrscht (Clock Regeneration, Protokolle, 
Manchester-Encoding usw.), aber ich bestücke ihn garnicht mehr, er wurde 
auch immer nur asynchron benutzt.

Gruss Reinhard

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist bizarr. Letztlich ist das eine 10-Bit-SPI-Übertragung, bei der 
das oberste und unterste Bit dazugereimt/nach Empfang verworfen werden 
müssen.

Da bietet sich ein separater µC an, der das per Bitbanging erledigt, und 
entweder als CDC per V-USB oder über eine separate USB-Seriell-Bridge 
mit dem Host-PC verbunden wird (und in beiden Fällen nur die normalen 
Nutzdaten überträgt, so wie es eine normale asynchrone serielle 
Schnittstelle auch tut).

von tt2t (Gast)


Lesenswert?

Der TSL3301CL hat tatsächlich eine 10-bit-SPI Schnittstelle 
(Start-8xDaten-Stop auf der positiven Flanke). Geeignet wäre z.B. einer 
der zahllosen USB-µCs, z.B. CY7C68013A, da gibt es fertige Eval-Boards 
für wenig Geld 
http://dx.com/p/d1201-ez-usb-fx2lp-cy7c68013a-usb-development-board-blue-179473

von Reinhard Kern (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Da bietet sich ein separater µC an, der das per Bitbanging erledigt

Bei 10 MHz SClk hat der aber ganz schön zu tun. Das schaffen ja nicht 
mal die verfügbaren Spezial-ICs, und einen optischen Sensor kann man 
auch nicht sinnvollerweise viel langsamer auslesen. Wenn man wirklich 
die 10 MHz braucht, dann läuft das wohl auf eine eigene USART-ähnliche 
Implementierung in FPGA hinaus. Viel Spass dabei. BTW DMA sollte man 
auch benutzen.

Gruss Reinhard

von T. F. (sar)


Lesenswert?

O.k. dann sage ich mal Danke für die Anregungen.

Ich denke dann bleibe ich für einen ersten Test bei einem AVR mit USB 
(ATMega8U2 ,16U2, 32U2). Deren USART (man beachte das S) kann synchron 
zumindest bis ca. 1MBPS.

Über USB kann ich dann ja per CDC oder HDI die Kommunikation machen.

Danke

von tt2t (Gast)


Lesenswert?

Da wird der Cypress zu langsam. Microchip hat da einige USB-Kandidaten, 
auch in der 16-bit-Reihe, die wären wohl schnell genug 
http://www.microchip.com/pagehandler/en-us/technology/usb/products/devicemcus.html

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Deren USART (man beachte das S) kann synchron
> zumindest bis ca. 1MBPS.

Ja, das ist dann SPI. Aber ohne Start- und Stopbits, sondern mit nur 8 
Datenbits.

von T. F. (sar)


Lesenswert?

@Rufus: Lese ich das Datenblatt falsch? Ich sehe da man kann die USART 
synchron, asynchron oder im SPI Modus betreiben. Im synchronen Modus 
wird der XCK Pin als Clock verwendet und man kann die möglichen 
Kombinationen für Start/Stop/Partity usw wie bei normaler UART 
verwenden.

von Christian R. (supachris)


Lesenswert?

Da kannst du auch einen der FTDI Chips mit der MPSSE nehmen, die können 
SPI mit beliebiger Bit-Länge. Hab ich letztens selber erst programmiert, 
mit LibMPSSE und einem FT2232H das OM5610 Radio-Modul beschreiben, das 
hat nämlich eine 25 Bit SPI. Achnee, 3-Wire, damals gabs ja noch den 
Philips-Motorola Glaubenskrieg.
Also FTDI Chip mit MPSSE nehmen und am einfachsten über LibMPSSE 
programmieren.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Im synchronen Modus
> wird der XCK Pin als Clock verwendet und man kann die möglichen
> Kombinationen für Start/Stop/Partity usw wie bei normaler UART
> verwenden.

Wenn das möglich ist, dann hast Du da kein Problem. Ich nutze AVRs 
selber nicht, hatte aber bislang den deutlichen Eindruck, daß die Dinger 
nur eine reine 8-Bit-SPI-Unterstützung hätten. Eindrücke dürfen auch 
täuschen ...

Aber der Vorschlag von Christian mit der Nutzung der MPSSE dürfte 
deutlich eleganter sein.

von Philipp T. (cyclon)


Lesenswert?

Ich würde auch den FT232H mit "Multi-Protocol Synchronous Serial Engine" 
empfehlen. Oder wenn's etwas aufwendiger sein soll, einen der Vinculum 
Controller (gibt's z.b dort: 
http://teske-electronics.de/index.php?cPath=18_19).

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.