[INTERFACE]/WIZNET_EVM2011. 9. 9. 23:30

[W5200 EVM] TCP 전송 속도 테스트

[W5200 EVM] TCP 전송 속도 테스트


W5200을 이용하여 MCU별로 TCP/IP Loopback 전송 속도를 테스트 해 보았다.
MCU별 SPI최대 속도도 참고 할 수 있는 자료가 될것 같다.
TCP/IP 전송 속도 테스트 결과 참고 

PIC32
마이크로 칩사의 PIC32는 SPI최대 속도가 20Mhz임에도 불구 하고 4MBps정도 까지 출력된다. SPI로 데이터 읽고 쓰는데 상당히 빠른것 같다. 저렴하면서 성능이 좋아 가장 마음에 든다.




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

[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)
------------------------------------------------------------


STM32
최대 SPI클럭 18Mhz 인 [STM32 EVM]에서 전송 속도는 2.5Mbps정도 출력된다.





CANTUS
국산 32bit MCU코어인 CANTUS는 SPI 최대 클럭이 23Mhz이고 이때 전송 속도는 2.38Mbps가 출력 된다.
 ar

인다이렉트/다이렉트 모드로 테스트시

[1] iInChip Send: 7.4276 Mbps(11983617 bytes, 12.3092 sec)
iInChip Recv: 7.4303 Mbps(11983617 bytes, 12.3048 sec)
------------------------------------------------------------


[adStar]

108Mhz로 동작하는 adStar에서는 W5200에서 TPC송수신 속도가 3Mbps정도로 측정된다. 





LPC1LK
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)
------------------------------------------------------------


LM3S5732
TI의 Cortex-M3 LM3S5732의 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)
------------------------------------------------------------


DSP (TMS320F2808)
TMS320F2808의 SPI 최대 속도는 6.2Mhz 정도 이고 이때 TCP 전송 속도는 1.5831 Mbps 정도 나온다.


DSP(TMS320F28335)
TMS32F28335에서 SPI방식의 W5200을 이용하여 TCP Server 전송 속도 테스트 결과 SPI Clock 10MHz에서 대략 2.3Mbps정도 출력된다.


LPC1756 (Cortex-M3)
SPI클럭 24Mhz에서 2.8Mbps 정도 출력된다.

[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)
-------------------------------------------------------


MSP430 (MSP430F5529)
메인 클럭을 32Mhz로 설정하고 SPI클럭을 16Mhz로 설정하여 테스트한 결과 2.2Mbps 정도의 전송 속도가 나온다.

-----------------------------------------------------------
[8] iInChip Send: 2.2657 Mbps(3880723 bytes, 13.0676 sec)
iInChip Recv: 2.1496 Mbps(3880723 bytes, 13.7736 sec)
------------------------------------------------------------
[9] iInChip Send: 2.1323 Mbps(3880723 bytes, 13.8855 sec)
iInChip Recv: 2.2160 Mbps(3880723 bytes, 13.3608 sec)
-------------------------------------------------------



Cortex-M4 STM32F4
SPI 최대 클럭 21Mhz에서 3.5Mbps 정도 나온다
------------------------------------------------------------
[7] iInChip Send: 3.5567 Mbps(5278574 bytes, 11.3230 sec)
iInChip Recv: 3.5074 Mbps(5278574 bytes, 11.4822 sec)
------------------------------------------------------------
[8] iInChip Send: 3.5647 Mbps(5278574 bytes, 11.2975 sec)
iInChip Recv: 3.3565 Mbps(5278574 bytes, 11.9982 sec)
--------------------------------------------------------


EFM32G210 - 저전력 Cortex-M3

EFM32를 이용하여 TCP/IP 전송율 테스트 결과 1.4Mbps 정도

Posted by nexp

댓글을 달아 주세요

  1. 캐럴리

    관리자의 승인을 기다리고 있는 댓글입니다

    2011.09.14 17:55 [ ADDR : EDIT/ DEL : REPLY ]
  2. december

    관리자의 승인을 기다리고 있는 댓글입니다

    2012.07.18 12:52 [ ADDR : EDIT/ DEL : REPLY ]

[Microchip]/PIC322011. 9. 2. 22:00

[PIC32] W5200(W5100) TCP/IP Boopback 전송 속도 Test

[PIC32] W5200(W5100) TCP/IP Boopback 전송 속도 Test





마이크로 칩사의 PIC32는 SPI최대 속도가 20Mhz임에도 불구 하고 4MBps정도 까지 출력된다. SPI로 데이터 읽고 쓰는데 다른 MCU보다 상당히 빠른것 같다. 저렴하면서 성능이 좋아 가장 마음에 든다. (SPI 효율은 가장 뛰어난것 같다.)
TCP/IP 전송 속도 테스트 결과 참고 





