展鹏abc123 发表于 2012-7-2 16:05

CC1101模块求救

本帖最后由 展鹏abc123 于 2012-7-3 17:11 编辑

检查也没有错,反正是找不出来了,就是没有效果,,求救,是不是寄存器设置的问题,我想让其工作在915M
发送的主函数
void main()
{
uchar TxBuf={0};// 8字节, 如果需要更长的数据包,请正确设置
DDRB=0xB3;
CpuInit();
POWER_UP_RESET_CC1101();//上电复位
halRfWriteRfSettings();//配置CC1101的寄存器
halSpiWriteBurstReg(CCxxx0_PATABLE, PaTabel, 8);//SPI连续写寄存器
TxBuf = 1 ;
TxBuf = 1 ;
halRfSendPacket(TxBuf,8); // 发送发送缓冲区数据
while(1)
{
    TxBuf = 0x01;//发送的数据
   TxBuf = 'y';//发送的数据
halRfSendPacket(TxBuf,8); // 发送发送缓冲区数据
TxBuf = 0xff;   //发送完后将TxBuf设定成0xFF
TxBuf = 0xff;
delay(2000);
}
}
接收的主程序
void main(void)
{
   uchar i,j;
   uchar leng =0;
uchar RxBuf={0};// 8字节, 如果需要更长的数据包,请正确设置
DDRB=0xB3;
DDRC=0xff;
DDRD|=BIT(3)|BIT(4)|BIT(5)|BIT(6);
lcd_init();
CpuInit();
POWER_UP_RESET_CC1101();//上电复位
halRfWriteRfSettings();//配置CC1101的寄存器
halSpiWriteBurstReg(CCxxx0_PATABLE, PaTabel, 8);//SPI连续写寄存器
while(1)
{
    leng =8; // 预计接收8字节
setRxMode();//设置进入接收状态
if(halRfReceivePacket(RxBuf,&leng))   //接收数据
{
   
   write_com(0x80);
   if( RxBuf==0x01)
   {
   i=RxBuf;
   write_dat(0x30+i);
   PORTD|=BIT(5);
   }
   if( RxBuf=='y')
   {
      j=RxBuf;
      write_dat(j+48);
   }
   }
   //RxBuf = 0xff;
//RxBuf = 0xff;
}
}

展鹏abc123 发表于 2012-7-3 17:14

是不是寄存器设置的问题,我想让其工作在915M,还有就是有个参考程序是在8M晶振频率下的,而自己焊的板子是12M的,那程序中的延时函数还需要改吗

展鹏abc123 发表于 2012-7-3 17:14

是不是寄存器设置的问题,我想让其工作在915M,还有就是有个参考程序是在8M晶振频率下的,而自己焊的板子是12M的,那程序中的延时函数还需要改吗

yesful 发表于 2012-7-4 13:40

你CC1101模块是买的吗?
硬件电路没问题了,可以操作里面的寄存器了吗?
建议把CC1101的配置贴出来,让大伙一齐分析一下~~
我也在用CC1101,也遇到很多问题,有时间多交流~~~:handshake

第二个小江 发表于 2012-7-20 13:53

1。CC1101的晶体需要26MHz才能工作。
2。SPI总线是否正常,可通过读取CC1101的状态寄存器查看是否驱动起CC1101?
3。上述正确后,先验证发送端可以发送指定频率的信号,使用频谱查看。
4。发送可正常发射后,再调试接收。

zx198802 发表于 2012-7-25 10:42

用示波器测下SPI有没有数据

szjxwkj01 发表于 2012-8-20 15:52

市面上常用于CC1101是315M,433M,对于868M,915M需要另外调试

汩汩 发表于 2013-6-26 15:15

射频前端加CC1190试试
页: [1]
查看完整版本: CC1101模块求救