[NXP]/LPC17002011. 11. 6. 23:00

[LPC1756 EVM] TCP/IP Server 전송 속도 테스트

[LPC1756 EVM] TCP/IP Server 전송 속도 테스트


LPC1756 을 이용하여 SPI방식의 Hardwired TCP/IP 모듈 W5200을 테스트 했다.
SPI속도가 빠르기 때문에 간단한 이더넷 솔루션으로 사용해 볼 만하다.
(TCP/IP 전송 속도 테스트 참고)

LPC1756의 SPI클럭 최대 속도는 48Mhz 이지만 실제 24Mhz이상에서는 정상적으로 동자하지 않는다.
SPI클럭 24Mhz에서 2.8Mbps 정도 출력된다.
(PIC32에 비하면 약간은 기대에 못미치는데... 클럭만 빠르다고 전송속도가 빠른것은 아닌것 같다.)


[31] iInChip Send: 2.8086 Mbps(348160 bytes, 0.9457 sec)
iInChip Recv: 2.5316 Mbps(348160 bytes, 1.0492 sec)
------------------------------------------------------------
[32] iInChip Send: 2.8575 Mbps(348160 bytes, 0.9296 sec)
iInChip Recv: 2.4732 Mbps(348160 bytes, 1.0740 sec)
-------------------------------------------------------


[LPC1756 EVM] W5200 드라이버 코드

//-----------------------------------------------------------------------------
// W5100 HAL
#define W5100_CS_PORT     GPIO0
#define W5100_CS_BIT     BIT16

#define W5100_RST_PORT     GPIO0
#define W5100_RST_BIT     BIT6

#define IINCHIP_RSToff()    cbi(W5100_RST_PORT, W5100_RST_BIT) 
#define IINCHIP_RSTon()     sbi(W5100_RST_PORT, W5100_RST_BIT)


#define W5100_IO_INIT()     GPIOInit(0, DIR_OUT, W5100_CS_BIT);GPIOInit(0, DIR_OUT, W5100_RST_BIT)


#define IINCHIP_CSoff()     cbi(W5100_CS_PORT, W5100_CS_BIT)
#define IINCHIP_CSon()     sbi(W5100_CS_PORT, W5100_CS_BIT)

#define IINCHIP_SPI_INIT()    SPI0_Init()
//#define IINCHIP_SpiSendData    SPI0_WriteByte
#define IINCHIP_SpiSendData    SPI0_WriteReadByte
#define IINCHIP_SpiRecvData    SPI0_WriteReadByte
//-----------------------------------------------------------------------------

Posted by nexp

댓글을 달아 주세요

[NXP]/LPC1k2011. 10. 19. 10:46

[LPC1111 EVM] W5200 TCP/IP 테스트

[LPC1111 EVM] W5200 TCP/IP 테스트


하드웨어 TCP/IP W5200모듈을 NET-EXP보드에서 테스트 했다.

LPC1100
Cortex-M0코어의 저렴한 LPC1113의 SPI최대 속도가 12Mhz이고 W5200 TCP전송 속도는 1.5Mbps정도 나온다.
[1] iInChip Send: 1.5744 Mbps(3966014 bytes, 19.2184 sec)
iInChip Recv: 1.5546 Mbps(3966014 bytes, 19.4632 sec)
------------------------------------------------------------
[2] iInChip Send: 1.5687 Mbps(3966014 bytes, 19.2887 sec)
iInChip Recv: 1.5694 Mbps(3966014 bytes, 19.2800 sec)
------------------------------------------------------------



LCP1100 핀맵


[NET-EVM] W5100 핀맵 회로도



LPC1113 W5200 테스트 드라이버 코드
#define _SPI0_ENABLE    1

//-----------------------------------------------------------------------------
// W5100 HAL
#define W5100_CS_PORT     PORT0
#define W5100_CS_BIT     BIT2

