中级会员
- 积分
- 222
- 金钱
- 222
- 注册时间
- 2020-6-17
- 在线时间
- 55 小时
|
5金钱
STM32F401RCT6+DM9000A+LWIP的裸机网络通信,按着原子STM32F103战舰的LWIP无操作系统移植章节改的,没有FSMC,用的IO模拟驱动;读取DM9000_ID正常,DHCP功能下分配IP成功,但是一直ping不通,显示无法访问主机。附上改的DM9000A源码和电路图,烦请路过的大佬帮忙看看!!
- int main(void)
- {
- u32 count_time;
- lwip_localtime = 0;
- time_count = 0;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- delay_init(84);
- LED_Init();
- USART2_Init(115200);
- TIM3_Int_Init(840-1,100-1); //1ms
- TIM4_Int_Init(840-1,1000-1); //10ms
-
- my_mem_init(SRAMIN);
- //my_mem_init(SRAMEX);
- while(lwip_comm_init())
- {
- printf("LWIP_COMM_INIT Failed!\r\n");
- }
-
- #if LWIP_DHCP //ê1óÃDHCP
- while((lwipdev.dhcpstatus!=2)&&(lwipdev.dhcpstatus!=0XFF))
- {
- lwip_periodic_handle();
- lwip_pkt_handle();
- }
- #endif
-
- // delay_ms(1000);
- // tcp_server_test();
- while(1)
- {
- count_time = time_count;
- lwip_periodic_handle();
- lwip_pkt_handle();
- count_time = time_count - count_time;//测试以上两个函数的运行时间,约28ms左右,不知道正常不正常
- printf("Time Cost: %d\n",count_time);
- i++;
- if(i==50)
- {
- LINK_LED = ~LINK_LED;
- i=0;
- }
- }
复制代码
|
最佳答案
查看完整内容[请看2#楼]
搞了一两个星期终于能ping通并且长时间不宕机了,说一下改的可能有问题的部分吧
1)刚开始用的DM9000AEP的芯片,把原子例程中断删了,导致ping不通,加上中断部分(软硬件)就能ping通(会进中断函数清除标志位),但是还是会有ping了一会就宕机的情况;
2)怀疑是铺的地平面的问题造成干扰太大才出现的宕机,所以把网口下尤其是差分线附近的地平面,上下层全割了。效果有改善、但是时间长了还是会出现rx error;
3)注意到开发 ...
|