2807|6

10

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

CC2500能发送不能接收能接收不能发送求助 [复制链接]

我遇到的问题很奇怪,两块板子一样的程序,发送正常接收也正常,但是不能切换。发送的板只能做发送,不能做接收,但是重启后可以做接收。代码在下面:
        while(1)
        {                         
                        if(!left_key)                           //按键检测
                        {
                       
                                if(!left_key)          // 延时按键再检测防止干扰
                                        {
                                       
                                        temperature--;
                                        for(i=0;i                                         {
                                                CC2500_TxRxBuf[1+i] = temperature;
                                        }
                                        CC2500_Write_TxADDR();
                                        CC2500_TxPacket();
                                       delay_ms(1);
                                       CC2500_Write_RxADDR();
                                       CC2500_SetRxMode();
                                        test_mode = MODE_RX;
                                }
                                while(!left_key);
                          }
/********************上面是发送下面是接收***************************************/               
                  if(test_mode == MODE_RX)
                        {                 
                                 if(CC2500_RxPacket())
                                {       
                                        CC2500_Write_RxADDR();
                                        CC2500_SetRxMode();
                                        temperature=CC2500_TxRxBuf[1+i];
                                }
                         }

}
程序太长我压缩传上来,用过cc2500的帮我看看,谢谢!

yj.zip

98.21 KB, 下载次数: 7

stc驱动遥控模块

此帖出自无线连接论坛

最新回复

想获得有效的帮助,问题需要细化,而能够提出足够细化的问题,需要你自己先有足够的观察和思考。  详情 回复 发表于 2018-6-28 15:02
点赞 关注
 

回复
举报

10

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
这个程序发送和接收都正常,又为什么不可以同时工作呢?只能一个板做发送一个做接收。是不是要设置双工状态啊,有没有这样的设置的?谁做过双工的吗?
此帖出自无线连接论坛
 
 

回复

1万

帖子

141

TA的资源

版主

板凳
 
接收态和发送态是要对CC2500进行配置操作的,建议仔细看器件手册,在正确、完整的理解器件手册的基础上自己写程序,而不是抄代码,抄一万遍也不如你自己独立编一遍。
此帖出自无线连接论坛
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

4
 
chunyang 发表于 2018-6-27 15:11
接收态和发送态是要对CC2500进行配置操作的,建议仔细看器件手册,在正确、完整的理解器件手册的基础上自己 ...

千年等一回等来了一顿教训,哈哈,还是要感谢你的回复,手册也看了但是不得要领,所以上来求助了,虽然看的很吃力,但我会继续努力的,如果有谁愿意指点一下那真是太好了。一般自己什么都懂了就去指导别人了不会问这些大佬们认为简单的问题。还是要再次感谢你第一的回复,让我感受到了自己的存在...
此帖出自无线连接论坛

点评

想获得有效的帮助,问题需要细化,而能够提出足够细化的问题,需要你自己先有足够的观察和思考。  详情 回复 发表于 2018-6-28 15:02
 
 
 

回复

1万

帖子

141

TA的资源

版主

5
 
fzhlpp 发表于 2018-6-28 08:57
千年等一回等来了一顿教训,哈哈,还是要感谢你的回复,手册也看了但是不得要领,所以上来求助了,虽然看 ...

想获得有效的帮助,问题需要细化,而能够提出足够细化的问题,需要你自己先有足够的观察和思考。
此帖出自无线连接论坛
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

6
 
本帖最后由 fzhlpp 于 2019-7-10 21:30 编辑

我又来了,还是关于CC2500,这次我带来了新的问题。首先我汇报一下已经学会的东西,CC2500中文资料我是每次打开电脑后必须先打开的一个文件,断断续续的也有段日子了,可惜这份资料我几乎是啥也没看懂,是真看不懂,但是我现在知道用按键改变芯片内部寄存器的值来改动接收和发射的地址了,发射的地址和接收地址一样就可以接收数据,否则不行,但是两个板子靠的近了有时地址在隔壁也可以顺利接收不知道是什么问题,看来还是没真懂这个地址设置。还有一个就是频道设置也会了,也是可以通过按键改变两个板子的寄存器做到的:   CC2500_WriteReg(CCxxx0_CHANNR,CHANNR_number);学到的这些都是看人家的代码慢慢分析出来的,那份中文资料文字都简单,但是它表达啥意思俺是一概不知,现在问题就是两个板子距离太近,10米都不到就收不灵了,有时丢数据很厉害,我想试试加大发射功率或者降低数据速率,但是我拿到的人家的代码好像没这个功能,就一直翻看那个中文资料,我是越看越迷糊,看了几天了就是找不到怎么样才能加大发射功率,也不知道怎么改变速率,有大师愿意指点一下吗,万分感激。。。

void CC2500_Init(void) 
{
	CSN = 1; 
	delay_ms(1);
	CSN = 0; 
	delay_ms(1);
	CSN = 1; 
	delay_ms(1);

	CSN = 0;
	SPI_Write(CCxxx0_SRES); 		//写入复位命令
	CSN = 1; 
				
	CC2500_WriteReg(CCxxx0_FSCTRL1,  CC2500_Config.FSCTRL1);
	CC2500_WriteReg(CCxxx0_FSCTRL0,  CC2500_Config.FSCTRL0);
	CC2500_WriteReg(CCxxx0_FREQ2,    CC2500_Config.FREQ2);
	CC2500_WriteReg(CCxxx0_FREQ1,    CC2500_Config.FREQ1);
	CC2500_WriteReg(CCxxx0_FREQ0,    CC2500_Config.FREQ0);
	CC2500_WriteReg(CCxxx0_MDMCFG4,  CC2500_Config.MDMCFG4);
	CC2500_WriteReg(CCxxx0_MDMCFG3,  CC2500_Config.MDMCFG3);
	CC2500_WriteReg(CCxxx0_MDMCFG2,  CC2500_Config.MDMCFG2);
	CC2500_WriteReg(CCxxx0_MDMCFG1,  CC2500_Config.MDMCFG1);
	CC2500_WriteReg(CCxxx0_MDMCFG0,  CC2500_Config.MDMCFG0);
	CC2500_WriteReg(CCxxx0_CHANNR,   CC2500_Config.CHANNR);
	CC2500_WriteReg(CCxxx0_DEVIATN,  CC2500_Config.DEVIATN);
	CC2500_WriteReg(CCxxx0_FREND1,   CC2500_Config.FREND1);
	CC2500_WriteReg(CCxxx0_FREND0,   CC2500_Config.FREND0);
	CC2500_WriteReg(CCxxx0_MCSM0 ,   CC2500_Config.MCSM0 );
	CC2500_WriteReg(CCxxx0_FOCCFG,   CC2500_Config.FOCCFG);
	CC2500_WriteReg(CCxxx0_BSCFG,    CC2500_Config.BSCFG);
	CC2500_WriteReg(CCxxx0_AGCCTRL2, CC2500_Config.AGCCTRL2);
	CC2500_WriteReg(CCxxx0_AGCCTRL1, CC2500_Config.AGCCTRL1);
	CC2500_WriteReg(CCxxx0_AGCCTRL0, CC2500_Config.AGCCTRL0);
	CC2500_WriteReg(CCxxx0_FSCAL3,   CC2500_Config.FSCAL3);
	CC2500_WriteReg(CCxxx0_FSCAL2,   CC2500_Config.FSCAL2);
	CC2500_WriteReg(CCxxx0_FSCAL1,   CC2500_Config.FSCAL1);
	CC2500_WriteReg(CCxxx0_FSCAL0,   CC2500_Config.FSCAL0);
	CC2500_WriteReg(CCxxx0_FSTEST,   CC2500_Config.FSTEST);
	CC2500_WriteReg(CCxxx0_TEST2,    CC2500_Config.TEST2);
	CC2500_WriteReg(CCxxx0_TEST1,    CC2500_Config.TEST1);
	CC2500_WriteReg(CCxxx0_TEST0,    CC2500_Config.TEST0);
	CC2500_WriteReg(CCxxx0_IOCFG2,   CC2500_Config.IOCFG2);
	CC2500_WriteReg(CCxxx0_IOCFG0,   CC2500_Config.IOCFG0);    
	CC2500_WriteReg(CCxxx0_PKTCTRL1, CC2500_Config.PKTCTRL1);
	CC2500_WriteReg(CCxxx0_PKTCTRL0, CC2500_Config.PKTCTRL0);
	CC2500_WriteReg(CCxxx0_ADDR,     CC2500_Config.ADDR);
	CC2500_WriteReg(CCxxx0_PKTLEN,   CC2500_Config.PKTLEN);

	//CC2500_WriteBurstReg(CCxxx0_PATABLE, PaTabel, 8);
	////CC2500_Command(CCxxx0_SFRX);//		先进读取模式
	//CC2500_Command(CCxxx0_SFTX); //		先进发射模式
	CC2500_Command(CCxxx0_SIDLE); //		先进空闲模式
	
	
}

 

此帖出自无线连接论坛
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

7
 

资料上的描述怎么都不是寄存器描述的呢,单片机资料都是把寄存器名称给出然后阐述该寄存器使用方法,这模块就不能这样做吗?费解。。。像这个功率调节,我是看不懂它在说啥,寄存器也看不到,PATABLE是寄存器吗?FREND0.PA_POWER是寄存器吗?恍恍惚惚知道好像功率有8级可调,到底设置哪个寄存器的哪个位?????????? LED_test.zip (118.34 KB, 下载次数: 2)

此帖出自无线连接论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表