W5200(WIZ820io) network interface

Committer:
va009039
Date:
Thu Apr 19 11:14:43 2012 +0000
Revision:
2:a8df39b4f3aa
Parent:
1:803123933c5a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 1:803123933c5a 1 // WIZ820ioNetIf.cpp 2012/4/17
va009039 0:61831b843b44 2 #include "WIZ820ioNetIf.h"
va009039 0:61831b843b44 3 #include "w5100.h"
va009039 0:61831b843b44 4
va009039 1:803123933c5a 5 extern SPI* pSPI; // w5100.cpp
va009039 1:803123933c5a 6 extern DigitalOut* pCS; // w5100.cpp
va009039 1:803123933c5a 7
va009039 1:803123933c5a 8 DigitalOut* pRESET = NULL;
va009039 1:803123933c5a 9
va009039 1:803123933c5a 10 void hardware_reset() {
va009039 1:803123933c5a 11 if (!pRESET) {
va009039 1:803123933c5a 12 pRESET = new DigitalOut(p15);
va009039 1:803123933c5a 13 }
va009039 1:803123933c5a 14 if (pRESET) {
va009039 1:803123933c5a 15 pRESET->write(1);
va009039 1:803123933c5a 16 pRESET->write(0);
va009039 1:803123933c5a 17 wait_us(2);
va009039 1:803123933c5a 18 pRESET->write(1);
va009039 1:803123933c5a 19 wait_ms(150);
va009039 1:803123933c5a 20 }
va009039 1:803123933c5a 21 }
va009039 1:803123933c5a 22
va009039 0:61831b843b44 23 bool wait_linkup(int timeout = 5000) {
va009039 0:61831b843b44 24 Timer link_t;
va009039 0:61831b843b44 25 link_t.start();
va009039 0:61831b843b44 26 while(link_t.read_ms() < timeout) {
va009039 0:61831b843b44 27 if (0x20 & W5100.readPHYSTATUS()) {
va009039 0:61831b843b44 28 return true;
va009039 0:61831b843b44 29 }
va009039 0:61831b843b44 30 wait_ms(50);
va009039 0:61831b843b44 31 }
va009039 0:61831b843b44 32 return false;
va009039 0:61831b843b44 33 }
va009039 0:61831b843b44 34
va009039 1:803123933c5a 35 void WIZ820ioNetIf::spi(PinName mosi,PinName miso, PinName sclk) {
va009039 1:803123933c5a 36 pSPI = new SPI(mosi,miso,sclk);
va009039 1:803123933c5a 37 }
va009039 1:803123933c5a 38 void WIZ820ioNetIf::cs(PinName _cs) {
va009039 1:803123933c5a 39 pCS = new DigitalOut(_cs);
va009039 1:803123933c5a 40 }
va009039 1:803123933c5a 41 void WIZ820ioNetIf::reset(PinName _reset) {
va009039 1:803123933c5a 42 pRESET = new DigitalOut(_reset);
va009039 1:803123933c5a 43 }
va009039 1:803123933c5a 44
va009039 0:61831b843b44 45 int WIZ820ioNetIf::setup(int timeout_ms) {
va009039 1:803123933c5a 46 hardware_reset();
va009039 0:61831b843b44 47 W5100.init();
va009039 0:61831b843b44 48 wait_linkup();
va009039 2:a8df39b4f3aa 49 return W5200NetIf::setup(timeout_ms);
va009039 0:61831b843b44 50 }