Hallo, ich mache gerade ein Praktikum und bin ziemlich ratlos... ich soll Daten auf ein EEPROM (24C02) schreiben. Und zwar per I2C. Wie der I2C arbeitet, mit Adresszuweisung, R/W, Acknowledge usw hab ich mittlerweile verstanden. Aber was ich einfach nicht raus bekomm ist auf welche weiße ich die Daten jetzt auch per I2C verarbeiten kann. Ich finde immer wieder Code ausschnitte mit I2C "Befehlen" werde daraus aber nicht schlau... sind das C Programme oder was genau IST das? o0 Also grundsätzlich..was muss ich mit meinen Daten machen um sie per I2C in das EEPROM zu bekommen? Wahrscheinlich alles total banal, aber wäre fü Hilfe sehr dankbar! Simon
@ Simon (Gast) >Wie der I2C arbeitet, mit Adresszuweisung, R/W, Acknowledge usw hab ich >mittlerweile verstanden. Wirklich? >Aber was ich einfach nicht raus bekomm ist auf welche weiße ich die >Daten jetzt auch per I2C verarbeiten kann. Hä? >Ich finde immer wieder Code ausschnitte mit I2C "Befehlen" werde daraus >aber nicht schlau... sind das C Programme oder was genau IST das? Das sind allegmeine Befehlsabläfe. Ob man das in C, BASCOM oder Sonstwas programmiert ist egal. >Also grundsätzlich..was muss ich mit meinen Daten machen um sie per I2C >in das EEPROM zu bekommen? Du braucht passende Funktionen in deiner Programmiersprache. Ein einfaches Beispiel gibt es hier http://www.mikrocontroller.net/articles/Port-Expander_PCF8574 http://www.mikrocontroller.net/mc-project/Pages/Projekte/ICs/Port%20Expander/Portexpander%20Beispiel.zip MFG Falk
Simon schrieb: > Wie der I2C arbeitet, mit Adresszuweisung, R/W, Acknowledge usw hab ich > mittlerweile verstanden. Wie dein Posting eindrucksvoll zeigt, würde ich diese Aussage vehemment anzweifeln. > Also grundsätzlich..was muss ich mit meinen Daten machen um sie per I2C > in das EEPROM zu bekommen? Grundsätzlich sagt I2C wie du einzelne Bytes überträgst. Mehr sagt I2C nicht aus. Das ist die unterste Ebene. Darüber baut ein 24er EEProm ein Protokoll. Und das geht grundsätzlich so, dass du erst die Adresse schickst, welche du schreiben willst, und danach die Daten welche dort hin sollen. Aber erstmal musst du I2C an sich verstehen. Danach ins Datenblatt des EEPRoms gucken. gruß cyblord
Mit dem I2C übertrag ich Byteweise meine Daten, dazu brauch ich eine Zuweisung auf die Device/Slave Adresse, die Word Adresse und dann die Daten. Start/Stop usw zu Begin und Ende ist ebenfalls klar. Steht ja zB auch im Datasheet des EEPROM (http://www.datasheetcatalog.org/datasheet/fairchild/NM24C02.pdf) aber wie bekomm ich meine Daten in verarbeitbare Byte happen (entspricht .hex File?) Wie beschreib ich daraufhin den Processablauf (zB in C) um diese dann auf das EEPROM zu übertragen? hat es dafür extra I2C Commands? Falls ja, gibts eine Übersischt über diese Commands? Das ganze soll später von einem PowerPC verarbeitet werden und in das EEprom geschrieben... Gruß Simon
Simon schrieb: > aber wie bekomm ich meine Daten in verarbeitbare Byte happen (entspricht > .hex File?) Hier weiß doch niemand wo du deine Daten herbekommst. Das musst du schon selber wissen! Wenn du Werte von einem ADC aufzeichnen sollst, zb Temperaturwerte, dann kriegst du die eben vom ADC. Wenn das digitale Werte sind, dann vielleicht von einem Port. Vielleicht werden die Werte aber auch berechnet, wie zb die Amplitudenwerte einer Sinusschwingung. Oder der Benutzer hat sie eingegeben. Oder .... Das musst du schon selber wissen, wo die Daten herkommen sollen, die ins EEPROM gespeichert werden. > Wie beschreib ich daraufhin den Processablauf (zB in C) um diese dann > auf das EEPROM zu übertragen? hat es dafür extra I2C Commands? Falls ja, > gibts eine Übersischt über diese Commands? Ich denke du hast das Datenblatt schon studiert? Im einfachsten Fall for( i = 0; i < Anzahl der Datenbytes; i++ ) schreibe_per_i2c_ins_eeprom( StartAdresse + i, Datenwert[i] ); > Das ganze soll später von einem PowerPC verarbeitet werden und in das > EEprom geschrieben... Dann solltest du vielleicht erst mal nach einer I2C Library Ausschau halten, die auf deiner konkreten Hardware läuft. Auf einem Power-PC wirst du mit der Fleury Lib nicht glücklich werden.
Ok, die Daten hab ich auf einen einfachen Bitstring reduziert, mehr brauchts nicht. Das sie irgendwo her kommen müssen ist schon klar ;) Ich meinte eig, falls ich zB ein Bild habe und das speichern will. Dann muss ich doch den Bitcode herausfinden durch den das Bild beschrieben wird damit es dann per I2C übertragbar ist. Oder versteh ich das falsch? Die Information im Datenblatt fand ich sehr verwirrend, glaube aber ich habs jetzt verstanden. Das Datenblatt sagt mir, wo in meinem Register ich die Information(Adresse, Daten, .. ) ablegen muss, damit der I2C es als Adresse, Daten, R/W Anweisung usw erkennt. Seh ich das richtig? Das ich eine I2C Library benötige habe ich gerade durch zufall auch rausgefunden, trotzdem danke für den Hinweis! Diese reduziert den Programmieraufwand dann von C Code zu sowas?(siehe Code)
1 | int main(void) |
2 | {
|
3 | unsigned char ret; |
4 | |
5 | i2c_init(); // initialize I2C library |
6 | |
7 | // write 0x75 to EEPROM address 5 (Byte Write)
|
8 | i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode |
9 | i2c_write(0x05); // write address = 5 |
10 | i2c_write(0x75); // write value 0x75 to EEPROM |
11 | i2c_stop(); |
Dann werd ich mal schauen wo ich eine für den PPC Virtex4 finde. Danke
@ Simon (Gast) >Dann werd ich mal schauen wo ich eine für den PPC Virtex4 finde. Mas macht jemand wie du mit einem PPC im einem FPGA? Solltest du nicht erstmal lieber nen LED-Bliker bauen?
Simon schrieb: > Ich meinte eig, falls ich zB ein Bild habe und das speichern will. Auch ein Bild ist nichts anderes als ein Abfolge von Bytes, die irgendwo gespeichert ist. ALLES in einem Computer ist nichts anderes als eine Abfolge von Bytes. Sogar Musik ist nichts anders. Dein Funktion schreibt eine Abfolge von Bytes ab einer bestimmten Speicheradresse ins EEprom. Da ausnahmslos alles in einem Computer eine einfach nur als Abfolge von Bytes gesehen werden kann, folgt daraus, dass man einzig und alleine diese eine Funktion benötigt um alles was in einem Computer vorkommen kann in einem EEPROM zu speichern. Das heißt: solange es da drinn Platz hat.
> Ich meinte eig, falls ich zB ein Bild habe und das speichern will. > Dann muss ich doch den Bitcode herausfinden durch den das Bild > beschrieben wird damit es dann per I2C übertragbar ist. Alles in einem Computer ist eine abfolge von Nulle nund Einsen, also dein sogenannter "Bitcode". Ein Bild sieht auf unterster Ebene genauso aus wie ein mp3 File oder deine Telefonliste in einem Worddokument, sprich du brauchst gar nichts zu konvertieren. Bit ist Bit und Ende. Ob die Software die Bits richtig interpretiert ist eine andere Sache. Du kannst ja auch eine html datei mit einem Browser oder mit einem texteditor öffnen, je nachdem wird die Datei interpretiert und dir wird eine Webseite angezeigt oder der Sourcecode.
Hallo Simon, In einem 24C02 wirst Du kaum ein Bild speichern können, das grösser als ein Fingernagel ist, denn die Speicherkapazität beträgt gerade mal 256 byte. Ich denke Dein Problem ist die praktische Umsetzung der theoretischen Funktion des I2C in ein reales Programm. Dazu sind zunächst folgende Informationen wichtig: * Welchen Mikrocontroller benutzt Du zur Ansteuerung des EEPROMS? * Hast Du Baisroutinen zur I2C-Kommunikation zur Verfügung (z.B. I2C_write), oder willst Du alles selbst programmieren? Der erste Schritt zur Lösung ist das Studium der Datenblätter des Controllers, Abschnitt I2C - manchmal auch unter SSI etc. zu finden- und des 24C02. Dort wirst Du finden, wie man ein Startbit sendet, die Adresse auf den Bus ausgibt, ein Acknowledge-Signal empfängt, etc.. Mike
Das alle Dateien aus Nullen und Einsen aufgebaut sind ist mir klar. Es ging auch mehr um die richtige interpretation. Ich mach mit dem PPC im FPGA das was mein Supervisor will. Ich soll mit dem PPC eine Information in das EEPROM schreiben. Das Blinken einer LED ist ne VHDL Sache von 5 min... @ Mike: Ich habe nur den PPC Virtex 4 aus meinem FPGA um das EEPROM anzusteuern. Eine Library um Basisroutinen auszuführen hab ich bisher nicht gefunden. Scheint also auf "per Hand" hinauszulaufen. Die Datenblätter für das EEPROM und den I2C Controller des PPC versuche ich gerade zu verstehen. Besonders wie die Registerbeschreibung im PPC ist für mich nicht so einfach zu verstehen. Simon
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.