I2C to RS232 TTL

OP #2400212
Lesenswert?

Hi,
ich moechte einen I2C Bus ueber RS232 (RX und TX) bedienen koennen. An 
dem I2C werden Sensoren haengen und ich moechte in Software ueber ASCII 
(RS232) mit den Sensoren sprechen koennen.

Faellt euch da was ein?

Ich habe das Projekt I2C-slave USART gefunden. Da es sich hier aber 
nur um einen I2C-Slave handelt ist es ungeeignet. Richtig?

muebau
Gast #2400238
Lesenswert?

Unter Erweiterungen gibt es ein I2C-Master Tool. Das ist allerdings 
eigentlich nur zum Testen von Slaves gedacht. Der Master ist eine reine 
Softwarelösung ohne Hardwareunterstüzung (ohne USI) und ohne den 
FIFO-Puffer für die RS232-Schnittstelle. Es würde notfalls gehen.
OP #2400291
Lesenswert?

Hi,
das klingt ja nicht so richtig gut. Es soll ja schon verlaesslich 
funktionieren.

Was kann der FTDI denn? Das ist doch nur ein RS232 zu USB Wandler oder 
nicht?

Wie wuerdet ihr mit einem I2C Bus umgehen um diesen per Funk ueber ein 
BTM-222 zum PC zu bekommen?

Die war fuer mich die einzige Moeglichkeit um den I2C in Software zu 
benutzen.

muebau
Gast #2400307
Lesenswert?

> Wie wuerdet ihr mit einem I2C Bus umgehen um diesen per Funk
> ueber ein BTM-222 zum PC zu bekommen?

Ich wuerde mir einen fast beliebigen Microcontroller nehmen und dem ein 
kleines Programm verpassen das genau das macht was ich will.

Du programmierst halt ein Protokoll das die eigentliche I2C 
Kommunikation etwas abstrahiert.

Beispiel:

W3:A50:30:31:32      ;Schreibt drei Byte an I2C-bus mit Adresse 0x50
R1:A50               ;Liesst ein Byte vom I2C und sendet dir das 
Ergebnis
W1R5:A50:4a          ;Schreibt Byte 4a an Adresse 50 und liesst danach
                     ;5Byte.

Also fang an. :)

Olaf
OP #2400314
Lesenswert?

Hi,
nun wenn ich das Ding von ELV aber genau soetwas kann, habe ich eine 
sichere Basis mit industriell gefertigter Platine.

Wie auch bei einem ISP Programmer sollte man sich etwas nachweisslich 
Funktionierendes holen um Fehlerquellen auszuschliessen.

Kann das Ding von ELV denn genau das?

muebau
#2400323
Lesenswert?

Hallo,

Fridolin Onteca schrieb:
> Wenn ja, kann ich dem Ding denn 3.3 V geben und er setzt fuer mich den
> I2C Bus in eine RS232 um?


> können auch SPI-, I²C- und JTAG-Schnittstellen?

- 3,3Volt funktioniert.

- Man kann mit Visual Basic, Visual C++ und MPSSE die genannten 
Schnittstellen programmieren. Aber da würdest du dich so verzetteln, 
dass das eigentliche Projekt auf der Strecke bleibt!

- An der Geschichte haben sich schon viele Experten die Zähne 
ausgebissen...


Gruß Xmega
Gast #2400352
Lesenswert?

@Fridolin Onteca
Wenn du Dir den Aufwand machst und auf der ftdi homepgae recherchierst, 
findest du das mpsse interface...es gibt auch application notes dafür 
anhand derer du entscheiden kannst, ob es passt oder nicht
Gast #2401295
Lesenswert?

Hallo Fridolin,

schau doch einfach mal in die  Codesammlung.

Da gibt es mindestens 2 Vorschläge, wie man mit einem einfachen ATMEGA8 
Dein Problem löst.

Woher ich das weiß ?

Weil ich selbst einmal gesucht habe.
Und mindestens eine Lösung gefunden habe, die mir aber zu umständlich 
war.

Daraufhin habe ich einen eigenen Ansatz geschrieben (Achtung: sehr 
frühes Frühwerk - aber gut funktionierend und seit Jahren ständig in 
Benutzung) und in der Codesammlung bereitgestellt.

mfg

Michael s.
OP #2401317
Lesenswert?

Hi,
nun ich habe die Loesungen mit dem Atmega8 schon gesehen. Da es hier 
fuer das Projekt einen moeglichst einfachen Ansatz braucht ist der BL233 
(als DIL) genau richtig.

Auch den SC18IM700 kann ich nicht finden. Laut Datenblatt ist der aber 
nicht als DIL verfuegbar.

Wo kann ich den BL233 oder den SC18IM700 kaufen?

Gesucht:
Reichelt
ELV
Conrad (nur der Vollstaendigkeit halber)

muebau
Gast #2401327
Lesenswert?

http://i2cchip.com/shop.html (unter Integrated Circuits)

da gibt es auch komplette Schaltungen zu kaufen.

Sonst wirst Du das Teil wohl nicht bekommen, das sieht nach einem custom 
Chip aus.

Wenn Du Basteln (sparen) willst, empfehle ich die Codesammlung (das 
Beispiel von Michael habe ich aber auch nicht gefunden, außer er hat es 
unter anderem Namen eingestellt)

