搜索
bottom↓
回复: 4

关于W5100无法ping通……求大神指点啊!!!

[复制链接]

出0入0汤圆

发表于 2013-12-6 19:02:27 | 显示全部楼层 |阅读模式
使用的是CC430+W5100实现标准SPI通讯,但是我的设置上不知道存在了什么问题没有,我想要请教大神,为什么不能ping通!!我贴出来我的代码……
CC430的初始化部分:
void System_Initialization(void)
{
//  P2DIR |= BIT5+BIT4 + BIT3 +BIT2+ BIT1+BIT0 ;
//  P2OUT |= BIT1+BIT6;
//  P2DIR &= ~ BIT6;
//  P2REN |= BIT6;
//  P2OUT &= ~ BIT4;
  
  PMAPPWD = 0x02D52;                        // Get write-access to port mapping regs  
  P1MAP3 = PM_UCB0SIMO;                     // Map UCA0SIMO output to P1.3
  P1MAP2 = PM_UCB0SOMI;                     // Map UCA0SOMI output to P1.2
  P1MAP4 = PM_UCB0CLK;                      // Map UCA0CLK output to P1.4
  PMAPPWD = 0;                              // Lock port mapping registers  
   
// P1DIR &= ~ BIT0+BIT2;
// P1DIR |= BIT4 + BIT3 + BIT1;              // Set P1.0, P1.1 to output direction
  P1DIR =0x1a;
  
  UCSCTL3 |= SELREF_2;                      // Set DCO FLL reference = REFO
  UCSCTL4 |= SELA_2;                        // Set ACLK = REFO

  __bis_SR_register(SCG0);                  // Disable the FLL control loop
  UCSCTL0 = 0x0000;                         // Set lowest possible DCOx, MODx
  UCSCTL1 = DCORSEL_5;                      // Select DCO range 24MHz operation
  UCSCTL2 = FLLD_1 + 749;                   // Set DCO Multiplier for 24 MHz
                                            // (N + 1) * FLLRef = Fdco
                                            // (749 + 1) * 32768 = 24.576 MHz
                                            // Set FLL Div = fDCOCLK/2
  __bic_SR_register(SCG0);                  // Enable the FLL control loop*/
  P1SEL =0x1c;                              //P1SEL|=BIT2+BIT3+BIT4; // P1.2,3,4 for debugging purposes.

  UCB0CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCB0CTL0 =0x29;                           // 3-pin, 8-bit SPI master
                                            // Clock polarity high, MSB
  UCB0CTL1 |= UCSSEL_2;                     // SMCLK
  UCB0BR0 = 0x02;                           // /2
  UCB0BR1 = 0;                              //
  UCB0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
}


下面是SPI的发送和使用程序:
unsigned char SPI_SendByte(unsigned char dat)           //发送数据   
{   
    unsigned char rByte;

    while (!(UCB0IFG&UCTXIFG));
    UCB0TXBUF=dat;
    while(!(UCB0IFG&UCRXIFG));
    rByte=UCB0RXBUF;
   
    return rByte;   
}   

/*****************************************************************
程序名:Read_W5100
输入: 地址
输出: 无
返回: 读取的数据
说明:从W5100指定的地址读取一个字节
*****************************************************************/
unsigned char Read_W5100(unsigned short addr)
{       
    unsigned char i;

     /* 置W5100的SCS为低电平 */
    P1OUT &=~BIT1;
    __no_operation();
    /* 发送读命令 */
    SPI_SendByte(0x0f);

    /* 发送地址 */
    SPI_SendByte(addr/256);
    SPI_SendByte(addr);

    /* 发送一个哑数据并读取数据 */
    i=SPI_SendByte(0x00);
   
    /* 置W5100的SCS为高电平 */
    P1OUT |=BIT1;

    return i;
}

