[ST_MICRO]/STM32F43x2014. 9. 7. 22:11

STM32F429 - W5300 을 이용한 TCP/IP 전송 속도 테스트

STM32F429 - W5300 을 이용한 TCP/IP 전송 속도 테스트



STM32F429 는 최대 180Mhz로 구동된다. W5300을 이용하여 TCP/IP 전송 속도 테스트 결과 37Mbps 정도로 측정된다.





STM32F4의 FMC 타이밍을 좀더 짧게 설정하니 속도가 2.5배 이상 상승한다.

90Mbs로 거의 최대 속도가 나오는것같다.





STM32F439 W5300 FMC초기화 코드


void InitFMC_W5300(void)

{


  GPIO_InitTypeDef GPIO_Init_Structure;

  

  hsram.Instance  = FMC_NORSRAM_DEVICE;

  hsram.Extended  = FMC_NORSRAM_EXTENDED_DEVICE;

  


  SRAM_Timing.AddressSetupTime       = 2;

  SRAM_Timing.AddressHoldTime        = 2;

  SRAM_Timing.DataSetupTime          = 4;

  SRAM_Timing.BusTurnAroundDuration  = 3;

  SRAM_Timing.CLKDivision            = 2;

  SRAM_Timing.DataLatency            = 2;


/*

  SRAM_Timing.AddressSetupTime       = 10;

  SRAM_Timing.AddressHoldTime        = 10;

  SRAM_Timing.DataSetupTime          = 25;

  SRAM_Timing.BusTurnAroundDuration  = 8;

  SRAM_Timing.CLKDivision            = 2;

  SRAM_Timing.DataLatency            = 4;

*/

  SRAM_Timing.AccessMode             = FMC_ACCESS_MODE_A;

  

  hsram.Init.NSBank             = FMC_NORSRAM_BANK3;

  hsram.Init.DataAddressMux     = FMC_DATA_ADDRESS_MUX_DISABLE;

  hsram.Init.MemoryType         = FMC_MEMORY_TYPE_SRAM;

  hsram.Init.MemoryDataWidth    = SRAM_MEMORY_WIDTH;

  hsram.Init.BurstAccessMode    = FMC_BURST_ACCESS_MODE_DISABLE;

  hsram.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW;

  hsram.Init.WrapMode           = FMC_WRAP_MODE_DISABLE;

  hsram.Init.WaitSignalActive   = FMC_WAIT_TIMING_BEFORE_WS;

  hsram.Init.WriteOperation     = FMC_WRITE_OPERATION_ENABLE;

  hsram.Init.WaitSignal         = FMC_WAIT_SIGNAL_DISABLE;

  hsram.Init.ExtendedMode       = FMC_EXTENDED_MODE_DISABLE;

  hsram.Init.AsynchronousWait   = FMC_ASYNCHRONOUS_WAIT_DISABLE;

  hsram.Init.WriteBurst         = FMC_WRITE_BURST_DISABLE;

  hsram.Init.ContinuousClock    = SRAM_CONTINUOUS_CLOCK;

  

  /* Initialize the SRAM controller */

  if(HAL_SRAM_Init(&hsram, &SRAM_Timing, &SRAM_Timing) != HAL_OK)

  {

    /* Initialization Error */

    Error_Handler(); 

  }


}





STM32F429 W5300 드라이버 코드

//-----------------------------------------------------------------------------

#define W5300_BANK_ADDR                 ((uint32_t)0x64000000)

#define W5300_DATA_ADDR                 (*(uint16_t *) (W5300_BANK_ADDR))

                                        

#define _W5300_DATA(p)                    (*(__IO uint16_t*) (W5300_BANK_ADDR + (p<<1)))


#define W5300_RST_PORT GPIOA

#define W5300_RST_BIT BIT9


#define IINCHIP_RSToff() cbi(W5300_RST_PORT, W5300_RST_BIT)

#define IINCHIP_RSTon() sbi(W5300_RST_PORT, W5300_RST_BIT)



#define W5300_IO_INIT()

//-----------------------------------------------------------------------------




Posted by nexp

댓글을 달아 주세요