5870|20

43

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求指点9B96以太网问题! [复制链接]

小弟用自己做的板子(主芯片是9L97的和9B96相似)从最基本的LWip调试以太网模块,我用论坛里academic的帖子里的第一个程序https://bbs.eeworld.com.cn/thread-222963-1-2.html编译通过后下载到板子里,用交叉网线把开发板和PC相连,程序下载进去以后 PC机右下角网络连接的小红叉消失了,但是 我在PC上面ping 192.168.0.100 却ping不通。不知道是哪里出现了错误?急切盼望高手出现指点一二

下面附上我所用的程序:

#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_nvic.h"
#include "inc/hw_types.h"
#include "inc/hw_sysctl.h"

#include "driverlib/ethernet.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/systick.h"
#include "utils/lwiplib.h"

 

#define My_Mac_ID  {0X00,0x14,0x97,0x0F,0x1D,0xE3}  //存储以太网控制器的物理地址,即MAC地址

#define MY_IP_ID        {192,168,0,100}                   //以太网通信的IP地址
#define IP_MARK_ID    {255,255,255,0}             //255.255.255.0,子网掩码
#define MY_GATEWAY_ID   {192,168,0,1}                     //以太网通信的网关地址
static const unsigned char pucMACAddress[]=My_Mac_ID;
static const unsigned char IPAddress[] = MY_IP_ID;
static const unsigned char NetMaskAddr[] = IP_MARK_ID;
static const unsigned char GwWayAddr[] = MY_GATEWAY_ID;

const static unsigned char UDPData[]="LwIP UDP客户端在Luminary微控制器上的测试\r\n";

#define SYSTICKHZ                100
#define SYSTICKMS               (1000 / SYSTICKHZ)
#define SYSTICKUS               (1000000 / SYSTICKHZ)
#define SYSTICKNS               (1000000000 / SYSTICKHZ)


void
SysTickIntHandler(void)
{
   
  lwIPTimer(SYSTICKMS);

}


int
main(void)
{
 
    struct ip_addr ulIPAddr,ulNetMask,ulGWAddr;
   struct udp_pcb *Pcb1;
   struct ip_addr ipaddr1;
   struct pbuf *p;

      if(REVISION_IS_A2)
    {
        SysCtlLDOSet(SYSCTL_LDO_2_75V);
    }

    SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_8MHZ);
  
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
    SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    GPIOPinTypeEthernetLED(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3);

 

    SysTickPeriodSet(SysCtlClockGet() / SYSTICKHZ);
    SysTickEnable();
    SysTickIntEnable();

    IntMasterEnable();
 
        IP4_ADDR(&ulIPAddr,IPAddress[3],IPAddress[2],IPAddress[1],IPAddress[0]);
        IP4_ADDR(&ulNetMask,NetMaskAddr[3],NetMaskAddr[2],NetMaskAddr[1],NetMaskAddr[0]);
        IP4_ADDR(&ulGWAddr,GwWayAddr[3],GwWayAddr[2],GwWayAddr[1],GwWayAddr[0]);
        lwIPInit(pucMACAddress,ulIPAddr.addr, ulNetMask.addr, ulGWAddr.addr, IPADDR_USE_STATIC);
  
   p = pbuf_alloc(PBUF_RAW,sizeof(UDPData),PBUF_RAM);
   p->payload=(void *)UDPData;
  
  IP4_ADDR(&ipaddr1,192,168,0,127); //这里是PC机的IP地址。
  Pcb1 = udp_new();
 
  udp_bind(Pcb1,IP_ADDR_ANY,1025);   /* 绑定到本地IP地址,设端口为1025,客户端一般为偶数。*/

  udp_connect(Pcb1,&ipaddr1,1025);    /* 连接PC机上的1025号端口,其实服务器的端口一般为奇数。*/


    while(1)
  {
    udp_send(Pcb1,p);
    SysCtlDelay(SysCtlClockGet()/3);
  }


}

