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

[复制链接]
2305|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模拟的时序图与资料提供的操作时序。

本帖子中包含更多资源

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

×
 楼主| calor 发表于 2010-7-12 22:35 | 显示全部楼层
还不算很晚啊,都睡了吗?:)
指点下,需要什么资料我添加进来,我确定电路连接是正确的,这个模块工作电压是1.8V-3.6V,用2个二极管刚好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

57

帖子

1

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