4.02.2014

Prawdziwy ethernet na ENC28J60

Może i mIP jest dobre na początek, ale na dłuższą metę nie da się tego używać. Dlatego postanowiłem udostępnić (na razie) skompilowaną wersję CLR dla STM32F4Discovery z obsługą ethernetu na ENC28J60. Od razu ostrzegam: nie wiem czy wszystko poprawnie chodzi. Pliki źródłowe udostępnię w późniejszym czasie.

Wszystko trzeba połączyć tak jak w opisie dla mIP: Ethernet na ENC28J60. Za pomocą jakiegoś kota z mIP można też sprawdzić czy wszystko jest dobrze połączone. Jeśli tak, to teraz wystarczy wgrać ER_CONFIG i ER_FLASH. Pliki znajdują się tutaj: OneWire+SDCard+Enc28j60.

No dobra. Szybkie sprawdzenie czy wszystko jest ok. Wyświetlamy informacje o dostępnych interfejsach i włączamy DHCP, tak aby automatycznie pobierać adres IP.

NetworkInterface[] eths =  NetworkInterface.GetAllNetworkInterfaces();
if(eths.Length == 0)
{
    Debug.Print("Ethernet error");
    return;
}

NetworkInterface networkInterface = eths[0];
networkInterface.EnableDhcp();

Debug.Print("Ethernet ok");

Mała dygresja na temat EnableDhcp. Po użyciu tej funkcji (jeśli wcześniej był statyczny IP, a taki jest domyślnie ustawiony) potrzebny jest reset płytki. Funkcja ta zmienia parametr w konfiguracji, a nie w czasie rzeczywistym odświeża adres z DHCP. Równie dobrze możemy to zrobić jednorazowo z MFDeploy w menu Target->Configuration->Network. Może jest jakaś poprawka na takie zachowanie tej funkcji, ale na razie nie sprawdzałem.
STM32F4Discovery network

2 komentarze:

  1. Czy mógłbyś opisać jak zmodyfikować pliki *.proj (może też jakieś inne) aby wkompilować funkcjonalność lwip @ eth28j60?

    OdpowiedzUsuń
  2. Niestety te modyfikacje były robione dla wersji NET MF 4.2 i są nieaktualne. Musiał bym sobie to wszystko jakoś odświeżyć. Pamiętam, że był z tym problem bo zmiany obejmowały też DeviceCode dla STM32F4. Możesz popatrzeć do zmian tutaj (FEZCerberus): https://github.com/NicolasG3/NETMF4.3_Community. Cerberus miał taki sam mikrokontroler jak Discovery.

    OdpowiedzUsuń