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()
//-----------------------------------------------------------------------------
댓글을 달아 주세요