【STM32F769-discovery开发板】第九篇 网络通信
[复制链接]
这一篇主要测试下STM32F769的网络功能
下图可以看出STM32F769Nx带网络
但是STM32F769AX是不带网络的
DISO是带网络的
找找看,官方有测试程序
LWIP的SOCKET程序
找一下硬件电路图
网络芯片用的是LAN8742
之前板子用的比较多的应该是LAN8720和DP83848
DP83848支持MII和RMII模式,之前STM32F10X 评估板用的就是兼容性设计
但是LAN8720和LAN8742是支持RMII模式的
看网上的资料LAN8742应该是比8720多了一个WOL网络唤醒功能
DP83848和LAN8720 LAN8742的设备地址不一样,DP83848地址是0X01,LAN是0x00
这里面配置地址
- int32_t LAN8742_Init(lan8742_Object_t *pObj)
- {
- uint32_t tickstart = 0, regvalue = 0, addr = 0;
- int32_t status = LAN8742_STATUS_OK;
-
- if(pObj->Is_Initialized == 0)
- {
- if(pObj->IO.Init != 0)
- {
-
- pObj->IO.Init();
- }
-
-
- pObj->DevAddr = LAN8742_MAX_DEV_ADDR + 1;
-
-
- for(addr = 0; addr <= LAN8742_MAX_DEV_ADDR; addr ++)
- {
- if(pObj->IO.ReadReg(addr, LAN8742_SMR, ®value) < 0)
- {
- status = LAN8742_STATUS_READ_ERROR;
-
-
- continue;
- }
-
- if((regvalue & LAN8742_SMR_PHY_ADDR) == addr)
- {
- pObj->DevAddr = addr;
- status = LAN8742_STATUS_OK;
- break;
- }
- }
-
- if(pObj->DevAddr > LAN8742_MAX_DEV_ADDR)
- {
- status = LAN8742_STATUS_ADDRESS_ERROR;
- }
-
-
-
-
ETH 硬件IO口初始化函数
- void HAL_ETH_MspInit(ETH_HandleTypeDef *heth)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
-
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOG_CLK_ENABLE();
-
-
-
-
-
-
- GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
- GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStructure.Pull = GPIO_NOPULL;
- GPIO_InitStructure.Alternate = GPIO_AF11_ETH;
- GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
-
-
- GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;
- HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
-
-
- GPIO_InitStructure.Pin = GPIO_PIN_11 | GPIO_PIN_13 | GPIO_PIN_14;
- HAL_GPIO_Init(GPIOG, &GPIO_InitStructure);
-
-
- HAL_NVIC_SetPriority(ETH_IRQn, 0x7, 0);
- HAL_NVIC_EnableIRQ(ETH_IRQn);
-
-
- __HAL_RCC_ETH_CLK_ENABLE();
- }
-
下载程序
接上网线,开始识别网络
显示屏上显示IP地址位192.168.0.10
开始ping
Ping不通,肯定是电脑的IP不对
修改IP
继续ping,ping通了
测试了几十分钟很稳定
|