Hallo liebe Community, ich habe ein Problem mit dem W5200 von WIZnet. Ich würde diesen Chip gerne verwenden um die serielle Schnittstelle des STM32F103C8 (Entwicklungsumgebung COIDE) auf Ethernet umzusetzen. Der µC sammelt verschiedene Sensordaten und soll diese periodisch an einen PC senden. Die Übertragung ist verlusttolerant, ich wollte dafür das UDP-Protokoll verwenden. Ich verwende kein Developmentboard, sondern eine eigene Schaltung. Diese ist bereits fertig. Aus diesem Grund würde ich auch gerne genau diesen Chip verwenden. Mein Problem besteht darin, dass ich einfach nicht weiß, wie dieser Chip funktioniert. Ich weiß nicht wie ich ihn programmieren kann bzw. was ich überhaupt für eine Entwicklungsumgebung/Compiler ich verwenden kann. Ich habe ziemlich viel im Internet rumgegoogelt und auch einiges an Dokumenten/Foreneinträgen usw. gefunden aber nichts was mit weiterhilft. Ich habe auch noch recht wenig Erfahrung mit µC. Hat einer von euch Erfahrung mit dem Chip? Ich würde mich wahnsinnig über ein paar Tipps freuen. Grüße Karl-Friedrich
Hi Hier findest du die passenden Informationen: http://www.wiznet.co.kr/Sub_Modules/en/product/Product_Detail.asp?cate1=5&cate2=7&cate3=56&pid=1144#tab Die Firmware ist für STM32F10X gemacht. Datenblätter von WIZNET sind recht verständlich. MfG Spess
Danke Spess. Soweit war ich auch schon. In den Datenblättern steht allerdings nur irgendetwas von SPI-Mode, was ich nicht wirklich begreife:( Muss ich dem W5200 die Firmware per SPI schicken? Und wenn ja wie?
Karl-Friedrich schrieb: > Muss ich dem W5200 die Firmware per SPI schicken? Und wenn ja wie? Die Firmware hat er schon fertig im Bauch. Der TCP/IP-Socket-API von dem Teil wird per SPI angesprochen, d.h. Open/Read/Write/Close Operationen auf Sockets werden per SPI übertragen.
Aha ok, jetzt fang ich langsam an zu verstehen... Weiß jemand von euch wo man diesen Befehlssatz findet? Wie kann ich dann Register setzten? (Wenn ich z.B. UDP als Protokoll auswählen will?) Vielen Dank euch allen
Hi >Muss ich dem W5200 die Firmware per SPI schicken? Und wenn ja wie? Dem schickst du überhaupt keine Firmware. Der W5200 wird über Common und Socket Register konfiguriert. Und das sowie der Zugriff auf Sende- und Empfangspuffer erfolgt über SPI. Da must du dich mal durchs Datenblatt wühlen. Ist aber nicht soo kompliziert. Meine Firmware läuft auf AVRs und ist in Assembler geschrieben. MfG Spess
Gut, aber dann habe ich immer noch ein Problem. Ich komme in meinem Programm ja letztendlich immer an den Punkt, an dem ein Befehl wie z.B. SPI_sendDatata("Was gesendet werden soll") steht. Was trage ich hier ein? Ich finde keine Befehle und ich kann ja wohl schlecht C-Code im ASCII Format schicken oder?
Karl-Friedrich schrieb: > Weiß jemand von euch wo man diesen Befehlssatz findet? In der Doku. Die gibt es wirklich. Nachweislich.
Hi >Ich finde keine Befehle und ich kann ja wohl schlecht C-Code im >ASCII Format schicken oder? Weil es in dem Sinne keine Befehle gibt. Das erfolgt alles über die Register des W5200. Um z.B dem WS5200 die IP-Adresse 192.168.0.2 zuzuweisen must du folgendes über SPI senden: 0x00 HighByte SIPR-Adresse 0x0F Lowbyte SIPR-Adresse 0x80 HighByte Länge Daten (Bit 7 = 1 -> Schreiben) 0x04 Lowbyte Länge Daten (4 Byte) 0xC0 192 0xA8 162 0x00 0 0x02 2 Oder um den Socket0 zu öffnen: 0x40 HighByte Socket0 Command Register 0x01 LowByte Socket0 Command Register 0x80 HighByte Länge Daten (Bit 7 = 1 -> Schreiben) 0x01 Lowbyte Länge Daten (1 Byte) 0x01 Befehl Socket öffnen MfG Spess
spess53 schrieb: > 0xA8 162 ^ 8 Ist aber nur ein klitzekleiner Fehler im Kommentar, die 0xA8 stimmen :-)
Hi
>Vielen Dank Spess. Genau so was hatte ich gesucht.
Ich habe eigentlich nur das wiedergegeben, was in Kapitel 6 External
Interface ausführlich beschrieben ist.
MfG Spess
Kann es sein, dass wir verschiedene Datenblätter haben? Der Titel von meinem lautet "iEthernet W5200 Datasheet (Version 1.3.0)" und umfasst 88 Seiten.
Hi >Kann es sein, dass wir verschiedene Datenblätter haben? >Der Titel von meinem lautet "iEthernet W5200 Datasheet (Version 1.3.0)" >und umfasst 88 Seiten. Bei mir ist es Version 1.2.1. Aber Die Unterschiede zur aktuellen Version sind nicht gravierend. Wie kommst du jetzt darauf? MfG Spess
Hi Weil ich aus den Angaben im Datenblatt nicht auf dein Beispiel gekommen wäre. Vielen Dank. Ich glaube jetzt sollte ich einigermaßen klarkommen :)
Hi >Weil ich aus den Angaben im Datenblatt nicht auf dein Beispiel gekommen >wäre. Dann lies dir doch noch mal den /* Pseudo Code for Write data of 8bit per packet */ ... SpiSendData(((addr+idx) & 0xFF00) >> 8); // Address byte 1 SpiSendData((addr+idx) & 0x00FF); // Address byte 2 SpiSendData((data_write_command | ((data_len& 0x7F00) >> 8))); SpiSendData((data_len& 0x00FF)); for(int idx = 0; idx<data_len; idx++) SpiSendData(data_buf[idx]); ... in Ruhe durch und vergleiche das mal mit meinen Kommentaren. Und beachte bitte, das im Datenblatt Pseudocode verwendet wird. Das zweite Beispiel von mir würde im Datenblatt als Sn_CR = OPEN; auftauchen. Dahinter steckt aber so eine Sequenz wie oben beschrieben. MfG Spess
Hi Ja das hab ich jetzt auch geschnallt, vielen Dank. Bis jetzt hab ich einfach nicht kapiert wie das mit dem Pseudo-Code gemeint ist. Ich dachte, dass sei Beispiel Code. Aber als ich es gerade nochmal gelesen hab ist es mir auch aufgefallen. Ich hab halt ziemlich wenig Erfahrung mit µC und ich bin auch nicht sonderlich versiert mit hardwarenahen Sprachen. Aber ich habe es jetzt denk ich geschnallt. Es werden immer 4 Informationen gesendet, bestehend aus Register-Adresse, Lesen/Schreiben, Datenlänge und den Daten. Ich denk mit dem Verständnis bekomm ich das schon auf die Reihe. Vielen Dank Spess
Hi >Es werden immer 4 Informationen gesendet, bestehend aus >Register-Adresse, Lesen/Schreiben, Datenlänge und den Daten. Ich denk >mit dem Verständnis bekomm ich das schon auf die Reihe. Das R/W-Bit ist höherwertigste Bit der Datenlänge. Wird also zusammen mit dem High-Byte gesendet. >Ich hab halt ziemlich wenig Erfahrung >mit µC und ich bin auch nicht sonderlich versiert mit hardwarenahen >Sprachen. Hatte ich mir schon gedacht. MfG Spess
Hi zusammen, bei mir hat sich doch noch einmal eine Frage ergeben: Woher weiß der W5200 eigentlich, ob ich gerade Befehle sende, die er verarbeiten soll, oder ob ich gerade Daten schicke, die er nur weitersenden soll? Wäre wichtig zu wissen, nicht dass er nachher meine Nutzdaten als Befehle interpretiert.
Hi >Woher weiß der >W5200 eigentlich, ob ich gerade Befehle sende, die er verarbeiten soll, >oder ob ich gerade Daten schicke, die er nur weitersenden soll? Das ergibt sich aus dem Register in das du schreibst. Die einzigen Register die Befehle annehmen können sind, wie der Name schon sagt, die Socket Command Register. MfG Spess
Hi OK, das heißt also ich schreibe Daten die keine Befehle sind in den RX_Memory. Also um das nochmal Zusammenzufassen, wie ich mir das vorstelle: Nutzdaten werden in den RX_Memory geschrieben. Dann wird der Socket konfiguriert und geöffnet. Danach werden die Nutzdaten vom RX_Memory in den RX_Memory des Sockets geschrieben und dann losgeschickt. Ist das so korrekt? Vielen Dank Spess
Hi >Also um das nochmal Zusammenzufassen, wie ich mir das vorstelle: >Nutzdaten werden in den RX_Memory geschrieben. Wenn schon, dann in den TX-Puffer. >Dann wird der Socket konfiguriert und geöffnet. Bevor du Daten in den TX-Puffer schreibst muss der erst mal konfiguriert sein. Die acht Sockets teilen sich jeweils 16k TX- und 16k RX-Puffer. Den einzelnen Sockets können Speicherbereichein der Größe von 0, 1, 2, 4, 8 oder 16k zugewiesen werden. Wobei die Summe der Speicher der verwendeten Sockets 16k nicht überscheiten darf. Persönlich konfiguriere ich einen Socket gleich komplett. >Danach werden die Nutzdaten vom RX_Memory in >den RX_Memory des Sockets geschrieben und dann losgeschickt. Ist das so >korrekt? Nicht ganz. Im RX-Puffer landen die empfangenen Daten und in den TX-Puffer werden die Daten geschrieben, die gesendet werden sollen. Sieh dir doch einfach mal an wie das gemacht wird. Work->App->Source->W5200 in http://www.wiznet.co.kr/UpLoad_Files/ReferenceFiles/W5200_TCP_and_UDP_SampleCode_v1.3.zip MfG spess
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.