修改socket链接不稳定
Fork of WIZnetInterface by
Diff: arch/int/W7500x_toe.cpp
- Revision:
- 26:d07c80e18b27
- Parent:
- 24:06e3836a627b
- Child:
- 27:1169973d836c
--- a/arch/int/W7500x_toe.cpp Mon Jun 29 07:27:34 2015 +0000
+++ b/arch/int/W7500x_toe.cpp Mon Oct 05 05:41:00 2015 +0000
@@ -15,7 +15,8 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include "eth_arch.h"
-#if defined(TARGET_WIZwiki_W7500)
+#if defined(TARGET_WIZwiki_W7500) || defined(TARGET_WIZwiki_W7500P)
+
#include "mbed.h"
#include "mbed_debug.h"
@@ -29,6 +30,9 @@
* - input_MDIO(),output_MDIO(),turnaroud_MDIO(),idle_MDIO()
* called by ethernet_link() and ethernet_set_link()
*/
+
+#if defined TARGET_WIZwiki_W7500
+
#define MDIO GPIO_Pin_14
#define MDC GPIO_Pin_15
#define GPIO_MDC GPIOB
@@ -41,6 +45,24 @@
#define CNTL_AUTONEGO (0x01ul<<11)
#define CNTL_SPEED (0x01ul<<12)
#define MDC_WAIT (1)
+
+#elif TARGET_WIZwiki_W7500P
+
+#define MDIO GPIO_Pin_15
+#define MDC GPIO_Pin_14
+#define GPIO_MDC GPIOB
+#define PHY_ADDR_IP101G 0x01
+#define PHY_ADDR PHY_ADDR_IP101G
+#define SVAL 0x2 //right shift val = 2
+#define PHYREG_CONTROL 0x0 //Control Register address (Contorl basic register)
+#define PHYREG_STATUS 0x1 //Status Register address (Status basic register)
+#define CNTL_DUPLEX (0x01ul<< 7)
+#define CNTL_AUTONEGO (0x01ul<<11)
+#define CNTL_SPEED (0x01ul<<12)
+#define MDC_WAIT (1)
+
+#endif
+
void mdio_init(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin_MDC, uint16_t GPIO_Pin_MDIO);
void mdio_write(GPIO_TypeDef* GPIOx, uint32_t PhyRegAddr, uint32_t val);
uint32_t mdio_read(GPIO_TypeDef* GPIOx, uint32_t PhyRegAddr);
@@ -151,12 +173,18 @@
reg_wr<uint8_t>(MR, MR_RST);
// set PAD strengh and pull-up for TXD[3:0] and TXE
#ifdef __DEF_USED_IC101AG__ //For using IC+101AG
+
+#if defined(TARGET_WIZwiki_W7500)
+
*(volatile uint32_t *)(0x41003068) = 0x64; //TXD0
*(volatile uint32_t *)(0x4100306C) = 0x64; //TXD1
*(volatile uint32_t *)(0x41003070) = 0x64; //TXD2
*(volatile uint32_t *)(0x41003074) = 0x64; //TXD3
*(volatile uint32_t *)(0x41003050) = 0x64; //TXE
+#endif
+
#endif
+
// set ticker counter
reg_wr<uint32_t>(TIC100US, (SystemCoreClock/10000));
// write MAC address inside the WZTOE MAC address register
@@ -312,7 +340,7 @@
t.start();
while(1) {
int is_link = ethernet_link();
- //printf("is_link:%d\r\n", is_link);
+
if (is_link) {
return true;
}
