Hello,
Has anyone used the Arduino Ethernet shield with a W5100 on the STM32L496 board? I have tired to follow different example and the program gets hung on the wizchip_init(bufSize, bufSize); command. I believe it cannot initialize.
Also, if I am able to initialize it, can I use modbus TCP with the shield? Thank you.
void wzn_select(void)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
}void wzn_deselect(void)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
}void wzn_write_byte(uint8_t wb)
{
HAL_SPI_Transmit(&hspi1, &wb, 1, 0xffff);
}uint8_t wzn_read_byte(void)
{
uint8_t rd_byte = 0;HAL_SPI_Receive(&hspi1, &rd_byte, 1, 0xffff);
return rd_byte;
}void wzn_write(uint8_t* pBuf, uint16_t len)
{
HAL_SPI_Transmit(&hspi1, pBuf, len, 0xffff);
}void wzn_read(uint8_t* pBuf, uint16_t len)
{
HAL_SPI_Receive(&hspi1, pBuf, len, 0xffff);
}void wzn_config(void)
{
uint8_t bufSize = {2, 2, 2, 2};reg_wizchip_cs_cbfunc(wzn_select, wzn_deselect);
reg_wizchip_spi_cbfunc(wzn_read_byte, wzn_write_byte);wizchip_init(bufSize, bufSize);
wiz_NetInfo netInfo = { .mac = {0x00, 0x08, 0xdc,0x00, 0xab, 0xcd},
.ip = {192, 168, 1, 64},
.sn = {255, 255, 255, 0} };wizchip_setnetinfo(&netInfo);
wizchip_getnetinfo(&netInfo);printf(“MAC Address: %02X:%02X:%02X:%02X:%02X:%02X\r\n”, netInfo.mac[0], netInfo.mac[1], netInfo.mac[2], netInfo.mac[3], netInfo.mac[4], netInfo.mac[5]);
printf(“IP Address: %d.%d.%d.%d\r\n”, netInfo.ip[0],netInfo.ip[1],netInfo.ip[2],netInfo.ip[3]);
printf(“SUB: %d.%d.%d.%d\r\n”, netInfo.sn[0],netInfo.sn[1],netInfo.sn[2],netInfo.sn[3]);}
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef gpio;// SCK - PA5
gpio.Pin = GPIO_PIN_5;
gpio.Mode = GPIO_MODE_AF_PP;
gpio.Pull = GPIO_PULLUP;
gpio.Speed = GPIO_SPEED_HIGH;
gpio.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(GPIOA, &gpio);// MISO - PB4
// MOSI - PB5
gpio.Pin = GPIO_PIN_4 | GPIO_PIN_5;
gpio.Mode = GPIO_MODE_AF_PP;
gpio.Pull = GPIO_PULLUP;
gpio.Speed = GPIO_SPEED_HIGH;
gpio.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(GPIOB, &gpio);// CS - PA15
gpio.Pin = GPIO_PIN_15;
gpio.Mode = GPIO_MODE_AF_PP;
HAL_GPIO_Init(GPIOA, &gpio);
}static void MX_SPI1_Init(void)
{
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLED;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;
hspi1.Init.CRCPolynomial = 10;
hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLED;
HAL_SPI_Init(&hspi1);
}