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

[复制链接]
944|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

粉丝
快速回复 在线客服 返回列表 返回顶部