Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.sci.electronics > #226227 > unrolled thread
| Started by | Johannes Bauer <dfnsonfsduifb@gmx.de> |
|---|---|
| First post | 2017-04-14 00:07 +0200 |
| Last post | 2017-04-14 11:40 +0200 |
| Articles | 9 — 3 participants |
Back to article view | Back to de.sci.electronics
74HC595 und 74HC166 an einem SPI Johannes Bauer <dfnsonfsduifb@gmx.de> - 2017-04-14 00:07 +0200
Re: 74HC595 und 74HC166 an einem SPI Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2017-04-14 02:21 +0200
Re: 74HC595 und 74HC166 an einem SPI Johannes Bauer <dfnsonfsduifb@gmx.de> - 2017-04-14 10:15 +0200
Re: 74HC595 und 74HC166 an einem SPI Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2017-04-14 11:26 +0200
Re: 74HC595 und 74HC166 an einem SPI Rafael Deliano <rafael_deliano@arcor.de> - 2017-04-14 07:58 +0200
Re: 74HC595 und 74HC166 an einem SPI Rafael Deliano <rafael_deliano@arcor.de> - 2017-04-14 09:59 +0200
Re: 74HC595 und 74HC166 an einem SPI Johannes Bauer <dfnsonfsduifb@gmx.de> - 2017-04-14 10:20 +0200
Re: 74HC595 und 74HC166 an einem SPI Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2017-04-14 11:53 +0200
Re: 74HC595 und 74HC166 an einem SPI Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2017-04-14 11:40 +0200
| From | Johannes Bauer <dfnsonfsduifb@gmx.de> |
|---|---|
| Date | 2017-04-14 00:07 +0200 |
| Subject | 74HC595 und 74HC166 an einem SPI |
| Message-ID | <ocosqr$q65$1@news.albasani.net> |
Hallo Gruppe, ich glaube ich habe gerade ein volles Brett vorm Kopf und bin mir jetzt unsicher, ob ich überhaupt ein Problem habe oder nicht. Folgendes: Ich habe mehrere kaskadierte HC595 und mehrere kaskadierte HC166. Anzahl 595 gleich Anzahl 166. Also zwei Ketten. Ich würde gerne beide an demselben SPI betreiben und gleichzeitig Schreiben und Lesen. Heißt also DS des ersten 595 an MOSI, Q7 des letzten 166 an MISO, SCK an SHCP der 595 und an CP der 166. Wenn ich die Datenblätter richtig lese, übernehmen beide IC jeweils an der positiven Flanke Daten. Wenn ich jetzt also mit CPOL = 0, CPHA = 0 da ran gehe, dann wird doch folgendes passieren, fürs erste Bit: - µC setzt MOSI auf Bitwert (DS der 595-Kette) - µC gibt steigende Flanke auf SCK - 595-Kette übernimmt DS, 166-Kette spuckt erstes Bit aus - µC gibt fallende Flanke auf SCK und sampled MISO (Q7 der 166-Kette, jetzt stabil weil Änderung nur bei steigender Flanke) Das sollte doch also exakt so sein, wie ich das habe will, oder? Ich bin aber beim Stöbern auf Hinweise wie den hier gestoßen: http://www.mikrocontroller.net/attachment.php/30856/SPI_74HC595.pdf "Note the software must change the clock phase, CPHA, for reads/writes to this circuit." Oder hier: https://www.mikrocontroller.net/topic/215399 (allerdings 165 statt 166): "Theoretisch ist der SPI-Mode für den 595 der falsche für den 165." Ich hab ein totales Brett vorm Kopf und verstehe nicht, warum 595 und 165 (identisch zum 166, aber asynchroner parallel load) inkompatibel zueinander sein sollen. Das ist für die ganze Welt offensichtlich, aber ich kapiere es gerade nicht. Wäre also für eine Nachhilfestunden im Diagrammlesen sehr dankbar :-) Viele Grüße, Johannes -- >> Wo hattest Du das Beben nochmal GENAU vorhergesagt? > Zumindest nicht öffentlich! Ah, der neueste und bis heute genialste Streich unsere großen Kosmologen: Die Geheim-Vorhersage. - Karl Kaos über Rüdiger Thomas in dsa <hidbv3$om2$1@speranza.aioe.org>
[toc] | [next] | [standalone]
| From | Hans-Peter Diettrich <DrDiettrich1@aol.com> |
|---|---|
| Date | 2017-04-14 02:21 +0200 |
| Message-ID | <elaj05Fb542U1@mid.individual.net> |
| In reply to | #226227 |
Am 14.04.2017 um 00:07 schrieb Johannes Bauer: > Hallo Gruppe, > > ich glaube ich habe gerade ein volles Brett vorm Kopf und bin mir jetzt > unsicher, ob ich überhaupt ein Problem habe oder nicht. Folgendes: Ich > habe mehrere kaskadierte HC595 und mehrere kaskadierte HC166. Anzahl 595 > gleich Anzahl 166. Also zwei Ketten. > > Ich würde gerne beide an demselben SPI betreiben und gleichzeitig > Schreiben und Lesen. Heißt also DS des ersten 595 an MOSI, Q7 des > letzten 166 an MISO, SCK an SHCP der 595 und an CP der 166. Wenn ich die > Datenblätter richtig lese, übernehmen beide IC jeweils an der positiven > Flanke Daten. Soweit richtig. > Wenn ich jetzt also mit CPOL = 0, CPHA = 0 da ran gehe, dann wird doch > folgendes passieren, fürs erste Bit: > > - µC setzt MOSI auf Bitwert (DS der 595-Kette) > - µC gibt steigende Flanke auf SCK > - 595-Kette übernimmt DS, 166-Kette spuckt erstes Bit aus > - µC gibt fallende Flanke auf SCK und sampled MISO (Q7 der 166-Kette, > jetzt stabil weil Änderung nur bei steigender Flanke) > > Das sollte doch also exakt so sein, wie ich das habe will, oder? Jein. Schau Dir mal im Datenblatt die Diagramme 18-3 Transfer Format und 28-3 Timing Requirements (Master Mode) an. Beim 165/166 liegt das erste Bit (H) ständig auf MISO, mit einer steigenden Flanke wird das *nächste* Bit (G) auf den Ausgang gelegt. Da der Controller ebenfalls mit der steigenden (aktiven) Flanke sampelt, könnte er also schon das nächste Bit erwischen. Mit der fallenden (inaktiven) Flanke ändert sich nur MOSI, d.h. dort erscheint das nächste auszugebende Bit. Nach einigem Überlegen bin ich der Meinung, daß Deine Einstellung trotzdem funktionieren sollte. Die Hold-Zeit für MISO ist mit 10ns nach der aktiven Flanke angegeben, also ziemlich klein. Da auf der Leitung sowohl SCK (hin) als auch MISO (zurück) verzögert werden, sollte das alte Bit lange genug am Controller anliegen, um dort richtig reingeschoben zu werden. Wenn es trotzdem Probleme gibt, könnte MISO nochmal zusätzlich verzögert werden, oder SCK für die 165/166 invertiert werden. Wenn Du mir ein paar Schieberegister schickst, könnte ich das auch für Dich ausprobieren ;-) DoDi
[toc] | [prev] | [next] | [standalone]
| From | Johannes Bauer <dfnsonfsduifb@gmx.de> |
|---|---|
| Date | 2017-04-14 10:15 +0200 |
| Message-ID | <ocq0ft$jhm$1@news.albasani.net> |
| In reply to | #226230 |
On 14.04.2017 02:21, Hans-Peter Diettrich wrote: > Beim 165/166 liegt das erste Bit (H) ständig auf MISO, mit einer > steigenden Flanke wird das *nächste* Bit (G) auf den Ausgang gelegt. Da > der Controller ebenfalls mit der steigenden (aktiven) Flanke sampelt, > könnte er also schon das nächste Bit erwischen. Ah, daher kam mein Brett vorm Kopf! Ich war der irrigen Meinung, dass Setup bei CPOL=0, CPHA=0 mit der steigenden Flanke, aber Sampling mit der fallenden Flanke passiert. > Nach einigem Überlegen bin ich der Meinung, daß Deine Einstellung > trotzdem funktionieren sollte. Die Hold-Zeit für MISO ist mit 10ns nach > der aktiven Flanke angegeben, also ziemlich klein. Da auf der Leitung > sowohl SCK (hin) als auch MISO (zurück) verzögert werden, sollte das > alte Bit lange genug am Controller anliegen, um dort richtig > reingeschoben zu werden. Ich bin auf einem STM32F407, d.h. sogar noch kleiner: 2.5ns. > Wenn es trotzdem Probleme gibt, könnte MISO nochmal zusätzlich verzögert > werden, oder SCK für die 165/166 invertiert werden. Ich glaube einen 74LVC1G04 werde ich spendieren. Dann sollte das laufen. > Wenn Du mir ein paar Schieberegister schickst, könnte ich das auch für > Dich ausprobieren ;-) Bisher alles nur CAD ;-) Vielen Dank nochmal, Viele Grüße, Johannes -- >> Wo hattest Du das Beben nochmal GENAU vorhergesagt? > Zumindest nicht öffentlich! Ah, der neueste und bis heute genialste Streich unsere großen Kosmologen: Die Geheim-Vorhersage. - Karl Kaos über Rüdiger Thomas in dsa <hidbv3$om2$1@speranza.aioe.org>
[toc] | [prev] | [next] | [standalone]
| From | Hans-Peter Diettrich <DrDiettrich1@aol.com> |
|---|---|
| Date | 2017-04-14 11:26 +0200 |
| Message-ID | <elblcdFh3m5U1@mid.individual.net> |
| In reply to | #226238 |
Am 14.04.2017 um 10:15 schrieb Johannes Bauer: > On 14.04.2017 02:21, Hans-Peter Diettrich wrote: >> Wenn Du mir ein paar Schieberegister schickst, könnte ich das auch für >> Dich ausprobieren ;-) > > Bisher alles nur CAD ;-) Falls Du simulierst, dann baue kleine Delays (RC Filter?) in die Leitungen ein. Falls die in den Schieberegistern nicht schon drin sind... DoDi
[toc] | [prev] | [next] | [standalone]
| From | Rafael Deliano <rafael_deliano@arcor.de> |
|---|---|
| Date | 2017-04-14 07:58 +0200 |
| Message-ID | <ocpo7l$hcl$1@dont-email.me> |
| In reply to | #226227 |
Günstige 74HC-Datenblätter suchen.
Ich vermeide NXP, bevorzuge NS/Fairchild oder TI.
Timing mit Lineal auf Blatt Papier aufmalen:
--- ---
| | | | 74HC595 CLK rising edge
---- ---- ---
----X--------x------ 74HC595 sample MOSI
--- ---
| | | | 74HC166 CLK rising edge
---- ---- ---
----00000000011111111 74HC166 data-out MISO
--- ---
| | | | SCK (CPOL=0)
---- ---- ---
---- ---- ---
| | | | SCK (CPOL=1)
--- ---
00000000011111111 CPU data-out MOSI (CPHA=1)
----X--------X--- CPU sample MISO (CPHA=1)
00000000011111111 CPU data-out MOSI (CPHA=0)
----X--------X------- CPU sample MISO (CPHA=0)
Auf Breadboard 74HC04 für /CLK bereithalten ?
MfG JRD
[toc] | [prev] | [next] | [standalone]
| From | Rafael Deliano <rafael_deliano@arcor.de> |
|---|---|
| Date | 2017-04-14 09:59 +0200 |
| Message-ID | <ocpvav$6j6$1@dont-email.me> |
| In reply to | #226231 |
> Breadboard Bei langen Schieberegisterketten ist Testschleife sinnvoll. D.h. den Aushang des letzten 74HC595 Schieberegisters mit dem Eingang des letzten 74HC166 Schieberegisters verbinden. Wenn man in Testroutine mehr taktet kommen die Bits die man gesendet hat zurück. MfG JRD
[toc] | [prev] | [next] | [standalone]
| From | Johannes Bauer <dfnsonfsduifb@gmx.de> |
|---|---|
| Date | 2017-04-14 10:20 +0200 |
| Message-ID | <ocq0o7$2du$1@news.albasani.net> |
| In reply to | #226231 |
On 14.04.2017 07:58, Rafael Deliano wrote: > Günstige 74HC-Datenblätter suchen. > Ich vermeide NXP, bevorzuge NS/Fairchild oder TI. > > Timing mit Lineal auf Blatt Papier aufmalen: > > --- --- > | | | | 74HC595 CLK rising edge > ---- ---- --- > > ----X--------x------ 74HC595 sample MOSI > > --- --- > | | | | 74HC166 CLK rising edge > ---- ---- --- > > ----00000000011111111 74HC166 data-out MISO > > --- --- > | | | | SCK (CPOL=0) > ---- ---- --- > > ---- ---- --- > | | | | SCK (CPOL=1) > --- --- > > 00000000011111111 CPU data-out MOSI (CPHA=1) > ----X--------X--- CPU sample MISO (CPHA=1) > > 00000000011111111 CPU data-out MOSI (CPHA=0) > ----X--------X------- CPU sample MISO (CPHA=0) > > Auf Breadboard 74HC04 für /CLK bereithalten ? Ja, ich glaube ich invertiere einfach SCK für die 166er Kette und gut ist. Mein Denkfehler war, dass ich dachte, vor der fallenden Flanke wird der Input gesampelt. Dabei ändert da nur der Master die Daten. Schade eigentlich, dass man nicht beides konfigurieren kann. Vielen Dank & viele Grüße, Johannes -- >> Wo hattest Du das Beben nochmal GENAU vorhergesagt? > Zumindest nicht öffentlich! Ah, der neueste und bis heute genialste Streich unsere großen Kosmologen: Die Geheim-Vorhersage. - Karl Kaos über Rüdiger Thomas in dsa <hidbv3$om2$1@speranza.aioe.org>
[toc] | [prev] | [next] | [standalone]
| From | Hans-Peter Diettrich <DrDiettrich1@aol.com> |
|---|---|
| Date | 2017-04-14 11:53 +0200 |
| Message-ID | <elblceFh3m5U3@mid.individual.net> |
| In reply to | #226241 |
Am 14.04.2017 um 10:20 schrieb Johannes Bauer: > Mein Denkfehler war, dass ich dachte, vor der fallenden Flanke wird > der Input gesampelt. Dabei ändert da nur der Master die Daten. Schade > eigentlich, dass man nicht beides konfigurieren kann. Wozu? Wenn die Weitergabe mit der gleichen Flanke nicht funktioniert, dann kannst Du auch keine 166 hintereinanderschalten! Da jammern die Leute immer, daß die IC zu langsam sind, bis man plötzlich feststellt, daß gerade eine synchrone (getaktete) Schaltung ohne Signalverzögerung garnicht gehen würde! Schlimm nur, wenn die Delays sich aufsummieren, dann begrenzen sie die Taktrate. Eben fällt mir noch auf, daß normalerweise alle digitalen Eingänge mit dem Prozessortakt synchronisiert werden. Ist das bei SPI nicht so? Bei I2C? DoDi
[toc] | [prev] | [next] | [standalone]
| From | Hans-Peter Diettrich <DrDiettrich1@aol.com> |
|---|---|
| Date | 2017-04-14 11:40 +0200 |
| Message-ID | <elblceFh3m5U2@mid.individual.net> |
| In reply to | #226231 |
Am 14.04.2017 um 07:58 schrieb Rafael Deliano: > Günstige 74HC-Datenblätter suchen. > Ich vermeide NXP, bevorzuge NS/Fairchild oder TI. Den TTL Pocket Guide kenne ich noch von früher, gibt's inzwischen auch als PDF. > Timing mit Lineal auf Blatt Papier aufmalen: Karopapier hilft :-) > --- --- > | | | | 74HC595 CLK rising edge > ---- ---- --- > > ----X--------x------ 74HC595 sample MOSI > > --- --- > | | | | 74HC166 CLK rising edge > ---- ---- --- > > ----00000000011111111 74HC166 data-out MISO Das sollte eher so aussehen: 00001111111122222222 74HC166 data-out MISO oder HHHH/GGGGGGG\FFFFFFF/ 74HC166 data-out MISO DoDi
[toc] | [prev] | [standalone]
Back to top | Article view | de.sci.electronics
csiph-web