打印

单片机-无线通信,大家帮忙找找原因。

[复制链接]
1645|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
calor|  楼主 | 2010-7-12 21:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 calor 于 2010-7-12 21:23 编辑

最近在网上买了一块433MHz的无线通信模块,卖家并没有提供芯片资料,只是给了一个简单的模块介绍。
资料上介绍模块是通过标准SPI时序与MCU通讯,遂用自己已有的一块单片机开发板做了个简单实验,可是并没有成功,求各位帮忙找找问题。

    用PI口模拟的SPI时序,读取无线通信模块内部寄存器值。烧录程序后,P2口为0xFF,而按照资料上的介绍结果应该是0x03.

    程序如下,小弟初学,程序是自己按照时序写的,我觉得可能是程序的问题。大家帮忙找找原因,谢谢了。(P1.0-CS,P1.1-SDI,P1.2-SDO,P1.3-SCLK,U8-unsigned char )

#include <reg52.h>
#include "init.h"
u8 value;
void delay(u8 x);
u8 read_register(u8 reg);

void delay(u8 x)
{
u8 i;
for(i=0;i<x;i++);
}
u8 read_register(u8 reg)
{
     u8 i=0;
     CS=0;//片选信号拉低
     delay(50);//RF启动延迟
     SDI=0;//写标志
     SCLK=0;
     delay(50);
     SCLK=1;
     delay(50);
     for(i=7;i>0;i--)//发送地址
     {
          SDI=(reg>>i)&0x01;//得到地址最高位
          SCLK=0;
         delay(50);
         SCLK=1;
         delay(50);
     }
     for(i=8;i>0;i--)//读取数据
    {
         value=value<<1;
         value=value|SDO;
         SCLK=0;
         delay(50);
         SCLK=1;
         delay(50);
    }
    CS=1;
    SCLK=0;
    delay(50);
    return(value);
    }
void main()
{
      CS = 1;
      SCLK = 0;
      read_register(0x00);
      P2=value;
     while(1);
  }

附上KEIL模拟的时序图与资料提供的操作时序。

SPI时序.jpg (1.29 MB )

SPI时序.jpg

无线模块时序.jpg (595.6 KB )

无线模块时序.jpg

相关帖子

沙发
calor|  楼主 | 2010-7-12 22:35 | 只看该作者
还不算很晚啊,都睡了吗?:)
指点下,需要什么资料我添加进来,我确定电路连接是正确的,这个模块工作电压是1.8V-3.6V,用2个二极管刚好。

使用特权

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

本版积分规则

0

主题

57

帖子

1

粉丝