打印
[51单片机]

51单片机控制W5200遇到问题。。。。

[复制链接]
737|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小猪不才|  楼主 | 2015-6-25 14:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
W5200模块刚到手,写了一个SPI读写的程序,想简单测试下SPI通讯是否起到作用,就想用SPI读出寄存器的默认值,但是不管怎么读都是0。

uchar SPI_RW(uchar byte)
{
        uchar bit_ctr;
        SCLK=0;
        for(bit_ctr=0;bit_ctr<8;bit_ctr++)      
        {
                MOSI = (byte & 0x80);                 
                byte = (byte << 1);                    
                SCLK = 1;                             
                byte |= MISO;                       
                SCLK = 0;                              
        }
        return(byte);
}


void SPI_WriteW5200(uint add,uchar date)
{

                nSCS=0;
       
                SPI_RW((add&0xff00)>>8);        //дaddr byte1
                SPI_RW((add&0x00ff));           //дaddr byte2
       
                delay_us(10);

                SPI_RW(0x80);                   //ддÃüÁî      
                SPI_RW(0x01);                   //дÊý¾Ý³¤¶ÈÒ»¸ö×Ö½Ú
       
                delay_us(10);

                SPI_RW(date);                   //·¢ËÍÊý¾Ý
       
                nSCS=1;
}

uchar SPI_ReadW5200(uint add)
{
                uchar date_tmp=0;
       
                nSCS=0;

                SPI_RW((add&0xff00)>>8);      //дaddr byte1
                SPI_RW((add&0x00ff));         //дaddr byte2
       
                delay_us(10);

                SPI_RW(0x00);                 //д¶ÁÃüÁî
                SPI_RW(0x01);                 //дÊý¾Ý³¤¶ÈÒ»¸ö×Ö½Ú
       
                delay_us(10);
       
                date_tmp=SPI_RW(0);           //½ÓÊÕÊý¾Ý
       
                nSCS=1;
       
                return date_tmp;
}

相关帖子

沙发
1060652341| | 2015-6-26 11:44 | 只看该作者
无力

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

15

帖子

0

粉丝