Bastel gerade eigenen Pedelec-Controller für die Panasonic Mittelmotoren und hab nur 7 Kabel hoch zum Lenker. Da ich mich noch nicht festlegen mag, möchte ich I2C und SPI drauf legen. An die 4 Kabeln vom I2C kommt dann 8bit IO, damit könnte ich die SlaveSelect vom TFT, Touchscreen und SD-Karte schalten. Aber da gibt es neben MOSI,MISO und CLK noch dieses dämliche DC mit dem zwischen Daten-Byte und Command-Byte unterschieden wird. Das geht nicht über I2C. Also SDA von I2C mit MISO von SPI doppelt belegen. Die SPI-Slaves werden ja nichts per MISO zum Master schicken wenn sie nicht gefragt werden. Oder SDA mit DC doppelt belegen ? das Roland, Ideen immer zu mir :-)
Das R. schrieb: > SD-Karte [...] > Aber da gibt es neben MOSI,MISO und CLK noch dieses dämliche DC mit dem > zwischen Daten-Byte und Command-Byte unterschieden wird. Ist es notwendig, dass die SD-Karte "oben" ist? mfg mf
Das R. schrieb: > Ideen immer zu mir :-) One-wire Port Expander statt I2C. Z.b. DS2408 - VCC - GND - one-wire - SCLK - MOSI - MISO - DC
Das R. schrieb: > Aber da gibt es neben MOSI,MISO und CLK noch dieses dämliche DC mit dem > zwischen Daten-Byte und Command-Byte unterschieden wird. Ueblich ist pro Geraet ein /CS (bzw /Slave-Select) sodass dann bei mehreren Geraeten das sowieso nicht geht. Dein DC kenne ich nicht. leo
Gut wer lesen kann.. I2C ist Pflicht. Wenn noch GPS und Gsm dazu kommen packe ich eh einen Arduino Nano als I2C Slave an den Lenker. Bis dahin wäre spi TFT aber nett weil I2C OLED wohl nicht gut leserlich im Sonnenlicht. Mit sportlichen gibt es schon ink.display an 13€.. Aber hab noch kein Spi TFT ohne D/C zum Laufen bekommen.
Das R. schrieb: > Bastel gerade eigenen Pedelec-Controller für die Panasonic Mittelmotoren Keine Ahnung, ob Panasonic Mittelmotoren zum Allgemeinwissen des Elektronikers zählen. Bei mir jedenfalls nicht. Kannst du mal ein Anschlussdiagramm und vielleicht weitere Informationen posten? Und wozu soll der Controller gut sein? Macht er etwas anders/besser als handelsübliche Geräte, oder geht es ums Prinzip?
Ah. Passt doch: Kabel: 1 VCC 2 SCL 3 SDA 4 SCLK 5 MISO 6 MOSI 7 DC Fahrradrahmen: GND
Ist es für die eigentliche Fragestellung (Welchen Pin bei I2C und SPI zusammenlegen, damit Power, I2C und SPI über 7 Leitungen gehen) nicht unerheblich, ob es sich dabei um ein Pedelec, Auto, Fräsmaschine oder Marsrakete handelt und zu was der Controller dazu gut ist? Zum Thema: Kleine Brainstormingidee, evtl. auch totaler Unsinn: SPI-Porterweiterung. Die bekommt über eine der 7 Leitungen ihr eigenes CS. Wenn CS aktiv - Daten für Porterweiterung. Wenn CS inaktiv - Porterweiterung macht das CS für die anderen Slaves. Spießt sich halt mit deinem "I2C" ist Pflicht.
Oder so. I2C und SPI darf nicht gleichzeitig verwendet werden. I2C Modus: MOSI high halten SPI Modus: SCL low und SDA high (tri-stated) halten
Das R. schrieb: > Pedelec War das nicht mit LiPo Akku und ekligen HF Strömen von zig Ampere zum BLDC? Dann würde ich auf der Kabelstrecke auf was robustes setzen, z.B. RS485 und die I2C Verbindung auf der Platine im Lenker halten.
Matthias S. schrieb: > Ist es für die eigentliche Fragestellung (Welchen Pin bei I2C und SPI > zusammenlegen, damit Power, I2C und SPI über 7 Leitungen gehen) nicht > unerheblich, ob es sich dabei um ein Pedelec, Auto, Fräsmaschine oder > Marsrakete handelt und zu was der Controller dazu gut ist? > Vielleicht. Vielleicht auch nicht. Ich z. B. gehöre zu denen, die mit dem DC-Signal nichts anfangen können. Zu SPI gehört es originär jedenfalls nicht. Vielleicht zu Panasonic und Mausrakete? Dann müsste man schon genauer die Timing-Anforderungen kennen und wie man es ggf. emulieren/substituieren kann. Schaltungsentwicklung ohne Datenblatt und Anforderungskatalog ist immer eine ganz schlechte Idee.
Ja Fahrradrahmen wär möglich aber nicht sauber. Gehäuse am Lenker wasserdicht, etz.. Was spricht denn dagegen, die SDA Leitung auch für SPI zu nutzen. Sowohl ic2 als auch I2C werden ja nur slaves dran gehängt, die von sich aus nicht senden. Die Schaltung von joeF ist mir viel zu heftig. Aber klar, natürlich arbeitet mein Arduino Mini immer entweder I2C oder SPI ab. sd Karte ist kostenlos immer auf Rückseite von tft display. (Pedelec Controller: https://www.pedelecforum.de/forum/index.php?threads/open-source-panasonic-flyer-ebike-pedelec-controller.63354/ )
Das R. schrieb: > (Pedelec Controller: > https://www.pedelecforum.de/forum/index.php?threads/open-source-panasonic-flyer-ebike-pedelec-controller.63354/ > ) Zitat aus der verlinkten Diskussion: "Leider im Inhalt und im Titel etwas verwirrend, ich lese lieber einen Schaltplan als Youtube-Videos zu gucken." Dem kann ich mich nur anschließen.
> ich lese lieber einen Schaltplan als Youtube-Videos zu gucken.
Das ist brav.
Joe F. schrieb: > Ah. Passt doch: > > Kabel: > 1 VCC > 2 SCL > 3 SDA > 4 SCLK > 5 MISO > 6 MOSI > 7 DC > > Fahrradrahmen: > GND Ein Draht fehlt noch zum Glück, SPI braucht noch eine vierte Ader, den CS. Die Frage bleibt, warum es I2C und SPI parallel sein müssen. Lässt man I2C weg, wären anstatt SCL und SDA zwei Adern für CS = zwei SPI-Devices verfügbar. Eine SD-Karte muß nicht am Lenker sein, Displays bekommt man durchweg als I2C eingekauft. Sich "noch nicht festlegen mag" ist keine Basis etwas zu konstruieren.
Hallo, Verlierer schrieb: > Aber hab noch kein Spi TFT ohne D/C zum Laufen bekommen. Die meisten Displaycontroller können auch 3-wire SPI. Problem ist dann aber, das man entweder Software-SPI macht oder extrem tricksen muß, weil man 9 Bit statt 8 Bit schicken muß, jedesmal das d/CX-Bit und dann die 8 Datenbits hinterher. Gruß aus Berlin Michael
Wie wäre es mit RS485 oder CAN? Einfach für die "lange" strecke was unempfindliches nehmen und oben und unten halt umsetzen? Neumodisch und cool wäre auch Bluetooth. Dann wirst du wenigstens auch bei der Verkehrszählung wahrgenommen ;-) Welche Datenraten brauchst du denn für dein vorhaben?
Manfred schrieb: > SPI braucht noch eine vierte Ader, den CS Wenn du mehrere SPI slaves hast, auch mehrere CS. Die sollen ja dann über einen I2C Portexpander angesteuert werden. Das ist halt ziemlich langsam. Und daher frage ich mich auch, ob es denn soviel langsamer wird, wenn man auch CD über den Portexpander macht. Die überwiegende Zeit werden ja vermutlich eh Daten übertragen, und auf "Command" geht das Signal eher selten.
:
Bearbeitet durch User
Und das funktioniert elektrisch auch? Zwischen Steuereinheit und Lenker liegt doch mindestens 1 Meter Kabel. Und Spi mit (bei mir) 20Mhz ist nicht gerade langsam und sehr empfindlich. Bei längeren Kabel (>39 cm) sollte man die Übertragung doch über Differentielle Signale laufen lassen (Kabelanzahl *2). Und so ein E-Motor wird doch auch einiges an Störungen produzieren. Ich bezweifel, dass das alle ohne Störungen funktionieren wird.
PittyJ schrieb: > Ich bezweifel, dass das alle ohne Störungen funktionieren wird. Volle Zustimmung. I²C ist für ganz kurze Verbindungen gedacht, die das Gehäuse eines Gerätes nicht verlassen. Bekannte Ausnahme: PC Monitore. Für Leitungen dieser Länge könnten bereits besondere Entstörmaßnahmen nötig werden, falls nicht bereits in den IC's integriert. SPI ist für noch kürzere Leitungen vorgesehen - zwischen benachbarten IC's auf einer Platine. Die mir bekannten Chips haben an ihren Anschlüssen keinerlei Signalaufbereitung integriert. Ich würde beides gar nicht erst versuchen, sondern auf etablierte Standards setzen. Im KFZ Umfeld ist CAN üblich. Falls du dazu keinen Zugang hast, würde ich auf das elektrisch verwandte RS422 Protokoll setzen. Am Display kannst du ja einen kleinen µC verwenden, der das auf das Protokoll des Displays umsetzt.
Michael U. schrieb: > Die meisten Displaycontroller können auch 3-wire SPI. Problem ist dann > aber, das man entweder Software-SPI macht oder extrem tricksen muß, weil > man 9 Bit statt 8 Bit schicken muß, jedesmal das d/CX-Bit und dann die 8 Datenbits hinterher. Wär toll wenn Du für den ILI9341 Beispiel-Code hättest ! Okay Danke, die Störungen hatte ich nicht auf dem Schirm. Original Controller nutzt 9600 Baud zum Lenker und zur Batterie. I2C soll man auch mit 10000 Baud betreiben können. Dann kommt statt I2C IO Modul halt doch gleich Arduino Nano als I2C Slave an den Lenker. Da hab ich auch schon Code mit 8bit CRC Fehlerkorrektur. 1200 Baud Software Serial wäre dann über die A4 und A5 Pins des Arduino Mini auch möglich? Bluetooth im Alu Motorgehäuse macht wenig Sinn. Aber ein Esp32 am Lenker und den Arduino Mini im Motor zum I2C Slave wäre denkbar. Soll halt Open source Projekt werde, so dass ich anderen Leuten möglichst viel Varianten bei selber Platine anbieten mag. Mit SPI statt i2c Slave hätte man halt die Lenker Einheit vom Motor Controller aus mit programmieren können.. Das Roland.
Das R. schrieb: > Okay Danke, die Störungen hatte ich nicht auf dem Schirm. Und die Eigenschaften von Wellenausbreitung in Leitungen auch nicht. Die werden zumindest den Spaß bei SPI stark dämpfen. > Original Controller nutzt 9600 Baud zum Lenker und zur Batterie. > I2C soll man auch mit 10000 Baud betreiben können. > 1200 Baud Software Serial wäre dann über die A4 und A5 Pins > des Arduino Mini auch möglich? Niedrige Bitrate alleine ist noch keine Lösung - insbesondere bei I²C und SPI. Dazu muss noch eine dazu passende Signalaufbereitung kommen. Lies dich mal zum Thema "Wellenwiderstand" und "Reflexionen" ein, dann siehst du, was ich meine. Dann wirst du auch sehen, das CAN und RS422 beide eine vernünftige und zugleich kostengünstige Lösung sind.
Das ist voller Murks. Er soll so etwas wie rs485 oder can nehmen und dann die Bauteile über einen uC ansteuern. So ein Blödsinn spi über einen Meter Kabel zu leiten.
Wenn Premiumhersteller (Flyer) 9600 baud rs232 fahren, darf ich das auch :-) und nach 10cm Kabel bin ich ja aus dem Alu Motorgehäuse raus. Rs485 mach ich bei meinem PV Logger. I2C geht durchaus 10-20 Meter durch meinen Bahnhof.
Das R. schrieb: > Wenn Premiumhersteller (Flyer) 9600 baud rs232 fahren, darf ich das auch > :-) und nach 10cm Kabel bin ich ja aus dem Alu Motorgehäuse raus. Rs485 > mach ich bei meinem PV Logger. > I2C geht durchaus 10-20 Meter durch meinen Bahnhof. Der kleine Unterschied zwischen RS232 und I2C ist dir bewusst?
Dieter R. schrieb: > Der kleine Unterschied zwischen RS232 und I2C ist dir bewusst? Immer diese Schlaumauer die gar nicht helfen wollten, sondern sich nurt selbst inszenieren wollen. I2C hat extra clock Leitung und ist darum stabiler als rs232 :-)
PittyJ schrieb: > Ich bezweifel, dass das alle ohne Störungen funktionieren wird. Nicht ganz umsonst kommuniziert Bosch bei seinen Ebike-Antrieben mit CAN. Dieter R. schrieb: > Der kleine Unterschied zwischen RS232 und I2C ist dir bewusst? Oder gar SPI... Das R. schrieb: > I2C hat extra clock Leitung und ist darum stabiler als rs232 :-) Dieser logische Kurzschluss erschließt sich mir nicht ganz. Ich habe eine RS232 bisher immer als einfacher handhabbar und störsicherer empfunden. Das R. schrieb: > I2C geht durchaus 10-20 Meter durch meinen Bahnhof. Mein Glückwunsch. Dafür wurde der "Inter-IC-Bus" aber nicht entworfen. Er wurde entworfen, um ICs auf der Leiterplatte im 10-30 cm Bereich miteinander kommunizieren zu lassen. Und je weiter man von dieser Anwendung weg geht, umso wackliger steht das Ergebnis auf den Beinen.
Das R. schrieb: > Dieter R. schrieb: >> Der kleine Unterschied zwischen RS232 und I2C ist dir bewusst? > > Immer diese Schlaumauer die gar nicht helfen wollten, sondern sich nurt > selbst inszenieren wollen. > > I2C hat extra clock Leitung und ist darum stabiler als rs232 :-) Ok, der Unterschied ist dir nicht bewusst: RS232 ist aufgrund der Pegelverhältnisse um etwa eine Größenordnung weniger störempfindlich. Bei langsamer Übertragungsrate nimmt dieser Faktor dramatisch zu, da man entsprechend filtern kann. Die Clock-Leitung spielt dabei keine Rolle. Wie schon andere hier bemerkt haben, hast du Wissensdefizite in Übertragungstechnik. Diese Forumsdiskussion wird diese Defizite nicht schließen können. Aber dir vielleicht helfen, zu der Einsicht zu gelangen, dass du Defizite hast.
Dieter R. schrieb: > Aber dir vielleicht helfen, zu der Einsicht zu > gelangen, dass du Defizite hast. Wie ich schon sagte, Narzissmus in Reinform. Macht es nun einen Unterschied ob ich Hardware rs232 nehme oder mit A4 und A5 SoftwareSerial ? Ihr tut hier ja so als ob der Arduino bei den Rx TX Pins noch Filter etz. Auf dem Chip hat. Und Lest Mal https://t3n.de/news/drei-beispiele-zeigen-china-in-vielen-dingen-voraus-1165901 Das hat mir sowas von aus dem Herzen gesprochen weil ich das schon mein ganzes Leben versuche zu leben - leider in Eurem Land :-( Ich hätte das hier wohl in China Posten sollen. Das Roland.
Das R. schrieb: > Dieter R. schrieb: >> Aber dir vielleicht helfen, zu der Einsicht zu >> gelangen, dass du Defizite hast. > > Wie ich schon sagte, Narzissmus in Reinform. > Nein, jahrzehntelange Fachkenntnis aus erstens Studium und zweitens einer nicht mehr zählbaren Menge an meist erfolgreichen Projekten. Es ist dir aber unbenommen, zu glauben, es besser zu wissen. Dann musst du es halt auf die harte Tour lernen.
Das R. schrieb: > Macht es nun einen Unterschied ob ich Hardware rs232 nehme oder mit A4 > und A5 SoftwareSerial ? Das hängt sehr von der jeweiligen Implementierung ab (sowohl bei Hardware als auch bei Software). Eine gute Methode ist, die Bandbreite des Signals sowohl auf der Senderseite als auch auf der Empfängerseite durch Filter zu beschränken. Eine zweite Maßnahme ist, die Signale mehrfach (z.B. 16x pro Bit) abzutasten und offensichtlich falsche Ausreißer zu ignorieren. Drittens sollten die Datenbits möglichst in ihrer Mitte abgetastet werden. Dazu gehört dann eine Logik, die nach der ersten Flanke vom Startbit herausfindet, wo denn die Mitte ist. Viertens gibt es Implementierungen, welche diese Taktsynchronisation bei jeder Flanke beherrschen und damit sogar abweichende Baudraten >2% ausgleichen können. Aber eigentlich ging es bei RS232 mehr um die Spannungspegel. +/-12V mit einer Hysterese von mehreren Volt ist halt störungs-unempfindlicher, als ein nacktes 3V Logiksignal. Nur ist diese "Verbesserung" nichts, im Vergleich zur symmetrischen an den Wellenwiderstand angepassten Übertragung von RS422, RS485 und CAN.
Das R. schrieb: > Ihr tut hier ja so als ob der Arduino bei den Rx TX Pins noch Filter > etz. Auf dem Chip hat. Die hat er: der ankommende Wert wird pro Bitzeit in der Bitmitte mehrmals abgetastet und die Mehrheit verwendet. Das ist ein Tiefpassfilter. Das Dokument https://ww1.microchip.com/downloads/en/DeviceDoc/Microchip%208bit%20mcu%20AVR%20ATmega8A%20data%20sheet%2040001974A.pdf beschreibt den UART ab der Seite 196 recht ausführlich. Wenn man das liest, dann sieht man: da ist noch einiges mehr an schlauen Mechanismen verbaut...
:
Bearbeitet durch Moderator
> VCC > - GND > - CS - Expander > - SCK > - MOSI > - MISO > - Frei :) Spi Portexpander, i2c per bitbang.
Lothar M. schrieb: > Das R. schrieb: >> Ihr tut hier ja so als ob der Arduino bei den Rx TX Pins noch Filter >> etz. Auf dem Chip hat. > Die hat er: ... Okay dann verbinde ich den Slave am Lenker per 5V Hardware rs232. Da kann ich am Stecker zum Flaschen einen DTR Umschalter dran löten mit dem ich festlege, welcher Arduino Mini geflasht wird. Muss mir halt zum Debuggen ein Protokoll ausdenken bei dem die Arduinos die Debug Pakete des jeweils anderen ignorieren... zum Beispiel könnte jedes Paket zu Anfang dessen Länge übermitteln und bei Debug Paketen sende ich einfach falschen CRC am Ende der Übertragung :-) Im Serial-Terminal seh ich dann halt den binären Murks zwischen den Debug Strings. Kann aber so beide Arduinos gleichzeitig debuggen ! Und kann wohl auch geschwind mit C# mein eigenes Debug Terminal programmieren :-) Das Roland der kleine Physiker :-)
Joe F. schrieb: > ??? Damit hast Du meinen Nachtrag ins Nirvana geschickt :-( Narzissten drängen sich immer in den Mittelpunkt - gerade dann wenn sie gar nichts zu sagen haben.. Da RX und TX gekreuzt sind muss ich zwei Stecker zum Flaschen löten. Spar mir aber den Umschalter. Kann dann halt immer nur einen Arduino debuggen. Ideen immer zu mir :-) Ausreden woanders hin :-(
Das R. schrieb: > Okay dann verbinde ich den Slave am Lenker per 5V Hardware rs232. Hattest du um Hilfe gebeten, oder wolltest du nur Absolution für die schlechtesten Lösungsansätze? Ich dachte wir hätten und klar ausgedrückt: Nimm CAN, RS422 oder meinetwegen auch RS485!
Das R. schrieb: > > der kleine Physiker :-) Ich mach dir einen wirklich gut gemeinten Vorschlag: Zieh ein Physik-Studium durch und in zehn Jahren reden wir wieder miteinander.
Das R. schrieb: > Wenn Premiumhersteller (Flyer) 9600 baud rs232 fahren, darf ich > das auch :-) und nach 10cm Kabel bin ich ja aus dem Alu Motorgehäuse > raus. Rs485 mach ich bei meinem PV Logger. I2C geht durchaus 10-20 Meter > durch meinen Bahnhof. Mein Gott dann nimm halt SPI und oder I2C für dein Scheissprojekt. Baue es! Lass dich nicht aufhalten. Denk an deine Abblock-Cs und komm ja nicht hier an und jammere weil du Datenfehler über die Leitung hast...
Das R. schrieb: > Joe F. schrieb: >> ??? > > Damit hast Du meinen Nachtrag ins Nirvana geschickt :-( > Narzissten drängen sich immer in den Mittelpunkt - gerade dann wenn sie > gar nichts zu sagen haben.. Ja sorry, ich verstehe dich halt einfach nicht. Ursprünglich ging es um I2C und SPI und jetzt irgendwie um Arduino Flashing/Debugging per UART und irgendwelchen Murks mit absichtlich falschen CRCs, oder so. Naja, aufgrund deiner insgesamt sehr unverschämten Art werde ich mich nicht weiter bemühen dein Vorhaben zu verstehen. Gute Fahrt weiterhin.
Das R. schrieb: > Das hat mir sowas von aus dem Herzen gesprochen weil ich das schon mein > ganzes Leben versuche zu leben - leider in Eurem Land :-( Dann wandere doch endlich aus und bleib dort. > Ich hätte das hier wohl in China Posten sollen. Genau. Poste Dein Anliegen in irgendwelchen chinesischen Foren. Dann müssen wir uns nicht mehr damit abgeben. Und vergiss nicht, bei Deinem Motor die Amper hochzuskillen.
Hallo. Habe jetzt, ehrlic gesagt, nur alles ueberflogen, aber was spricht dagegen anstelle eines I2C Portexpanders einen SPI Portexpanders zu nehmen? Dann haettest Du immerhin ein paar Leitungen fei... Oder Du nimmst einfach 2 CS vom I2C Portexpander. Einmal mit CD high und einmal mit CD low. Sind ja genug vorhanden.
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.