PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Baudrate, Geschwindigkeit



BlooD
14.09.2005, 11:11
Hi.

Ich glaube ich hab nen ziemlich triviales Problem aber komme einfach nicht auf ne gescheite Lösung.

Ich will z.B. den Inhalt eines EEPROM (AT24C32) über RS232 verschicken. Wie lange brauche ich dafür?

Datenmenge ist also 4kByte
RS232 mit 19200 Baud/s mit 8N1

8N1 heisst doch: 8Bit - kein parity - 1 Stopbit

also hab ich 4096[Byte]*8[Bit/Byte] = 32768[Bit] zum versenden.

da ich immer nach 8 ein Stopbit brauche, sind das nochmal 4096 Stopbits, die dazukommen.

macht also zusammen 36864 Bits zusammen.

Kann ich dann annehmen, das ich dafür
36864[Bit]/19200[Bits*s^-1] = 1,92 [Sekunden] brauche?

Das kommt mir irgendwie bissle schnell vor, aber wahrscheinlich stimmt meine ganze Rechnung nicht :(

Kann das mal einer mit ner Beispielrechnung erklären? Danke :)

JanB
14.09.2005, 11:31
Fast richtig, es fehlt noch das Startbit.
8n1 sind insgesamt 10 Bits pro Byte.
Startbit, 8 Datenbits und Stopbit.
4096 Byte werden also als 40960 Bits übertragen,
und brauchen dann 40960/19200 also 2,13s.

Gruß Jan

Psiyou
14.09.2005, 11:34
Auf jeden Fall hast Du noch das Startbit vergessen...
Ansonsten sollte das meiner bescheidenen Meinung nach aber so hinhauen...

BlooD
14.09.2005, 11:59
Ach das Startbit, naja ok :)

Hmm immerhin fast richtig. Das das doch so schnell geht hätte ich nciht gedacht.

Ich brauch hier für ein paar Daten nämlich ewig lange - ich sende bisher immer Befehle vom PC zum µC und der gibt dann die Antwort drauf. Irgendwie umständlich, ich sollte wohl besser das ganze EEPROM verschicken und die Daten dann vom PC auseinandernehmenlassen, wenn das schon so schnell geht.

Jedenfalls Danke!

BlooD
28.09.2005, 15:10
Jetzt stellt sich eine weitere Frage - ich kann ja nicht über I2C alles auf einmal lesen bzw. alles auf einmal schreiben.

Ich hab das Datenblatt (http://www.atmel.com/dyn/resources/prod_documents/doc0336.pdf) jetzt schon x-mal gelesen, aber komm irgendwie nicht ganz klar.

Das EEPROM ist aufgebaut mit 4096 mal 8 Bits. Die sind irgendwie aufgeteilt in 256 Seiten mit jeweils 32 Bytes?!? Daraus werd ich nicht schlau...

Jetzt steht da noch was mit "32-Byte-Page Write Mode", mit dem ich aber auch nicht richtig was anfangen kann. Heißt das, das ich mit einem Schritt nur 32Bytes schreiben kann und dann warten muss bis das EEPROM das verarbeitet hat?
Dann würde ich also 128x32 Bytes schreiben, immer maximal 10ms warten müssen?

D.h..
--> 2,13 [sek] für die Serielle Datenübertragung
+ 1,28[sek] ( 128*10[ms] )
= 3,41 Sekunden zum komplett alles beschreiben ?!?
(ja da fehlt noch die Zeit zum übertragen per I2C auf das EEPROM...)

Beim Lesen hätte ich laut meiner Interpretation diese Wartezeit nicht, aber kann ich das komplette EEPROM auf einmal lesen?

SprinterSB
28.09.2005, 16:34
Wie der EEPROM intern organisiert ist, kann dir egal sein. Jedenfalls werden beim 'Page Write' maximal 32 Byte unterstützt, beim 'Sequential Read' gibt es keine Beschränkung. Nach dem Senden der zu brennenden Bytes wartest du bis das Teil fertig ist, wie unter 'Acknowledge Polling' beschrieben. Danach geht's weiter.

Über einen UART 8n1 von 19.2kbit/s bekommst du recht genau 1.92 kByte/s. Allerdings ist das nur die reine Übertragungszeit ohne die Zeit zur Verarbeitung oder wo der PC/µC rumschnarcht oder auf die Gegenseite wartet.

BlooD
29.09.2005, 18:55
Dann ist das schreiben klar.

Bbeim lesen kann ich also - so wie du sagst - die kompletten 4096 Bytes auf einmal lesen? Oder doch nicht?