10 years, 9 months ago.

Ethernet for mbed board without ethernet

Hello,

i got a stm32 nucleo F4. Now i would like to play around with ethernet but the board does not have it.

Is there an external ethernet board with support of the mbed ethernet stack? Any recommendation, what to buy oder diy?

Thanks Heiko

You said you got the Arduino to work. Can you share what you did to get it to work. Thanks in advance.

posted by Bill Crupi 03 Apr 2014

7 Answers

10 years, 9 months ago.

Hi,

It also looks like there is a design challenge using a WIZNet part running on Circuit Cellar. There are samples being given away, and a prize for the winner :

http://circuitcellar.com/wiznet2014/

Thanks, Chris

10 years, 9 months ago.

Hello Heiko,

thanks for your interrest and sorry I did not answer more early, but our Team was on embedded world and on AMPER exhibition. Now we are all back and I like to advice in parallel to take a look into the WIZnet Wiki "the living Datasheet" and the Forum for more detailed tech. support by all global WIZnet members. Wiki: http://wizwiki.net/wiki Forum: http://wizwiki.net/forum

Anyway the WIZ550io Module and the W5500 chip is best for the mbed platform to add high performance Internet connection. You find our Products also at mbed components -> Ethernet : https://mbed.org/components/cat/ethernet/

best regards, Joachim

Thanks. I got a Wiznet 5100 Arduino shield. It is working. best regards, Heiko

posted by Heiko Greiner 25 Mar 2014

The pin outs don't seem to match the Arduino pins on the stm32 nucleo F401RE. Can you comment on this? Like the pin out RDY does not show up on the nucleo F401RE.

posted by Bill Crupi 03 Apr 2014

Hi Bill, i am not using any pin besides spi and cs. With my W5100 shild board i had to handwire the spi to the spi pins in the middle/end of the board (the sd is not working, because it ist designed for a 5V system). I wonder, why they did not connect the spi of the arduino shield, btw. it was a cheap version from ebay. best regards

posted by Heiko Greiner 03 Apr 2014
9 years, 8 months ago.

we just recently posted an example where we interfaced the Arduino Ethernet Shield with a Nordic Semiconductor nRF51-DK.

http://evothings.com/how-to-use-an-arduino-ethernet-shield-with-the-nordic-semiconductor-nrf51-dk/

there might be some lessons to be learnt from our experience on this.

Aaron Ardiri

10 years, 8 months ago.

Hi Martin,

I post the W5500 driver and you can use it with WIZ550io. https://mbed.org/users/jbkim/code/W5500_Driver/ I'm porting it to existing mbed Ethernet stack.

Thanks, Jinbuhm Kim

10 years, 7 months ago.

Hi Heiko, could you point me to the library you used to get this working, possibly with a link.

I've got a stand-alone Wiz5100 board, the Wiz812MJ and I'd like to try to get it working with the L152RE Nucleo.

Many thanks,

TheCageybee

Hi, i used a library for the w5200 (http://mbed.org/users/va009039/notebook/wiz820ionetif/)and i changed the routines for read, write and memory layout. That lib works perfectly with other ethernet libs from mbed (e.g. websockets).

I changed:

int WIZ820io::send(int socket, const char * str, int len)
{
    if (socket < 0) {
        return -1;
    }
    uint16_t base = TXBUF_BASE + socket * 0x800;
    uint16_t ptr = sreg<uint16_t>(socket, Sn_TX_WR);
    uint16_t dst = base + (ptr&(0x800-1));

    if ((dst + len) > (base+0x800)) {
        int len2 = base + 0x800 - dst;
        spi_write(dst, (uint8_t*)str, len2);
        wait_us(10);
        spi_write(base, (uint8_t*)str+len2, len-len2);
    } else {
        spi_write(dst, (uint8_t*)str, len);
    }
    sreg<uint16_t>(socket, Sn_TX_WR, ptr + len);
    scmd(socket, SEND);
    //wait(0.1);
    return len;
}

int WIZ820io::recv(int socket, char* buf, int len)
{
    if (socket < 0) {
        return -1;
    }
    uint16_t base = RXBUF_BASE + socket * 0x800;
    uint16_t ptr = sreg<uint16_t>(socket, Sn_RX_RD);
    uint16_t src = base + (ptr&(0x800-1));

    if ((src + len) > (base+0x800)) {
        int len2 = base + 0x800 - src;
        spi_read(src, (uint8_t*)buf, len2);
        spi_read(base, (uint8_t*)buf+len2, len-len2);
    } else {
        spi_read(src, (uint8_t*)buf, len);
    }

    sreg<uint16_t>(socket, Sn_RX_RD, ptr + len);
    scmd(socket, RECV);

    return len;
}

#define TXBUF_BASE 0x4000
#define RXBUF_BASE 0x6000

Later i ordered a W5200 Board an i use the library directly (thanks to Norimasa Okamoto)

maybe it helps you. Heiko

posted by Heiko Greiner 14 May 2014
10 years, 9 months ago.

Hello,

from top of my head, look for wiznet modules, search for w5500 or w5200, there are libraries. I have seen it used with KL25Z. I have one at home but not yet tested.

Regards, 0xc0170

10 years, 9 months ago.

Thanks, i will have a look. Heiko