#define W5100_RST_PORT     PORT0
#define W5100_RST_BIT     BIT1

#define IINCHIP_RSToff()    Cbi(W5100_RST_PORT, W5100_RST_BIT) 
#define IINCHIP_RSTon()     Sbi(W5100_RST_PORT, W5100_RST_BIT)


#define W5100_IO_INIT()     GPIOSetDir( 0, 1, 1 );GPIOSetDir( 0, 2, 1 );

#define IINCHIP_CSoff()     Cbi(W5100_CS_PORT, W5100_CS_BIT)
#define IINCHIP_CSon()     Sbi(W5100_CS_PORT, W5100_CS_BIT)

#define IINCHIP_SPI_INIT()    SPI0_Init()
//#define IINCHIP_SpiSendData   SPI0_WriteByte
#define IINCHIP_SpiSendData    SPI0_WriteReadByte
#define IINCHIP_SpiRecvData    SPI0_WriteReadByte
//-----------------------------------------------------------------------------




Posted by nexp

댓글을 달아 주세요

[MCU]/CANTUS2011. 10. 1. 23:24

[CANTUS EVM] W5200을 이용한 TCP/IP 전송 속도 테스트

[CANTUS EVM] W5200을 이용한 TCP/IP 전송 속도 테스트


CANTUS는 데이터 버스가 있기 때문에 궂이 SPI을 통해 제어할 필요는 없지만 SPI속도가 23Mhz라 테스트 해 볼만하다.
[NET-EVM] 보드를 이용하녀  SPI만 지원하는 W5200 모듈의 TCP 전송속도를  테스트 해 보았다.

SPI 최대 클럭이 23Mhz 일때 전송 속도는 2.38Mbps가 출력 된다.





W5200 드라이버 코드
//-----------------------------------------------------------------------------
// W5100 HAL
#define W5100_CS_PORT     
#define W5100_CS_BIT     BIT5
#define W5100_RST_BIT     BIT4

#define W5100_IO_INIT()     Sbi(*R_PAF4, (3<<(2*5)));Sbi(*R_P4oDIR, W5100_CS_BIT);\
          Sbi(*R_PAF2, (3<<(2*4)));Sbi(*R_P2oDIR, W5100_RST_BIT)

#define IINCHIP_CSoff()     Sbi(*R_P4oLOW, W5100_CS_BIT)
#define IINCHIP_CSon()     Sbi(*R_P4oHIGH, W5100_CS_BIT)

#define IINCHIP_SPI_INIT()    SPI0_Init()
#define IINCHIP_SpiSendData    SPI0_WriteReadByte
#define IINCHIP_SpiRecvData    SPI0_WriteReadByte

#define IINCHIP_RSToff()    Sbi(*R_P2oLOW, W5100_RST_BIT)
#define IINCHIP_RSTon()     Sbi(*R_P2oHIGH, W5100_RST_BIT)
//-----------------------------------------------------------------------------

Posted by nexp

댓글을 달아 주세요

[Microchip]/dsPIC2011. 9. 30. 22:12

[dsPIC33 EVM] W5200 TCP/IP Loopback 전송 속도 테스트

[dsPIC33 EVM] W5200 TCP/IP Loopback 전송 속도 테스트



dsPIC33을 이용하여 SPI방식의 하드웨어 TCP/IP W5200 (W5100)의 전송 속도를 테스트 했다.

SPI클럭 13Mhz 에서 최대로 나오며 2.5Mbps 정도 출력 된다.

[3] iInChip Send: 2.3772 Mbps(6596649 bytes, 21.1710 sec)
iInChip Recv: 2.4131 Mbps(6596649 bytes, 20.8568 sec)
------------------------------------------------------------
[4] iInChip Send: 2.3933 Mbps(6596649 bytes, 21.0288 sec)
iInChip Recv: 2.4132 Mbps(6596649 bytes, 20.8557 sec)
------------------------------------------------------------





[NET EVM] 보드에서 W5200 핀맵