最新回复

你好,想请教一下,关于9B96的板子里面网口的问题,现在不知道什么情况,PING不能地址,想你给我一个关于网口的简单例程,想从简单开始学起,我用的例程同楼主的一样,我板子没问题,用的是HELLOM3那次做活动的板子  详情 回复 发表于 2012-3-13 21:24
 
点赞 关注(1)

回复
举报

569

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 

我提一些浅见:

1、例程烧写,你的板子能否正常?如果也不能正常说明是硬件的问题。

 

2、至于软件上,我大致看了一下,你写的没有错。

 

3、我在我这里写了一段代码是能够成功发送的,你看一下:

 //UDP客户端
 void TEST_udp2_Init();
 char UDP_TestData[]={"UDP,Just for test!"};

 

main()

{....

 lwIPInit(pucMACArray, 0XC0A8007E, 0xFF000000, 0, IPADDR_USE_STATIC);//可以连上

....

 TEST_udp2_Init();//建立一个UDP客户端

....

}

void TEST_udp2_Init()
{   int i;
 void *pcb;  
 struct pbuf *p;                                         
 struct ip_addr ipaddr; 
 unsigned char *pucData;    
     IP4_ADDR(&ipaddr,192,168,0,127);                         //设定目标IP     
    p = pbuf_alloc(PBUF_TRANSPORT, sizeof(UDP_TestData), PBUF_RAM);          //建立p
 pucData = p->payload;                                                    //指向p
 
 for(i=0;i<sizeof(UDP_TestData);i++)
 {
    pucData=UDP_TestData;
    }                                                   //设定要发送的数据
   
    pcb = udp_new();                                       // 建立一个PCB
    udp_recv(pcb, TEST_udp2_Receive, NULL);                 //接收到数据运行

    udp_bind(pcb, IP_ADDR_ANY, 200);                        //bind本地端口200
    udp_connect(pcb, &ipaddr, 1025);                     //目标端口1025

    udp_sendto(pcb, p, &ipaddr, 1025);                       //发送
    UARTprintf("UDP Transmit= %s \n",pucData);
    pbuf_free(p);  
}

[ 本帖最后由 hlx3012 于 2012-2-14 09:36 编辑 ]
 
 

回复

569

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 
 ,忘了截图了,无图无真相。
 
 
 

回复

1803

帖子

0

TA的资源

五彩晶圆(高级)

4
 

回复 楼主 轻轨002 的帖子

academic 那个是基于6000 或 8000 系列的。
对于 9000 系列的,有一些变化。
由于 9000 系列在同一个 GPIO 上可能有多重外设功能可供复用。
因此必须要使用 GPIOPinConfigure() 函数来指定 GPIO 的具体是哪种复用功能。
例如对 Ethernet  的两个指示灯,
GPIOPinConfigure(GPIO_PF2_LED1);
GPIOPinConfigure(GPIO_PF3_LED0);
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 沙发 hlx3012 的帖子

你能否说下正常情况时什么样子的吗?我的板子是自己做的 不知道正常情况是什么样子!网线连接上时板子和PC机网口的灯分别亮不亮?能否ping通?PC右下角的网络标号什么样子的?我附上我的网络部分的原理图 麻烦你看下有没有错!
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 4楼 Study_Stellaris 的帖子

按照你说的  加上了小灯引脚配置的那两句话 小灯可以亮了  但是还是ping不通
 
 
 

回复

569

帖子

0

TA的资源

五彩晶圆(中级)

7
 
楼主,很简单,你连接你的板子到电脑,用9B96例程包中的程序。如果能够和电脑连接(在IE浏览器中可以看到板子上的网页),那么说明你的板子硬件没有问题,下一步你只需要检查软件,如果不能说明你的板子硬件上有问题,那么先把硬件搞好再去搞软件。

灯亮不亮,网络标识信号,都没有上面这个例程能正常运行有说服力。
 
 
 

