STM32 网页服务器 LWIP websever ajax实时刷新 (三)
干货来了。
解决正点原子中不接网线就LWIP就没初始化的问题
首先我们分析一下原子的程序
int main(void)
{
delay_init(168); //延时初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组配置
uart_init(115200); //串口波特率设置
usmart_dev.init(84); //初始化USMART
FSMC_SRAM_Init(); //SRAM初始化
mymem_init(SRAMIN); //初始化内部内存池
mymem_init(SRAMEX); //初始化外部内存池
mymem_init(SRAMCCM); //初始化CCM内存池
OSInit(); //UCOS初始化
while(lwip_comm_init()) //lwip初始化
{
//LCD_ShowString(30,130,200,20,16,"Lwip Init failed!"); //lwip初始化失败
delay_ms(500);
LCD_Fill(30,130,230,150,WHITE);
delay_ms(500);
}
//LCD_ShowString(30,130,200,20,16,"Lwip Init Success!"); //lwip初始化成功
while(udp_demo_init()) //初始化udp_demo(创建udp_demo线程)
{
//LCD_ShowString(30,150,200,20,16,"UDP failed!!"); //udp创建失败
delay_ms(500);
LCD_Fill(30,150,230,170,WHITE);
delay_ms(500);
}
LCD_ShowString(30,150,200,20,16,"UDP Success!"); //udp创建成功
OSTaskCreate(start_task,(void*)0,(OS_STK*)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO);
OSStart(); //开启UCOS
}
在main函数中初始化了lwip_comm_init();函数。如果没有初始化成功则没有再次初始化。
增对这个问题,如何解决?
LAN8720
LAN8720 是低功耗的 10/100M 以太网 PHY 层芯片, I/O 引脚电压符合 IEEE802.3-2005 标
准。 LAN8720 支持通过 RMII 接口与以太网 MAC 层通信,内置 10-BASE-T/100BASE-TX 全双
工传输模块,支持 10Mbps 和 100Mbps。 LAN8720 可以通过自协商的方式与目的主机最佳的连
接方式(速度和双工模式)。 支持 HP Auto-MDIX 自动翻转功能, 无需更换网线即可将连接更改
为直连或交叉连接。 LAN8720 的主要特点如下:
⚫ 高性能的 10/100M 以太网传输模块
⚫ 支持 RMII 接口以减少引脚数
⚫ 支持全双工和半双工模式
⚫ 两个状态 LED 输出
⚫ 可以使用 25M 晶振以降低成本
⚫ 支持自协商模式
⚫ 支持 HP Auto-MDIX 自动翻转功能
⚫ 支持 SMI 串行管理接口
⚫ 支持 MAC 接口
1. LAN8720中断
lan8720有主中断模式和复用中断模式。
主中断模式和复用中断模式。 主中断模式是默认中断模式,
LAN8720 上电或复位后就工作在主中断模式,当模式控制/状态寄存器(十进制地址为 17)的
ALTINT 为 0 是 LAN8720 工作在主模式,当 ALTINT 为 1 时工作在复用中断模式。
2. PHY 地址设置
MAC 层通过 SMI 总线对 PHY 进行读写操作, SMI 可以控制 32 个 PHY 芯片,通过不同的PHY 芯片地址来对不同的 PHY 操作。 LAN8720 通过设置 RXER/PHYAD0 引脚来设置其 PHY地址, 默认情况下为 0, 其地址设置如 我的 STM32F407 开发板使用的是默认地址。
3. 时钟来源
LAN8720 的时钟来源可以有两种设计方式。一种是由单片机提供50M时钟,另外一种是外接25M晶振。使用不同的模式芯片的2脚(nINTESEL)接法不同。nINTSEL 引脚(2 号引脚)用于设置 nINT/REFCLKO 引脚(14 号引脚)的功能。
nINTSEL 引脚值 | 模式 | nINT/REFCLKO引脚功能 |
---|---|---|
nINTSEL =0 | REF_CLK Out 模式 | nINT/REFCLKO 作为时钟源 |
nINTSEL =1 | REF_CLK In模式 | nINT/REFCLKO 作为中断引脚 |
本设计采用的是外接提供25M晶振产生REF_CLK时钟。
4. 精简介质独立接口: RMII
精简介质独立接口(RMII) 规范降低 10/100 Mbit/s 下微控制器以太网外设与外部 PHY 间
的引脚数。根据 IEEE 802.3u 标准, MII 包括 16 个数据和控制信号的引脚。 RMII 规范将引脚
数减少为 7 个。
STM32F407 通过 RMII 接口与 PHY 层芯片的连接。