dsPIC33 W5100 HAL 드라이버 코드 소스
//-----------------------------------------------------------------------------
// W5100 HAL
#define W5100_CS_PORT     PORTG
#define W5100_CS_BIT     BIT9


#define W5100_RST_PORT     PORTF
#define W5100_RST_BIT     BIT6

#define IINCHIP_RSToff()    Cbi(W5100_RST_PORT, W5100_RST_BIT) 
#define IINCHIP_RSTon()     Sbi(W5100_RST_PORT, W5100_RST_BIT)


#define IINCHIP_CSoff()     Cbi(W5100_CS_PORT, W5100_CS_BIT)
#define IINCHIP_CSon()     Sbi(W5100_CS_PORT, W5100_CS_BIT)

#define W5100_IO_INIT()     Cbi(TRISG, W5100_CS_BIT);Cbi(TRISF, W5100_RST_BIT);

#define IINCHIP_SPI_MAX_SPEED()   SPI1_SetSpeed(SPI_SPEED_MAX)
#define IINCHIP_SPI_INIT()    SPI1_Init();IINCHIP_SPI_MAX_SPEED()
//#define IINCHIP_SpiSendData    SPI0_WriteByte
#define IINCHIP_SpiSendData    SPI1_WriteReadByte
#define IINCHIP_SpiRecvData    SPI1_WriteReadByte
//-----------------------------------------------------------------------------


Posted by nexp

댓글을 달아 주세요

[TI]/LM3S5xxx2011. 9. 15. 23:00

[LM3S5732 EVM] W5200 테스트

[LM3S5732 EVM] W5200 테스트










type.h의 bool 타입이 기존 프로젝트와 겹쳐서 컴파일 에러가 발생한다.
이런 부분은 컴파일마다 차이가 발생할 수 있으므로 unsigned char로 대체 했다.
//typedef enum { false, true } bool;


socket.c, socket.h 파일에서 bool 사용하는것을 수정 했다.
extern uint16 send(SOCKET s, const uint8 * buf, uint16 len, bool retry); // Send data (TCP)


다른 MCU와 다르게 INT/RST 를 묶어 두었을때 포트가 정상 동작하지 않는다.(다른 MCU에서는 INT/RST핀을 동시에 사용하도록 했었다.)
아무래도 GPIO특성상 4mA밖에 흘리지 못해서 그런것 같다.
INT/RST 핀을 따로 분리 하니 잘 동작한다.




또 한가지 문제가 발생 했다.

SPI클럭 설정 부분에서 12Mhz이상 되면 정상 동작하지 않는다.
스펙상으로 25Mhz까지 동작한다고 하는데...
12Mhz이상 설정하면 무조건 25Mhz클럭이 출력되도 정상 동작하지는 않는다.

 SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(),
        SSI_FRF_MOTO_MODE_0, //SPI MODE 설정
        SSI_MODE_MASTER,  //Maser/Slave
        12000000,    //SPI 클럭 주파수
        gSpIDataWidth);     //데이터크기


SSIClk = FSysClk / (CPSDVSR * (1 + SCR))

레지스터를 직접 설정해 보았지만 아무리 조합 해 봐도 12Mhz이상 나오지 않는다. 계산상으로도 그렇고..(CPSR 은 2의 배수이기 때문이다.)
HWREG(SSI0_BASE + SSI_O_CPSR) = 3;
HWREG(SSI0_BASE + SSI_O_CR0) &= ~(0xFF00);

결론은 Luminary의 최대 클럭은 12Mhz이다.


12Mhz일 때 TCP 전송 속도는 1.79Mbps정도 된다. 
[1] iInChip Send: 1.7998 Mbps(3966014 bytes, 16.8116 sec)
iInChip Recv: 1.7996 Mbps(3966014 bytes, 16.8136 sec)
------------------------------------------------------------
Posted by nexp

댓글을 달아 주세요