/************************************************
程序名:Write_W5100
输入: 地址,字节数据
输出: 无
返回: 无
说明:将一个字节写入W5100指定的地址
************************************************/
void Write_W5100(unsigned short addr, unsigned char dat)
{
        /* 置W5100的SCS为低电平 */
        P1OUT &=~BIT1;

        /* 发送写命令 */
        SPI_SendByte(0xf0);

        /* 发送地址 */
        SPI_SendByte(addr/256);
        SPI_SendByte(addr);

        /* 写入数据 */
        SPI_SendByte(dat);

        /* 置W5100的SCS为高电平 */
        P1OUT |=BIT1;
}

/*------------------------------------------------------------------------------
W5100初始化函数
在使用W5100之前,对W5100初始化
------------------------------------------------------------------------------*/
void W5100_Init(void)
{
        unsigned int i;

        Write_W5100(W5100_MODE,MODE_RST);                /* 软复位W5100 */

        Delay(100);                                        /* 延时100ms */

        /*设置网关(Gateway)的IP地址,4字节 */
        /*使用网关可以使通信突破子网的局限,通过网关可以访问到其它子网或进入Internet*/
        for(i=0;i<4;i++)
                Write_W5100(W5100_GAR+i,Gateway_IP[i]);                /*Gateway_IP为4字节unsigned char数组,自己定义*/

        /*设置子网掩码(MASK)值,4字节。子网掩码用于子网运算*/
        for(i=0;i<4;i++)
                Write_W5100(W5100_SUBR+i,Sub_Mask[i]);                /*SUB_MASK为4字节unsigned char数组,自己定义*/

        /*设置物理地址,6字节,用于唯一标识网络设备的物理地址值
        该地址值需要到IEEE申请,按照OUI的规定,前3个字节为厂商代码,后三个字节为产品序号
        如果自己定义物理地址,注意第一个字节必须为偶数*/
        for(i=0;i<6;i++)
                Write_W5100(W5100_SHAR+i,Phy_Addr[i]);                        /*PHY_ADDR6字节unsigned char数组,自己定义*/

        /*设置本机的IP地址,4个字节
        注意,网关IP必须与本机IP属于同一个子网,否则本机将无法找到网关*/
        for(i=0;i<4;i++)
                Write_W5100(W5100_SIPR+i,IP_Addr[i]);                        /*IP_ADDR为4字节unsigned char数组,自己定义*/

        /*设置发送缓冲区和接收缓冲区的大小,参考W5100数据手册*/
        Write_W5100(W5100_RMSR,0x55);                /* Socket0 Rx memory size=8k--0xff */
        Write_W5100(W5100_TMSR,0x55);                /* Socket0 Tx mempry size=8k--0xff */

        /* 设置重试时间,默认为2000(200ms) */
        /* Write_W5100(W5100_RTR,0x00);    */
        /* Write_W5100(W5100_RTR+1,0x68);  */

        /* 设置重试次数,默认为8次 */
        /* Write_W5100(W5100_RCR,8); */

        /* 启动中断,参考W5100数据手册确定自己需要的中断类型
        IMR_CONFLICT是IP地址冲突异常中断
        IMR_UNREACH是UDP通信时,地址无法到达的异常中断
        其它是Socket事件中断,根据需要添加 */
        Write_W5100(W5100_IMR,(IMR_CONFLICT|IMR_S0_INT));
}
已经在这个问题上纠结了很久,但是就是ping不通,求大神指点啊!!!!

出0入0汤圆

 楼主| 发表于 2013-12-6 21:02:51 | 显示全部楼层
通过审核了吗?!为什么没有人回答呢?!

出0入0汤圆

发表于 2013-12-6 22:18:42 | 显示全部楼层
时序都对吗?

出0入0汤圆

 楼主| 发表于 2013-12-8 21:59:43 | 显示全部楼层


不好意思,前两天我没在,时序是对的吧,我把两个时序传上来,你看一下我选择是否是正确的,红色的部分是我选择的单片机的相位和极性,应该是没错的吧!!!……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-12-8 22:01:32 | 显示全部楼层

我都快崩溃了,一个这个搞了我一个星期了!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 04:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表