PIC32 W5200 제어 HAL 드라이버 코드
#define _SPI0_ENABLE    1

//-----------------------------------------------------------------------------
// W5100 HAL
#define W5100_CS_PORT     LATG
#define W5100_CS_BIT     BIT9


#define W5100_RST_PORT     LATD
#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()     Cbi(TRISG,  W5100_CS_BIT );Cbi(TRISD,  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();IINCHIP_SpiSpeed()
#define IINCHIP_SpiSendData    SPI0_WriteReadByte
#define IINCHIP_SpiRecvData    SPI0_WriteReadByte
#define IINCHIP_SpiSpeed()              SPI0_SetSpeed(SPI_SPEED_MAX)
//-----------------------------------------------------------------------------


Posted by nexp

댓글을 달아 주세요

[TI]/LM3S89622011. 9. 1. 19:49

[LM3S8962 EVM] SPI테스트 - 3축 가속도센서 테스트

[LM3S8962 EVM] SPI테스트 - 3축 가속도센서 테스트




가속도 센서 테스트 드라이버
myMCU-EXP 보드의 가속도 센서(LIS3LV02)는 SPI0, CS(J18->16) ->RD3에 연결되어 있으므로 아래와 같이 드라이버 코드를 작성할 수 있다.
//-----------------------------------------------------------------------------
// myAccel3LV02 HAL
#define MY_ACCEL3LV02_SPI_MODE   1
#define MY_ACCEL3LV02_I2C_MODE   0

#define ACCEL_CS_BIT     BIT3
#define ACCEL_CS_PORT     PORTD

