Hallo,
ich versuche gerade das lpcopen echo server example auf meinem lpc1768
zum laufen zu bekommen. Als dev Board habe ich ein mini-dk2 welches den
gleichen ethernet phy lan8720a wie auf dem NXP_LPCXPRESSO board hat.
Mein Projekt habe ich soweit aufgesetzt und der compiler laeuft auch
durch.
Ich habe jetzt nach und nach die funktionen zum Initialisieren von lwip
in der main hinzugefuegt.
Nachdem ich das hinzugefuegt habe ging meine Systick LED nicht mehr...
1 | netif_add(&lpc_netif, &ipaddr, &netmask, &gw, NULL, lpc_enetif_init, ethernet_input);
|
Ich habe mich auf die Suche gemacht...
lpc_enetif_init -> low_level_init -> Chip_ENET_Init(LPC_ETHERNET, true)
Hier drin wird der Peripherial Clock gesetzt und resetENET aufgerufen.
So und danach wird das pENET struct beschrieben ... genau da
verabschiedet sich das Programm.
1 | void Chip_ENET_Init(LPC_ENET_T *pENET, bool useRMII)
|
2 | {
|
3 | Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_ENET);
|
4 | resetENET(pENET);
|
5 |
|
6 | /* Initial MAC configuration for full duplex,
|
7 | 100Mbps, inter-frame gap use default values */
|
8 | pENET->MAC.MAC1 = ENET_MAC1_PARF;
|
9 | pENET->MAC.MAC2 = ENET_MAC2_FULLDUPLEX | ENET_MAC2_CRCEN | ENET_MAC2_PADCRCEN;
|
10 |
|
11 | Board_LED_Set(LEDS_LED1, 0);
|
12 |
|
13 | if (useRMII) {
|
14 | pENET->CONTROL.COMMAND = ENET_COMMAND_FULLDUPLEX | ENET_COMMAND_PASSRUNTFRAME | ENET_COMMAND_RMII;
|
15 | }
|
16 | else {
|
17 | pENET->CONTROL.COMMAND = ENET_COMMAND_FULLDUPLEX | ENET_COMMAND_PASSRUNTFRAME;
|
18 | }
|
19 |
|
20 | pENET->MAC.IPGT = ENET_IPGT_FULLDUPLEX;
|
21 | pENET->MAC.IPGR = ENET_IPGR_P2_DEF;
|
22 | pENET->MAC.SUPP = ENET_SUPP_100Mbps_SPEED;
|
23 | pENET->MAC.MAXF = ENET_ETH_MAX_FLEN;
|
24 | pENET->MAC.CLRT = ENET_CLRT_DEF;
|
25 |
|
26 | /* Setup default filter */
|
27 | pENET->CONTROL.COMMAND |= ENET_COMMAND_PASSRXFILTER;
|
28 |
|
29 | /* Clear all MAC interrupts */
|
30 | pENET->MODULE_CONTROL.INTCLEAR = 0xFFFF;
|
31 |
|
32 | /* Disable MAC interrupts */
|
33 | pENET->MODULE_CONTROL.INTENABLE = 0;
|
34 |
|
35 | }
|
Ich habe mal geschaut wo hin dieser pointer zeigt.
1 | /* AHB peripheral */
|
2 | #define LPC_ENET_BASE 0x50000000
|
Das ist laut UM10360.pdf auch voellig richtig. Leider weis ich nicht
warum ich da nichts schreiben darf :(