Can´t write on Socket Mode Registers

A place for general discussions regarding the WIZnet iEthernet Design Contest 2007

Moderators: john, Wiznet Mods

Can´t write on Socket Mode Registers

Postby victoraf031 » Wed Sep 03, 2008 8:12 am

Hi,
I'm trying to interface W5100 with a STM32 using SPI interface.
I can read and write most registers. I´ve been able to configure the IP and ping the Wiznet.
However, I can´t write the Socket Mode Registers. I don´t know why, I´ve tried many ways and only the Socket Mode Registers don´t work.
Any thoughts? I´m stuck on it for days.
victoraf031
 
Posts: 3
Joined: Wed Sep 03, 2008 8:09 am

Postby stevech » Wed Sep 03, 2008 12:30 pm

perhaps if you post the code we can find an error.
stevech
 
Posts: 77
Joined: Sat Apr 30, 2005 10:28 pm
Location: San Diego, CA

Postby victoraf031 » Wed Sep 03, 2008 12:39 pm

My write function code using SPI Interface:

/*******************************************************************************
* Function Name : WriteWizNet2
* Description : Write wiznet's register.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void WriteWizNet2( u16 Addr, u8 Data){
u16 In[4];

GPIO_ResetBits(GPIOC,GPIO_Pin_12);
GPIO_ResetBits(GPIOC,GPIO_Pin_6); //Seleciona Wiznet

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI2, 0xF0);

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI2 received data */
In[0] = SPI_I2S_ReceiveData(SPI2);

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI2, (u8)((Addr & 0xFF00) >> 8));

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI2 received data */
In[1] = SPI_I2S_ReceiveData(SPI2);

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI2,(u8)(Addr & 0x00FF));

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI2 received data */
In[2] = SPI_I2S_ReceiveData(SPI2);

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI2, Data);

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI2 received data */
In[3] = SPI_I2S_ReceiveData(SPI2);

debug_printf("\nWrite: %d %d %d %d",In[0],In[1],In[2],In[3]);

GPIO_SetBits(GPIOC,GPIO_Pin_6); //Deseleciona Wiznet
GPIO_SetBits(GPIOC,GPIO_Pin_12);

}

And read function code:

/*******************************************************************************
* Function Name : ReadWizNet2
* Description : Read wiznet's register.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
u16 ReadWizNet2(u16 Addr )
{
u16 In[4];

GPIO_ResetBits(GPIOC,GPIO_Pin_6); //Seleciona Wiznet
GPIO_ResetBits(GPIOC,GPIO_Pin_12);

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI2, 0x0F);

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI2 received data */
In[0] = SPI_I2S_ReceiveData(SPI2);


while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI2, ((u8)(Addr & 0xFF00) >> 8));

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI2 received data */
In[1] = SPI_I2S_ReceiveData(SPI2);


while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI2, (u8)(Addr & 0x00FF));

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI2 received data */
In[2] = SPI_I2S_ReceiveData(SPI2);


while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI2, 0x00);

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI2 received data */
In[3] = SPI_I2S_ReceiveData(SPI2);

GPIO_SetBits(GPIOC,GPIO_Pin_6); //Deseleciona Wiznet

debug_printf("\nRead: %d %d %d %d",In[0],In[1],In[2],In[3]);
GPIO_SetBits(GPIOC,GPIO_Pin_12);

return In[3]; //Return SPI Rx buffer data

}
victoraf031
 
Posts: 3
Joined: Wed Sep 03, 2008 8:09 am

Postby victoraf031 » Wed Sep 03, 2008 12:47 pm

Just reminding, my code works with all registers, except the Socket Mode Registers.
victoraf031
 
Posts: 3
Joined: Wed Sep 03, 2008 8:09 am


Return to WIZnet iEthernet Design Contest 2007 General Discussion

Who is online

Users browsing this forum: No registered users and 1 guest

cron