#define ACCEL_CS_INIT()     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);\
          GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, ACCEL_CS_BIT);\
          GPIOPadConfigSet(GPIO_PORTD_BASE, ACCEL_CS_BIT, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
          
#define ACCEL_CS_ASSERT()    Cbi(ACCEL_CS_PORT, ACCEL_CS_BIT)
#define ACCEL_CS_DEASSERT()    Sbi(ACCEL_CS_PORT, ACCEL_CS_BIT)

#define ACCEL_SPI_INIT()    SPI0_Init()
#define ACCEL_Read      SPI0_WriteReadByte
#define ACCEL_Write      SPI0_WriteReadByte
//-----------------------------------------------------------------------------


LM3S8962 SPI데이터 송수신 드라이버 함수 작성
unsigned char SPI0_WriteReadByte(unsigned char Data)
{
 unsigned long rcv_data;
    SSIDataPut(SSI0_BASE,Data);
 SSIDataGet(SSI0_BASE, &rcv_data);
 return rcv_data;
}



[LM3S8962 EVM] SPI 테스트 소스 코드
#include "system.h"
#include "serial.h"
#include "myAccel.h"

int main()
{
 short data;
 
 SystemInit();

 Led1Init();
 Led1On();

 U0_Init(BAUD_115200);
 DebugPrint("CANTUS SPI - Accel LIS3LV02 Test\r\n");

 //가속도 센서 초기화
 myAccel3lvInit();
 myAccel3lvWrite(CTRL_REG1, 0xC7);
 
 while(1)
 {
  if(U0_IsGetByte())
  {
   switch(U0_GetByte())
   {
    case '0':
     DebugPrint("Led1 Off\r\n");
     Led1Off();
     break;

    case '1':
     DebugPrint("Led1 On\r\n");     
     Led1On();
    break;
    
    case 'i':
     myAccel3lvWrite(CTRL_REG1, 0xC7);  //1000.0111 Power on, enable all axis, self test off
     DebugPrint("Accel Init\r\n");
     break;   

    case 'r':
     data = myAccel3lvRead(WHO_AM_I);

     DebugPrint("Who am I? 0x%02X\r\n", data);  
     break; 
     
    case 'x':
     GetAccelValue(AXIS_X, &data);

     DebugPrint("%d\r\n", data);  
     break; 
   }
  }
Posted by nexp

댓글을 달아 주세요

[MCU]/CANTUS2011. 4. 10. 20:59

[CANTUS EVM] SPI테스트 - SPI 가속도 센서 테스트

[CANTUS EVM] SPI테스트 - SPI 가속도 센서 테스트



CANTUS의  SPI구조는 아래 그림과 같고 특징적으로는 8Byte FIFO가 있다.



CANTUS SPI테스트를 위해 [NET-EVM]보드의 가속도 센서를 테스트 해 보았다.
가속도센서의 SPI CS핀은 P5.2에 연결되어 있다.



ADChip사에서 제공하는 드라이버코드는 여러기능을 위해 작성되어 있기 때문에 속도 면이나 기존 코드를 위해 그냥 사용하기는 힘들다. 데이터시트보고 로레벨로 작성해 보았다.
SUINT SPI0_WriteReadByte(SUINT Data)
{
 //SPI포트로 데이터 출력 
 *R_SPI0DATA = Data;
 
 // 전송대기
 while (!(*R_SPI0STAT & SPISTAT_SPIF));
 
 //데이터 수신
 return *R_SPI0DATA;
}


CANTUS SPI모드 설정



CANTUS SPI테스트 동영상




CANTUS SPI 테스트 코드
#include "system.h"
#include "serial.h"
#include "myAccel.h"

int main()
{
 short data;
 
 SystemInit();

 Led1Init();
 Led1On();

 U0_Init(BAUD_115200);
 DebugPrint("CANTUS SPI - Accel LIS3LV02 Test\r\n");

 //가속도 센서 초기화
 myAccel3lvInit();
 myAccel3lvWrite(CTRL_REG1, 0xC7);
 
 while(1)
 {
  if(U0_IsGetByte())
  {
   switch(U0_GetByte())
   {
    case '0':
     DebugPrint("Led1 Off\r\n");
     Led1Off();
     break;

    case '1':
     DebugPrint("Led1 On\r\n");     
     Led1On();
    break;
    
    case 'i':
     myAccel3lvWrite(CTRL_REG1, 0xC7);  //1000.0111 Power on, enable all axis, self test off
     DebugPrint("Accel Init\r\n");
     break;   

    case 'r':
     data = myAccel3lvRead(WHO_AM_I);

     DebugPrint("Who am I? 0x%02X\r\n", data);  
     break; 
     
    case 'x':
     GetAccelValue(AXIS_X, &data);

     DebugPrint("%d\r\n", data);  
     break; 
   }
  }
Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC322011. 3. 12. 22:05

[PIC32-SM EVM] SPI 테스트 - 가속도 센서 테스트

[PIC32-SM EVM] SPI 테스트


PIC32의 SPI는 최대 25Mhz로 동작하며 8, 16, 32비트로 설정가능하다.
[PIC32-SM EVM] 보드에는 SPI핀이 SPI2 RG6(SCLK), RG7(MISO), RG8(MOSI)에 할당되어 있다.

PIC32 블록도



PIC32 SPI초기화
void SPI0_Init(void)
{
 SPI2CONbits.ON  = 1;  // Enable 
 SPI2CONbits.FRZ  = 0;
 SPI2CONbits.SIDL  = 0;
 SPI2CONbits.DISSDO = 0;
 SPI2CONbits.MODE32  = 0;
 SPI2CONbits.MODE16 = 0;  //8비트 모드

//SPI 모드 설정
 SPI2CONbits.SMP  = 0;  //위상 설정
 SPI2CONbits.CKE  = 1;  // 0: Idle에서 active로 갈 때 data transaction 1: 반대
 SPI2CONbits.SSEN = 1;  // Slave select enable
 SPI2CONbits.CKP  = 0;  // 0: active high 1: 반대
 SPI2CONbits.MSTEN = 1;
 
 SPI2STATbits.SPIROV = 0;  //수신 오버플로우 초기화

 SPI0_SetSpeed(SPI_SPEED_4MHZ);
}

SPICON 레지스터




SPI모드 설정



PIC32 SPI클럭 설정



PIC32 SPI데이터 송수신 드라이버 함수 작성
SUINT SPI0_WriteReadByte(SUINT Data)
{
 //SPI포트로 데이터 출력
 SPI2BUF = Data;                   
 while( !SPI2STATbits.SPIRBF); // 전송대기

 //데이터 수신
 return SPI2BUF;
}



가속도 센서 테스트 드라이버
NET-EVM 보드의 가속도 센서는 SPI0, CS ->RB13에 연결되어 있으므로 아래와 같이 드라이버 코드를 작성할 수 있다.
#define _SPI0_ENABLE    1

//-----------------------------------------------------------------------------
// myAccel3LV02 HAL
#define MY_ACCEL3LV02_SPI_MODE   1
#define MY_ACCEL3LV02_I2C_MODE   0

#define ACCEL_CS_BIT     BIT13
#define ACCEL_CS_PORT     LATB
#define ACCEL_CS_INIT()    (TRISBbits.TRISB13 = 0)
          
#define ACCEL_CS_ASSERT()    Cbi(ACCEL_CS_PORT, ACCEL_CS_BIT)
#define ACCEL_CS_DEASSERT()   Sbi(ACCEL_CS_PORT, ACCEL_CS_BIT)
#define ACCEL_SPI_INIT()    SPI0_Init()
#define ACCEL_Read      SPI0_WriteReadByte
#define ACCEL_Write      SPI0_WriteReadByte
//-----------------------------------------------------------------------------

Posted by nexp

댓글을 달아 주세요