回复

569

帖子

0

TA的资源

五彩晶圆(中级)

8
 
至于网络端口的原理图,附件中有DEMO班子的原理图,你可以比照检查一下

DK-LM3S9B96_UM.pdf

1.71 MB, 下载次数: 73

 
 
 

回复

1803

帖子

0

TA的资源

五彩晶圆(高级)

9
 

回复 7楼 hlx3012 的帖子

是的,能用 9B96 例程最好。
但是 9B96 的例程有一些对 QVGA 屏的配置,如果不知道怎么改,直接下进去还是有问题的。
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

10
 

回复 9楼 Study_Stellaris 的帖子

因为下面这两个头文件找不到我把这两个头文件#include "drivers/kitronix320x240x16_ssd2119_8bit.h"
#include "drivers/set_pinout.h"相关的一些语句删掉后
像PinoutSet();
Kitronix320x240x16_SSD2119Init();这一类的语句;
编译下载到板子后 访问192.168.1.101还是没反应  
看来是硬件的问题了。。。
 
 
 

回复

1803

帖子

0

TA的资源

五彩晶圆(高级)

11
 

回复 10楼 轻轨002 的帖子

现在下结论过早。
PinoutSet(); 是不能随便删除的,里边有对 GPIO 的初始化。
 
 
 

回复

569

帖子

0

TA的资源

五彩晶圆(中级)

12
 

跟我做一遍

1、把附件中9B92的例程烧写进去。把电脑的IP地址设为169.254.254.12

2、用串口监视会有如下信息:

[ 本帖最后由 hlx3012 于 2012-2-14 13:02 编辑 ]

enet_lwip.zip

74.55 KB, 下载次数: 25

 
 
 

回复

569

帖子

0

TA的资源

五彩晶圆(中级)

13
 

3、用TI的finder。exe可以看到IP地址(我用的是9B96,但是9B92的程序是可以在9B96上运行的)

 

4、在IE中输入IP地址,可以看到网页:

 

5、如果按照这些步骤操作,第四第三步不成功说明是硬件有问题

 

[ 本帖最后由 hlx3012 于 2012-2-14 13:09 编辑 ]

finder.rar

101.72 KB, 下载次数: 45

 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

14
 

回复 12楼 hlx3012 的帖子

我用的是keil 4+J-Link下载  不能好像不能用。bin文件  你能不能把Keil可以用的程序发下!
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

15
 
我发现我把我原来那个程序里面最后的while循环里面的两行注释掉以后 再编译下载 每次复位后都可以ping通一下 不知道这是不是说明电路没问题啊!
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

16
 
这是ping通的指示信息
Reply from 192.168.0.100 bytes=32 time<1ms TTL=255
 
 
 

回复

569

帖子

0

TA的资源

五彩晶圆(中级)

17
 
里面肯定有一个格式适合你。PING能够说明一些问题,192.168.0.100地址上的网口硬件没问题。

[ 本帖最后由 hlx3012 于 2012-2-14 19:47 编辑 ]

enet_lwip.rar

1.47 MB, 下载次数: 68

 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

18
 

回复 17楼 hlx3012 的帖子

还是不行  你能否说下 以太网要想正常工作!板子上都必须哪些个模块! 比如 最小系统,以太网接口模块,25Mhz晶振 还需要什么?
 
 
 

回复

312

帖子

0

TA的资源

纯净的硅(高级)

19
 
建议楼主测试一下TI官网的S2E的程序,可以直接测试以太网部分是否正常工作,通过串口发数据,以太网部分接收。S2E就是实现一个串口到以太网的透传功能。这样把以太网的问题简化。如果软件不通就是硬件的问题了。
 
 
 

回复

312

帖子

0

TA的资源

纯净的硅(高级)

20
 
官方的S2E代码我下载了,在附件中,已经测试过可以直接用。

rdk-s2e.rar

2.31 MB, 下载次数: 297

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表