Oder das Teil von ELV, falls es Deine Anforderungen erfüllt. Da ist viel 
Zeit und Nerven gespart ;-)

Rudi
Gast #2401502
Lesenswert?

Hallo Rudi,

das Programm steht unter dem Betreff "Terminal/TWI-Adapter ..." in der 
Codesammlung (ich musste selbst suchen).

Diese Version wird sich auf die einseitige Kommunikationsrichtung vom PC 
zum TWI-Bus + Verarbeitung der Antworten beschränken.

Den umgekehrten Weg habe ich später implementiert, mangels erkennbarem 
Interesse aber niemanden damit belästigt:

Der Adapter fungiert im Ruhezustand als TWI-Slave und alle an ihn 
gerichteten Nachrichten (Bytes) werden hexadezimal an die serielle 
Schnittstelle durchgereicht (das wird zum Debuggen genutzt).

In Verbindung mit einem USB-Seriell Adapter beschränkt sich die 
notwendige Hardware auf einen ATMEGA8 in Verbindung mit einem Quarz und 
2 Kondensatoren.
Alles also Teile, die man normalerweise in der Bastelkiste hat.

mfg

Michael S.
OP #2401947
Lesenswert?

Hi,
da ich mit dem Bus reden muss und ihm auch zuhören muss genügt der Code 
vermutlich nicht.

Zu der Lösung von Horter & Kalb (horter.de):

Oft werden die Leitungen RTS, CTS, DTR, DSR in I2C-Schaltungen 
verwendet. Dies funktioniert toll wenn man eine native RS232 hat.

Ist das BTM222 in der Lage diese Leitungen ebenfalls zu nutzen. Es 
scheint hier nur RTS und CTS zu geben.

muebau
Gast #2402702
Lesenswert?

Hallo Fridolin,

wenn du nicht mehr willst, als einen "normalen" TWI-Slave zu bedienen, 
dann kannst Du das problemlos mit dem "Terminal / TWI-Adapter" machen.

Genau diese Dinge mache ich mit dem Programm ständig:
Daten auf einen Slave übertragen oder Daten aus dem Slave auslesen.

Wobei das Programm dazu dient, die Kommunikation im Grundsatz zu testen 
und zu verstehen - um anschließend eines eigenständiges Programm auf 
einem Controller laufen zu lassen.

Zur Frage des TWI-Taktes:
Im Datenblatt ist der maximale (ggf. auch der minimale) TWI-Takt 
angeben, mit dem ein Slave arbeiten kann.

Mit 100 kHz kommen alle zurecht.
Bei langen Leitungen ist es hilfreich, den Takt herabzusetzen.

Im Gegensatz zur Seriellen Datenübertragung, bei der beide Parteien 
exakt das selbe Timing haben müssen, wird beim TWI der Takt durch das 
SCL-Signal vorgegeben.

Die maximale TWI-Takt-Frequenz meines Programmes ist durch den Takt des 
Controllers vorgegeben.
Da ich mit 3.686400 MHz arbeite, liegt (wenn ich es - ohne ins 
Datenblatt zu schauen - recht erinnere), der maximal erreichbare Takt 
bei 100kHz.

Aber was solls, das ist schon reichlich schnell (fast 10x schnell als 
eine serielle Übertragung mit 9600Baud.


mfg

Michael S.
OP #2403697
Lesenswert?

Hi,
vielen Dank fuer die Ausfuehrungen.

Dann scheint es ja das Richtige zu sein.

Zu den 9600 Baud und dem 3.xxxx Takt:

Laut Beschreibung soll ich ja einen 4 MHz Quarz verwenden. Dieser wuerde 
mir 100 KHz I2C Takt zur Verfuegung stellen.
Die 9600 Baud wollte ich auf 19200 erhoehen indem ich in der *.h das 
#define auf 19200 stelle. Stehen mir da Probleme bevor?

muebau
Gast #2403916
Lesenswert?

Hallo Fridolin,

eine Baudrate von 19200 Baud sollte keine Probleme bereiten.

Allerdings stellt das Programm vermutlich nicht die dauerhafte Lösung 
Deines Problemes dar:
Denn Du wirst ja nicht ständig am Terminal sitzen und "TWI-Kommandos" 
eintippen wollen, um dem Sensor Messwerte zu entlocken.

Wenn Du den richtigen Weg gefunden hast, wie Du den Sensor in Deine 
Dienste nehmen kannst, dann wirst Du wohl oder übel ein Programm 
schreiben müssen, das selbstständig den Slave adressiert, Messwerte 
abholt und dann irgendwie weiterverarbeitet.

mfg

Michael
OP #2404267
Lesenswert?

Hi,
ich hatte genau das vor. Messwert holen und das Ergebnis in Software 
auswerten. Dies entsprechend schnell (ca. 50-100/s).

Siehst du hier ein Problem?

Wenn ich mich nicht irre scheint der BMA020 auch "Trigger" zu 
unterstützen. Sollte es eng mit dem Timing werden so würde es auch 
genügen die "Trigger" geschickt zu setzen und sich von dem BMA020 die 
Werte schicken zu lassen, so der Fall eintritt.

Das mit dem I2C ist dann doch Neuland für mich.

muebau

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren