Forum: Mikrocontroller und Digitale Elektronik STM32F103 und ENC28J60


von Fabiw0696 (Gast)


Lesenswert?

Hallo Zusammen,

ich würde gerne den STM32 (STM103VET6) mit dem ENC28J60 in Verbindung 
bringen. Im Grunde genommen möchte ich UDP Pakete empfangen und 
versenden.
Leider habe ich noch nicht so viel Erfahrung mit dem STM32.

Und auf meiner Suche hab ich bisher noch nichts gefunden was mir 
weiterhilft, deshalb hoffe ich mir hier jemand weiterhelfen kann.

Ich arbeite mit CooCox.

Vielen Dank schonmal für eure Hilfe.
Gruß Fabi

: Verschoben durch Moderator
von hp-freund (Gast)


Lesenswert?

https://github.com/vagabondtt1503/STM32F103-ENC28J60

Ist für eclipse aber sollte anpassbar sein.

von Fabiw0696 (Gast)


Lesenswert?

Hallöchen,

ich hab das Beispiel nun mal ausprobiert. Leider springt das Programm in 
den "Default_Handler". Leider kann ich so beim Debuggen keine Fehler 
feststellen.

Gruß
Fabi

von Programmierer (Gast)


Lesenswert?

Hättest du mal einen STM32F107 statt eines STM32F103 genommen, hätte der 
bereits Ethernet integriert und du könntest dir die Fummelei mit einem 
externen Ethernet Controller sparen...

von Fabiw0696 (Gast)


Lesenswert?

Ja ich hatte noch 3-4 ENC28J60 hier deshalb wollte ich die verwenden.

von hp-freund (Gast)


Lesenswert?

Um zu lernen könntest Du versuchen den Fehler zu finden.
Ich würde anfangen beim ld script.

Notfalls auch ein anderes,fertiges Coocox Projekt finden:
http://we.easyelectronics.ru/GYUR22/stm32-discovery-sdwebenc28j60.html

Code:
http://we.easyelectronics.ru/attachments/get/1511

von hp-freund (Gast)


Lesenswert?

Ach, Du wolltest ja für den F103.
Musst also doch noch was tun...

von Fabiw0696 (Gast)


Lesenswert?

Danke schonmal ich werde mich am wochenende mal dran versuchen

von Fabiw0696 (Gast)


Lesenswert?

Tach zusammen,

hab jetzt die Verbindung zwischen ENC und STM32 hinbekommen dank dem 
Link von "hp-freund". Danke nochmal dafür.

Für die, die auch damit arbeiten wollen.

Zu beginn hab ich bei CooCox unter Configuration > Device den Controller 
auf meinen "STM32F103VE" geändert.

Dann gab folgendes Problem. Beim Compilieren kam folgende Fehlermeldung
- "registers may not be the same -- `strexb r0,r0,[r1]"

das habe ich behoben indem ich 2 Zeilen in der Datei "core_cm3.c" 
verändert habe. Und zwar:
- In Funktion __STREXB
__ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r 
(value) );
IN
__ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" 
(value) );

Und in Funktion __STREXH
__ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" 
(value) );
IN
__ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" 
(value) );


Dann kann man den Code compilieren. Wenn man keine SD Karte hat kann man 
einfach die Zeile "while(!mmc_mount());" in der "main.c" datei aus 
kommentieren.
Dann kann man den STM32 mit dem ENC anpingen und die IP im Webbrowser.


Wenn ich nun doch UDP Pakete Senden und Empfangen kann dann bin ich 
zufrieden.
Gruß Fabi

von (prx) A. K. (prx)


Lesenswert?

Fabiw0696 schrieb:
> Dann gab folgendes Problem. Beim Compilieren kam folgende Fehlermeldung
> - "registers may not be the same -- `strexb r0,r0,[r1]"

Man sollte wirklich denken, dass dieser Fehler endlich behoben wäre, 
nachdem ich den Autor der CMSIS bereits 2009 darauf hingewiesen hatte. 
Kann natürlich auch sein, dass Coocox ein steinzeitliches CMSIS 
verwendet.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.