[DSP28335 EVM] W5200 TCP Server 전송 속도 테스트 (SPI속도 테스트)
TM320F28335와 같이 OS없는 MCU에서 이더넷 처리를 하려며 하드웨어 TCP/P 모듈을 이용하는 것이 가장 간단한 벙법이다. TCP/IP처리를 위한 복잡한 스텍이 필요 없이 간단히 이더넷을 연결 할 수 있다.
드라이버 코드만 수정하면 아주 간단하게 포팅 가능도록 코드를 작성해 두었기 때문에 W5200 모듈을 이용하여 테스트 해볼 예정이다.
TMS320F28335 의 클럭은 150Mhz로 동작한다. 하지만 SPI 동작속도는 최대 10Mhz이다. 참고로 TMS320F2808는 6Mhz, PICCOLO시리즈 TMS320F28069는 4.5Mhz로 이들과 비교 하면 두배 정도 빠른 속도 이다.
요즘 SPI가 대부분인데 최대속도가 다소 느려서 많이 아쉽다.
[LCD_EXP_EVM] 보드에 연결하면 W5100, W5200 TCP/IP 모듈을 쉽게 테스트 가능한다. SPI CS는 TMS320F28335의 GPIO14에 연결되어 있고 Reset(INT)는 GPIO15에 연결되어 있다.
TMS32F28335에서 SPI방식의 W5200을 이용하여 TCP Server 전송 속도 테스트 결과 SPI Clock 10MHz에서 대략 2.3Mbps정도 출력된다.
W5100/W5200 제어 드라이버 코드
드라이버 코드만 수정하면 모든 MCU에서 쉽게 포팅 가능하도록 코드를 작성해 두고 있다.
//-----------------------------------------------------------------------------
// W5100 HAL
#define W5100_CS_PORT GPIOA
#define W5100_CS_BIT BIT14
#define W5100_RST_PORT GPIOA
#define W5100_RST_BIT BIT15
#define IINCHIP_RSToff() cbi(W5100_RST_PORT, W5100_RST_BIT)
#define IINCHIP_RSTon() sbi(W5100_RST_PORT, W5100_RST_BIT)
#define W5100_IO_INIT() EALLOW;\
GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 0;\
GpioCtrlRegs.GPADIR.bit.GPIO15 = 1;\
GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 0;\
GpioCtrlRegs.GPADIR.bit.GPIO14 = 1;\
EDIS;\
#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_WriteReadByte
#define IINCHIP_SpiRecvData SPI0_WriteReadByte
#define IINCHIP_SPI_SPEED() SPI0_SetSpeed(SPI_SPEED_MAX)
//-----------------------------------------------------------------------------
// W5100 HAL
#define W5100_CS_PORT GPIOA
#define W5100_CS_BIT BIT14
#define W5100_RST_PORT GPIOA
#define W5100_RST_BIT BIT15
#define IINCHIP_RSToff() cbi(W5100_RST_PORT, W5100_RST_BIT)
#define IINCHIP_RSTon() sbi(W5100_RST_PORT, W5100_RST_BIT)
#define W5100_IO_INIT() EALLOW;\
GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 0;\
GpioCtrlRegs.GPADIR.bit.GPIO15 = 1;\
GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 0;\
GpioCtrlRegs.GPADIR.bit.GPIO14 = 1;\
EDIS;\
#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_WriteReadByte
#define IINCHIP_SpiRecvData SPI0_WriteReadByte
#define IINCHIP_SPI_SPEED() SPI0_SetSpeed(SPI_SPEED_MAX)
//-----------------------------------------------------------------------------
반응형