搜索
bottom↓
回复: 173

CC1100调试经验和大家分享!

[复制链接]

出0入0汤圆

发表于 2008-5-15 10:48:20 | 显示全部楼层 |阅读模式
最近在搞CC1100的双向通信,有些经验和大家分享一下.

1,配置问题,就因配置问题,我搞了半个月!!,要想得到最好的配置,一定要仿真软件给出才行.

2,发送问题,一不小心就会被硬便件锁死. while (GDO0_L),原因是上次为发送模式,你再启动发送命令,不用说,一定会被锁死.所以我加多一第指令,Spi_Write_Strobe(CC_SIDLE);进入空闲 Spi_Write_Strobe(CC_STX);进入发送模式.就不用管上次的模式,也不会被锁死.

3,接收问题,这可是主要问题,我相信刚开始搞CC1100的新手,(我也是,呵呵!),防止硬件锁死,在进入接收模式前,先进入空闲模式,Spi_Write_Strobe(CC_SIDLE);空闲模式 Spi_Write_Strobe(CC_SRX);接收模式,成功进入接收模式,就可以接收.可是只接收一次,或只有几次,就不能接收了,我相信刚搞CC1100的朋友都遇到的.原因是CC1100接收缓冲区溢出,无法接收.只要有几个方面,不能准确无误的捕捉CGO0 的高电平,缓冲区很快就会溢出.我的解决方法是,用中断接收,一有中断就读出缓冲区数据,冲洗缓冲区.在没有处理完其它任务时不要进入接收模式.退出中断前进入接收模式,才能保证准确接收数据.

4,伪数据问题,刚开始我都以为CC1100 太假.想不明白,明明没有发送,怎么会收到数据呢,而且还能通过CRC 验证标志.经过查资料,和分析.和网上有人说的.可能是CC1100的内部噪音,或外部无线电干扰.引发GDO0电平变化,触发中断.那为为什么还能通过CRC 标志.我也不明白.我处理的方法是.在读出CC1100缓冲区数据前,先清单片机存储数据的缓冲区,
  for (i = 0; i < n; i++)       //数据清据
   {
    Rx_data[n] = 0;             //
   }                  

然后将数据存储到单片机Rx_data.自己加入验证标志, 正反码对比,同步码对比.经以上处理,我现在的CC1100从没有到过错误的数据.

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2008-5-15 10:53:47 | 显示全部楼层
还有要注意的是,在发送数据时,一定要关中断,不然发发什么样的的事情,我也不清楚!

出0入0汤圆

发表于 2008-5-15 10:57:58 | 显示全部楼层
谢谢!楼主好样的.

出0入0汤圆

发表于 2008-5-15 11:05:04 | 显示全部楼层
确实,我也遇到过程序进入死循环的情况。
【现象描述】:在单机发送中,要求该机发送完成后转入接收状态,等待接收。不管有没有接收到语音数据,若发送时刻到来,则必须启动发送。现在的问题是有时发送一会语音数据就不能正常发送了,正常工作的持续时间长短不一。测试发现,PC指针原来是一直停留在了while(!GDO0);这条语句上了。该条语句的功能是判断是不是开始发送数据,当GDO0有上升沿出现的时候,表示开始发送数据。
【解决方法】在开始发送数据之前,先向CC1100写SIDLE命令使无线芯片CC1100转入空闲状态。然后再往TX FIFO里写入数据。数据写完后,写命令STX转发送状态开始发送。
【结果分析】用该方法后,发现带有状态转换的单机发送能够持续成功发送了。仔细研究CC1100数据手册后发现,写指令STX,在两种情况下可以成功转入到发送状态。一:在空闲状态。此种情况下可直接转入发送态。二:在接收态,并且要求是CCA使能。此种情况有个条件才能成功转入发送态,就是当信道清除时。
由此可以理解为什么之前的非正常现象了。虽然在MCSM1寄存器中的RXOFF-MODE位为00,表示接收完成后自动转入到空闲态。但是在程序中,在接收态一直等待接收,如果没有接收到数据,就不能转入空闲态了。因此再发送数据需要满足上面的第二个条件。

出0入0汤圆

 楼主| 发表于 2008-5-15 11:21:04 | 显示全部楼层
最近在搞电脑无线控制系统,非常的想不明白!明明可以正确无误的接收数据.就是发送不了数据.程序在类似的板上调试成功了,收发正常.现在转到这板上,只能收不能发,非常的想不明白.接收正确100%.发送为0%.
  不知大家有没有遇到这种情况呢.

出0入0汤圆

发表于 2008-5-15 11:54:24 | 显示全部楼层
楼上的,能不能将程序共亨一下啊,我的邮箱:EMAIL huaya1314@21cn.com

出0入0汤圆

 楼主| 发表于 2008-5-15 12:16:42 | 显示全部楼层
终于找出问题来,真高兴,就是这里

//功率配置***********************************************************
     const unsigned char Patab[] =
                        {0xC0, 0xC8, 0x85, 0x51, 0x3A, 0x06, 0x1C, 0x6C};这是错误的


//功率配置***********************************************************
     unsigned char Patab[] =
                        {0xC0, 0xC8, 0x85, 0x51, 0x3A, 0x06, 0x1C, 0x6C};这是正确的

原因是指针定义的是unsigned char *buffer 查不表上面那个功率表.

问题总解决了,昨天我找了一天就是想不明白呀.

出0入0汤圆

发表于 2008-5-15 12:49:16 | 显示全部楼层
好贴!做下记号

以后会考虑用C1100做一些数传的应用。

出0入0汤圆

 楼主| 发表于 2008-5-15 16:01:46 | 显示全部楼层
/*模块操作指令*****************************************************************/
#define    CRC_OK                 0x80      //校验标志*************************/

#define    Read_Byte              0x80      //读单字节*************************/
#define    Read_Burst             0xC0      //连续读取*************************/

#define    Write_Byte             0x00      //写单字节*************************/
#define    Write_Burst            0x40      //连续写入*************************/

/*配置寄存器定义***************************************************************/
#define    CC_IOCFG2              0x00      // GDO2输出脚配置******************/
#define    CC_IOCFG1              0x01      // GDO1输出脚配置******************/
#define    CC_IOCFG0              0x02      // GDO0输出脚配置******************/
#define    CC_FIFOTHR             0x03      // RX FIFO和TX FIFO门限************/
#define    CC_SYNC1               0x04      // 同步词汇,高字节****************/
#define    CC_SYNC0               0x05      // 同步词汇,低字节****************/
#define    CC_PKTLEN              0x06      // 数据包长度**********************/
#define    CC_PKTCTRL1            0x04      // 数据包自动控制******************/
#define    CC_PKTCTRL0            0x08      // 数据包自动控制******************/
#define    CC_ADDR                0x09      // 设备地址/***********************/
#define    CC_CHANNR              0x0A      // 信道数**************************/
#define    CC_FSCTRL1             0x0B      // 频率合成器控制******************/
#define    CC_FSCTRL0             0x0C      // 频率合成器控制******************/
#define    CC_FREQ2               0x0D      // 频率控制词汇,高字节************/
#define    CC_FREQ1               0x0E      // 频率控制词汇,中间字节**********/
#define    CC_FREQ0               0x0F      // 频率控制词汇,低字节************/
#define    CC_MDMCFG4             0x10      // 调制器配置**********************/
#define    CC_MDMCFG3             0x11      // 调制器配置**********************/
#define    CC_MDMCFG2             0x12      // 调制器配置**********************/
#define    CC_MDMCFG1             0x13      // 调制器配置**********************/
#define    CC_MDMCFG0             0x14      // 调制器配置**********************/
#define    CC_DEVIATN             0x15      // 调制器背离设置 *****************/
#define    CC_MCSM2               0x16      // 主通信控制状态机配置************/
#define    CC_MCSM1               0x17      // 主通信控制状态机配置************/
#define    CC_MCSM0               0x18      // 主通信控制状态机配置************/
#define    CC_FOCCFG              0x19      // 频率偏移补偿配置****************/
#define    CC_BSCFG               0x1A      // 位同步配置**********************/
#define    CC_AGCCTRL2            0x1B      // AGC控制*************************/
#define    CC_AGCCTRL1            0x1C      // AGC控制*************************/
#define    CC_AGCCTRL0            0x1D      // AGC控制*************************/
#define    CC_WOREVT1             0x1E      // 高字节时间0暂停*****************/
#define    CC_WOREVT0             0x1F      // 低字节时间0暂停*****************/
#define    CC_WORCTRL             0x20      // 电磁波激活控制******************/
#define    CC_FREND1              0x21      // 前末端RX配置********************/
#define    CC_FREND0              0x22      // 前末端RX配置********************/
#define    CC_FSCAL3              0x23      // 频率合成器校准******************/
#define    CC_FSCAL2              0x24      // 频率合成器校准******************/
#define    CC_FSCAL1              0x25      // 频率合成器校准******************/
#define    CC_FSCAL0              0x26      // 频率合成器校准******************/
#define    CC_RCCTRL1             0x27      // RC振荡器配置********************/
#define    CC_RCCTRL0             0x28      // RC振荡器配置********************/
#define    CC_FSTEST              0x29      // 频率合成器标度 *****************/
#define    CC_PTEST               0x2A      // 产品测试************************/
#define    CC_AGCTEST             0x2B      // AGC测试*************************/
#define    CC_TEST2               0x2C      // 不同的测试设置******************/
#define    CC_TEST1               0x2D      // 不同的测试设置******************/
#define    CC_TEST0               0x2E      // 不同的测试设置******************/

/*命令滤波定义*****************************************************************/
#define    CC_SRES                0x30      // 重启芯片************************/
#define    CC_SFSTXON             0x31      // 开启和校准频率合成器************/
#define    CC_SXOFF               0x32      // 关闭晶体振荡器******************/
#define    CC_SCAL                0x33      // 校准频率合成器并关断************/
#define    CC_SRX                 0x34      // 启用RX。************************/
#define    CC_STX                 0x35      // 空闲状态:启用TX。**************/
#define    CC_SIDLE               0x36      // 离开RX/TX***********************/
#define    CC_SAFC                0x37      // 频率合成器的AFC调节*************/
#define    CC_SWOR                0x38      // 自动RX选举序列(电磁波激活)****/
#define    CC_SPWD                0x39      // 当CSn为高时进入功率降低模式*****/
#define    CC_SFRX                0x3A      // 冲洗RX FIFO缓冲*****************/
#define    CC_SFTX                0x3B      // 冲洗TX FIFO缓冲*****************/
#define    CC_SWORRST             0x3C      // 重新设置真实时间时钟************/
#define    CC_SNOP                0x3D      // 无操作**************************/

/*状态寄存定义*****************************************************************/
#define    CC_PARTNUM             0x30      // CC2550的组成部分数目************/
#define    CC_VERSION             0x31      // 当前版本数**********************/
#define    CC_FREQEST             0x32      // 率偏移估计**********************/
#define    CC_LQI                 0x33      // 接质量的解调器估计**************/
#define    CC_RSSI                0x34      // 接收信号强度指示****************/
#define    CC_MARCSTATE           0x35      // 控制状态机状态******************/
#define    CC_WORTIME1            0x36      // WOR计时器高字节*****************/
#define    CC_WORTIME0            0x37      // WOR计时器低字节*****************/
#define    CC_PKTSTATUS           0x38      // 当前GDOx状态和数据包状态********/
#define    CC_VCO_VC_DAC          0x39      // PLL校准模块的当前设定***********/
#define    CC_TXBYTES             0x3A      // TX FIFO中的下溢和比特数*********/
#define    CC_RXBYTES             0x3B      // RX FIFO中的下溢和比特数*********/
#define    CC_PATABLE             0x3E      // ********************************/
#define    CC_TXFIFO              0x3F      // ********************************/
#define    CC_RXFIFO              0x3F      // ********************************/

/*寄存器配器表 仿真软件给出****************************************************/
#define    IOCFG2                 0x0B      // GDO2输出脚配置******************/
#define    IOCFG0                 0x06      // GDO0输出脚配置******************/
#define    FIFOTHR                0x07      // RX FIFO和TX FIFO门限************/
#define    PKTLEN                 0xFF      // 数据包长度**********************/
#define    PKTCTRL1               0x05      // 数据包自动控制******************/
#define    PKTCTRL0               0x05      // 数据包自动控制******************/
#define    ADDR                   0x01      // 设备地址************************/
#define    CHANNR                 0x00      // 频道数**************************/
#define    FSCTRL1                0x0B      // 频率合成器控制******************/
#define    FSCTRL0                0x00      // 频率合成器控制******************/
#define    FREQ2                  0x10      // 频率控制词汇,高字节************/
#define    FREQ1                  0xA7      // 频率控制词汇,中间字节**********/
#define    FREQ0                  0x62      // 频率控制词汇,低字节************/
#define    MDMCFG4                0x2D      // 调制器配置**********************/
#define    MDMCFG3                0x3B      // 调制器配置**********************/
#define    MDMCFG2                0x73      // 调制器配置**********************/
#define    MDMCFG1                0x22      // 调制器配置**********************/
#define    MDMCFG0                0xF8      // 调制器配置**********************/
#define    DEVIATN                0x00      // 调制器背离设置******************/
#define    MCSM1                  0x3F      // 主通信控制状态机配置************/
#define    MCSM0                  0x18      // 主通信控制状态机配置************/
#define    FOCCFG                 0x1D      // 频率偏移补偿配置****************/
#define    BSCFG                  0x1C      // 位同步配置**********************/
#define    AGCCTRL2               0xC7      // AGC控制*************************/
#define    AGCCTRL1               0x00      // AGC控制*************************/
#define    AGCCTRL0               0xB2      // AGC控制*************************/
#define    FREND1                 0xB6      // 前末端RX配置********************/
#define    FREND0                 0x10      // 前末端TX配置********************/
#define    FSCAL3                 0xEA      // 频率合成器校准******************/
#define    FSCAL2                 0x0A      // 频率合成器校准******************/
#define    FSCAL1                 0x00      // 频率合成器校准******************/
#define    FSCAL0                 0x11      // 频率合成器校准******************/
#define    FSTEST                 0x59      // 频率合成器标度******************/  
#define    TEST2                  0x88      // 不同的测试设置******************/
#define    TEST1                  0x31      // 不同的测试设置******************/
#define    TEST0                  0x0B      // 不同的测试设置******************/
/******************************************************************************/

出0入0汤圆

 楼主| 发表于 2008-5-15 16:03:49 | 显示全部楼层
源码不断上传中**************

出0入0汤圆

发表于 2008-5-15 16:26:10 | 显示全部楼层
下文呢

出0入0汤圆

发表于 2008-5-15 20:17:33 | 显示全部楼层
mark...以后就用到

出0入0汤圆

 楼主| 发表于 2008-5-16 10:07:52 | 显示全部楼层
现在在编写上位机软件,工作完成后,再和大家分享!

出0入0汤圆

发表于 2008-5-16 13:26:14 | 显示全部楼层
MARK

出0入0汤圆

发表于 2008-5-16 15:27:20 | 显示全部楼层
在搞cc2500,留个脚丫

出0入0汤圆

发表于 2008-5-17 21:16:48 | 显示全部楼层
哈哈~~厉害

出0入0汤圆

发表于 2008-5-19 17:26:02 | 显示全部楼层
无故接收到数据的解决方法是一定要设定CC1100信号强度接收门限,看RSSI部分英文资料,否则噪声会使CC1100接收到数据。另外关于硬件锁死问题,建议大家将GDO引脚接到CPU的外部中断引脚上,并开启外部中断进行检测,这样肯定不会造成锁死,另外实在没有外部中断引脚,那么就要改变CC1100给中断信号的模式,将GDO引脚的中功能从功能6设置成功能7.
功能7的意思是当接收到整个数据包并且CRC正确后给中断信号,这样就可以非常简单的接收到整个数据报,并且此时要设置当接收到数据包CRC错误时自动清楚接收缓冲区。
这两种控制方式的程序我都有,有需要的联系我。
是用功能6的源程序是MSP430的程序
使用功能7的源程序是LPC2214的程序

出0入0汤圆

发表于 2008-5-19 17:27:09 | 显示全部楼层
另外提醒大家在用CC1100芯片以前一定要好好吃透手册以及CC1100相关文档!很重要!因为这个芯片应用非常灵活,内部寄存器太多!

出0入0汤圆

发表于 2008-5-19 19:16:42 | 显示全部楼层
楼主可以把大都发上来看看啊 ,最近也在做这个无线数传!!

出0入0汤圆

发表于 2008-5-19 20:24:32 | 显示全部楼层
我也在搞CC2500,准备用simpliciti协议。有志同道合的吗?

出0入0汤圆

发表于 2008-5-19 21:11:32 | 显示全部楼层
CC1100通信距离室外能达到多少?

出0入0汤圆

发表于 2008-5-20 11:51:13 | 显示全部楼层
我做cc2400,

出0入0汤圆

发表于 2008-5-21 20:31:49 | 显示全部楼层
我想使用CC1100的工作433Hz不知道可不可以用 SimpliciTI啊?

出0入0汤圆

发表于 2008-5-21 20:33:28 | 显示全部楼层
greatsnows 过热阿塔 我想使用CC1100的工作433Hz不知道可不可以用 SimpliciTI啊? 我的MSN:zeng.kejun@hotmail.com
用SimpliciTI的朋友,大家交流下.

greatsnows 过热阿塔 留个联系方式吧.

出0入0汤圆

 楼主| 发表于 2008-5-22 11:09:46 | 显示全部楼层

(原文件名:CC1100.jpg)

出0入0汤圆

 楼主| 发表于 2008-6-16 17:56:22 | 显示全部楼层
/*引入文件************************************************/
#include<iom8V.h>
#include<macros.h>
#include "CC1100.h"

/*接口定义************************************************/
#define key  0                                   //按键输入
#define spz  6                                   //喇叭输出

#define Led1 1                                   //输出指示
#define Led2 2                                   //输出指示  

#define key_L    (!(key_H))                      //按键触发
#define key_H    (PINB &=  (1<<key))             //按键弹起

#define led1_Off PORTB &= ~(1<<Led1)             //关闭指示
#define led1_On  PORTB |=  (1<<Led1)             //打开指示

#define led2_Off PORTB &= ~(1<<Led2)             //关闭指示
#define led2_On  PORTB |=  (1<<Led2)             //打开指示

#define spz_H    PORTD |=  (1<<spz)              //蜂鸣器响
#define spz_L    PORTD &= ~(1<<spz)              //蜂鸣器关

/*模块接口************************************************/
#define SLK  0                                   //时钟接口
#define CSN  1                                   //芯片选择

#define MOSI 2                                   //数据输出
#define MISO 3                                   //数据输入

#define GDO0 4                                   //状态指示
#define GDO2 5                                   //状态指示

#define SCLK_L PORTD &= ~(1<<SLK)                //发出时钟
#define SCLK_H PORTD |=  (1<<SLK)                //结束时钟

#define CSN_L  PORTD &= ~(1<<CSN)                //使能选择
#define CSN_H  PORTD |=  (1<<CSN)                //使能结束

#define MOSI_L PORTD &= ~(1<<MOSI)               //低位数据
#define MOSI_H PORTD |=  (1<<MOSI)               //高位数据

#define MISO_L (!(MISO_H))                       //输入低位
#define MISO_H (PIND &= (1<<MISO))               //输入高位

#define GDO0_L (!(GDO0_H))                       //低位指示
#define GDO0_H (PIND &= (1<<GDO0))               //高位指示

#define GDO2_L (!(GDO2_H))                       //低位指示
#define GDO2_H (PIND &= (1<<GDO2))               //高位指示

/*发送数据************************************************/
     unsigned char Tx_data[] =
              {0x01 ,0xFE, 0xD6, 0x29, 0x0E, 0x0E, 0x77, 0x88};

/*接收数据************************************************/
     unsigned char Rx_data[10];       
         
/*功率配置************************************************/
     unsigned char PaTabel[] =
              {0xC0, 0xC8, 0x85, 0x51, 0x3A, 0x06, 0x1C, 0x6C};
         
/*********************************************************/
/*函数名字:delay_ns                                     */
/*输入参数:延时周期参数                                 */
/*输出参数:无                                           */
/*功能描述:延时1 纳秒                                   */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void delay_ns(unsigned char n)                   //纳秒延时
{
     while (n--);
}
         
/*********************************************************/
/*函数名字:delay_ms                                     */
/*输入参数:无                                           */
/*输出参数:无                                           */
/*功能描述:延时1 毫秒                                   */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void delay_ms(void)                              //毫秒延时
{   
     unsigned int i;
         
     for (i=0; i<1500; i++)
         {
          NOP();
         }
}

/*********************************************************/
/*函数名字:delay_nms                                    */
/*输入参数:延时周期参数据                               */
/*输出参数:无                                           */
/*功能描述:延时程序                                     */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void delay_nms(unsigned int n)                   //延时周期
{
     unsigned int i;
         
     for (i=0; i<n; i++)
          {
           delay_ms();
          }
}   

/*********************************************************/
/*函数名字:Spz_dealy                                    */
/*输入参数:鸣响延时周期                                 */
/*输出参数:无                                           */
/*功能描述:蜂鸣器鸣叫                                   */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void Spz_delay(unsigned char n)
{
     unsigned char i;
   
         spz_H;                                      //蜂鸣器响
         
     for (i=0; i<n; i++)                         //延时周期
          {
           delay_ms();
          }
          
     spz_L;                                      //蜂鸣器关
}

/*********************************************************/
/*函数名字:PORT_Init                                    */
/*输入参数:无                                           */
/*输出参数:无                                           */
/*功能描述:单片机端口初始化                             */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void PORT_Init(void)
{
     DDRD =0B11000111;                           //模块接脚
     PORTD=0B10111111;                           //
               
     DDRB =0B11111110;                           //按键输入
         PORTB=0B11111001;                           //
}         

/*********************************************************/
/*函数名字:Led_Light                                    */
/*输入参数:无                                           */
/*输出参数:无                                           */
/*功能描述:LED1闪烁三次                                 */
/*建造日期;2008年03月30日                               */  
/*********************************************************/  
void Led_Light(void)
{
     unsigned char i;
         
         for (i=0;i<3;i++)                           //闪烁三次
          {
           led1_On;                                  //输出指示
           delay_nms(50);                            //
           led1_Off;                                 //关闭指示
           delay_nms(50);                            //
          }
}  

/*********************************************************/
/*函数名字:SpiTxRx_Byte                                 */
/*输入参数:写入寄存器的数据                             */
/*输出参数:读取寄存器的数据                             */
/*功能描述:通过SPI 串口读写一字节数据                   */
/*建造日期;2008年03月30日                               */  
/*********************************************************/  
unsigned char SpiTxRx_Byte(unsigned char data)
{
     unsigned char i, temp = 0;            
         
     for (i=0; i<8; i++)                         //读写八位
      {                                    
       if (data & 0x80)
            {
             MOSI_H;                                 //写出高位   
                }               
           else
            {
             MOSI_L;                                 //写出低位
            }
          
       SCLK_H;                                   //发出时钟
       NOP();
           NOP();
          
           data <<= 1;
           temp <<= 1;                               //数据左移
                                 
       if (MISO_H)
            {
             temp += 1 ;                             //记录高位  
                }            
           else  
            {
             temp += 0;                              //记录低位
                }

       SCLK_L;                                   //结束时钟                        
       NOP();
           NOP();
      }
     return temp;                                //返回数据
}

/*********************************************************/
/*函数名字:RESET_CC1100                                 */
/*输入参数:无                                           */
/*输出参数:无                                           */
/*功能描述:写入复位滤波命                               */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void RESET_CC1100(void)
{
         CSN_L;                                      //片选使能
         while (MISO_H);                             //等待响应
         SpiTxRx_Byte(CC_SRES);                              //复位命令
         while (MISO_H);                             //等待响应
         CSN_H;                                      //结束使能
}

/*********************************************************/
/*函数名字:POWER_UP_RESET_CC1100                        */
/*输入参数:无                                           */
/*输出参数:无                                           */
/*功能描述:模块上电初始化                               */
/*建造日期;2008年03月30日                               */
/*********************************************************/  
void POWER_UP_RESET_CC1100(void)
{
     CSN_H;                                      //上电拉高
         SCLK_H,MOSI_L;                              //
         delay_ns(1);                                //
         CSN_L;                                      //片选使能
         delay_ns(1);                                //
         CSN_H;                                      //选择拉高
         delay_ns(80);                               //
         SCLK_L;                                     //拉低时钟
         RESET_CC1100();                                        //复位命令
}

/*********************************************************/
/*函数名字:Init_cc1100                                  */
/*输入参数:无                                           */
/*输出参数:无                                           */
/*功能描述:初始化模块                                   */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void Init_cc1100(void)
{
     POWER_UP_RESET_CC1100();                    //上电复位
         WriteRfSettings();                          //写入配置
         Spi_Write_Burst(CC_PATABLE,PaTabel,8);      //功率配置
         Spi_Write_Strobe(CC_SIDLE);                 //进入空闲
         Spi_Write_Strobe(CC_SRX);                   //进入接收
}

/*********************************************************/
/*函数名字:Spi_Write_Strobe                             */
/*输入参数:滤波命令                                     */
/*输出参数:无                                           */
/*功能描述:写入滤波命令                                 */
/*建造日期;2008年03月30日                               */
/*********************************************************/  
void Spi_Write_Strobe(unsigned char strobe)
{
     CSN_L;                                      //片选使能                           
     while (MISO_H);                             //等待响应
     SpiTxRx_Byte(strobe);                                 //写入命令
     CSN_H;                                      //结束使能                        
}

/*********************************************************/
/*函数名字:Spi_Read_Byte                                */
/*输入参数:寄存器地址                                   */
/*输出参数:寄存器配置                                   */
/*功能描述:单字节读取寄存器                             */
/*建造日期;2008年03月30日                               */
/*********************************************************/
unsigned char Spi_Read_Byte(unsigned char addr)
{
     unsigned char value;            
                
     CSN_L;                                      //片选使能   
     while (MISO_H);                             //等待响应
     SpiTxRx_Byte((addr|Read_Byte));             //送出地址
     value = SpiTxRx_Byte(0);                    //读寄存器
     CSN_H;                                      //结束使能                          
         
     return value;                               //返回数据
}

/**********************************************************/
/*函数名字:Spi_Write_Byte                                */
/*输入参数:寄存器地址,配置                              */
/*输出参数:无                                            */
/*功能描述:单字节写入寄存器                              */
/*建造日期;2008年03月30日                                */
/**********************************************************/
void Spi_Write_Byte(unsigned char addr,unsigned char value)
{
     CSN_L;                                      //片选使能
     while (MISO_H);                             //等待响应
     SpiTxRx_Byte(addr);                         //送出地址
     SpiTxRx_Byte(value);                        //写入配置
     CSN_H;                                      //结束使能                        
}

/**********************************************************/
/*函数名字:Spi_Read_Burst                                */
/*输入参数:寄存器地址,接收缓冲区首址,接收字节数        */
/*输出参数:结果存储在缓冲区地址                          */
/*功能描述:连续读取寄存器数据                            */
/*建造日期;2008年03月30日                                */
/**********************************************************/
void Spi_Read_Burst (unsigned char addr,unsigned char *buffer,unsigned char count)
{
     unsigned char i;
         
     CSN_L;                                      //片选使能
     while (MISO_H);                             //等待响应
         SpiTxRx_Byte((addr|Read_Burst));            //连续读取
         
     for (i = 0; i < count; i++)                 //
          {
       buffer = SpiTxRx_Byte(0);              //存储数据
      }
     CSN_H;                                      //结束使能                          
}

/**********************************************************/
/*函数名字:Spi_Write_Burst                               */
/*输入参数:寄存器地址,发射缓冲区首址,发送字节数        */
/*输出参数:无                                            */
/*功能描述:连续写入寄存器数据                            */
/*建造日期;2008年03月30日                                */
/**********************************************************/
void Spi_Write_Burst(unsigned char addr,unsigned char *buffer,unsigned char count)
{
     unsigned char i;
       
     CSN_L;                                      //片选使能
     while (MISO_H);                             //等待响应
     SpiTxRx_Byte((addr|Write_Burst));           //连续写入
         
     for (i = 0; i < count; i++)                 //
          {
       SpiTxRx_Byte(buffer);                  //送出数据
      }
     CSN_H;                                      //结束使能                           
}
  
/*********************************************************/
/*函数名字:Spi_Write_Packet                             */
/*输入参数:发送缓冲区首址,数组长度                      */
/*输出参数:无                                           */
/*功能描述:发送缓冲区数据                               */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void Spi_Write_Packet(unsigned char *Tx_buffer,unsigned char size)
{   
     unsigned char i;
          
         Spi_Write_Byte(CC_TXFIFO,size);             //先送长度
     Spi_Write_Burst(CC_TXFIFO,Tx_buffer,size);  //发送数据
         Spi_Write_Strobe(CC_STX);                   //发送模式
         
         i = 0;
         while (GDO0_L)                              //等待送出
          {
           if (i > 10) break;                        //限时等待
           delay_nms(1);                             //
           i++;                                      //
          }
         i = 0;
         while (GDO0_H)                              //送出完毕
          {
           if (i > 10) break;                        //限时等待
           delay_nms(1);                             //
           i++;                                      //
          }
         delay_nms(1);
         Spi_Write_Strobe(CC_SFTX);                  //清缓冲区
         Spi_Write_Strobe(CC_SIDLE);                 //进入空闲
         Spi_Write_Strobe(CC_SRX);                   //进入接收
}

/*********************************************************/
/*函数名字:Spi_Read_Packet                              */
/*输入参数:接收缓冲区首址,最大长度                      */
/*输出参数:校验标志                                     */
/*功能描述:数据存入缓冲区                               */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
unsigned char Spi_Read_Packet(unsigned char *Rx_buffer,unsigned char length)
{
         unsigned char status[2];
         unsigned char size = 0;
         
         delay_nms(1);
         size = Spi_Read_Byte(CC_RXFIFO);            //数据长度
         
         if (size < length)
          {
       Spi_Read_Burst(CC_RXFIFO,Rx_buffer,size); //接收数据
           Spi_Read_Burst(CC_RXFIFO,status,2);       //校验数据
          }
         Spi_Write_Strobe(CC_SFRX);                  //清缓冲区  
         return (status[1] & CRC_OK);                //校验标志
}
   
/*********************************************************/
/*函数名字:WriteRfSettings                              */
/*输入参数:无                                           */
/*输出参数:无                                           */
/*功能描述:模块寄存器配置                               */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void WriteRfSettings(void)
{
     Spi_Write_Byte (CC_IOCFG2,IOCFG2);          //
     Spi_Write_Byte (CC_IOCFG0,IOCFG0);          //
         Spi_Write_Byte (CC_FIFOTHR,FIFOTHR);        //
         Spi_Write_Byte (CC_PKTLEN,PKTLEN);          //
     Spi_Write_Byte (CC_PKTCTRL1,PKTCTRL1);      //
     Spi_Write_Byte (CC_PKTCTRL0,PKTCTRL0);      //
     Spi_Write_Byte (CC_ADDR,ADDR);              //
         Spi_Write_Byte (CC_CHANNR,CHANNR);          //
     Spi_Write_Byte (CC_FSCTRL1,FSCTRL1);        //
     Spi_Write_Byte (CC_FSCTRL0,FSCTRL0);        //
     Spi_Write_Byte (CC_FREQ2,FREQ2);            //
     Spi_Write_Byte (CC_FREQ1,FREQ1);            //
     Spi_Write_Byte (CC_FREQ0,FREQ0);            //
     Spi_Write_Byte (CC_MDMCFG4,MDMCFG4);        //
     Spi_Write_Byte (CC_MDMCFG3,MDMCFG3);        //
     Spi_Write_Byte (CC_MDMCFG2,MDMCFG2);        //
     Spi_Write_Byte (CC_MDMCFG1,MDMCFG1);        //
     Spi_Write_Byte (CC_MDMCFG0,MDMCFG0);        //
     Spi_Write_Byte (CC_DEVIATN,DEVIATN);        //
         Spi_Write_Byte (CC_MCSM0,MCSM0);            //
     Spi_Write_Byte (CC_FOCCFG,FOCCFG);          //
     Spi_Write_Byte (CC_BSCFG,BSCFG);            //
     Spi_Write_Byte (CC_AGCCTRL2,AGCCTRL2);      //
     Spi_Write_Byte (CC_AGCCTRL1,AGCCTRL1);      //
     Spi_Write_Byte (CC_AGCCTRL0,AGCCTRL0);      //
         Spi_Write_Byte (CC_FREND1,FREND1);          //
     Spi_Write_Byte (CC_FREND0,FREND0);          //
     Spi_Write_Byte (CC_FSCAL3,FSCAL3);          //
     Spi_Write_Byte (CC_FSCAL2,FSCAL2);          //
     Spi_Write_Byte (CC_FSCAL1,FSCAL1);          //
     Spi_Write_Byte (CC_FSCAL0,FSCAL0);          //
     Spi_Write_Byte (CC_FSTEST,FSTEST);          //
     Spi_Write_Byte (CC_TEST2,TEST2);            //
     Spi_Write_Byte (CC_TEST1,TEST1);            //
     Spi_Write_Byte (CC_TEST0,TEST0);            //
}

/*********************************************************/
/*函数名字:RX_ACK                                       */
/*输入参数:无                                           */
/*输出参数:应答标志                                     */
/*功能描述:等待从机应答,返回应答标志                    */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
unsigned char RX_ACK(void)
{
     unsigned char *buffer = Rx_data;
         unsigned int size,i=0;
      
         size = sizeof(Rx_data);                     //最大长度
         while (i <10000)                            //限时应答
          {
           delay_ns(15);
           i++;
           if (GDO0_H)                               //等待应答               
            {
                 if (Spi_Read_Packet(Rx_data,size))      //应答出现  
                  {
                   if (!(buffer[0] ^= buffer[1]))        //
                    {
                 if ((buffer[2] == (~(buffer[3]))))  //
                      {
                       return 1;                         //成功应答
                          }      
                        }
                  }
            }
          }  
         return 0;                                   //没有应答
}

/*********************************************************/
/*函数名字:TX_ACK                                       */
/*输入参数:无                                           */
/*输出参数:无                                           */
/*功能描述:接收成功发送应答                             */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void TX_ACK(void)
{
     unsigned char PA;
         
         PA = Rx_data[4];                            //获取功率
     Spz_delay(50);                              //成功接收
         
         Spi_Write_Byte (CC_FREND0,PA);              //功率配置
     Spi_Write_Packet(Tx_data,4);                //发送应答       
}

/*********************************************************/
/*函数名字:Tx_cc1100                                    */
/*输入参数:无                                           */
/*输出参数:无                                           */
/*功能描述:发送数据,应答失败从发                        */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void Tx_cc1100(void)
{
     unsigned char PA,i;
         unsigned char ACK,Tx_Size;     
         
         Tx_Size = sizeof(Tx_data);                  //数组长度
         Tx_data[4] = PA = 0x10;                     //最大功率  
         
         for (i=0; i<2; i++)
          {  
           Spi_Write_Byte (CC_FREND0,PA);            //功率配置
           Spi_Write_Packet(Tx_data,Tx_Size);        //开始发送
          
           ACK = RX_ACK();
           if (ACK)                                  //是否应答
            {
             Led_Light();                            //对方应答
                 break;                                  //应答退出
            }
           Tx_data[4] = PA = 0x17;                   //降低功率       
          }  
         delay_nms(1);
         Spi_Write_Strobe(CC_SIDLE);                 //进入空闲
         Spi_Write_Strobe(CC_SRX);                   //进入接收
}

/*********************************************************/
/*函数名字:Rx_cc1100                                    */
/*输入参数:无                                           */
/*输出参数:无                                           */
/*功能描述:接收数据,成功发送应答                        */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void Rx_cc1100(void)
{
     unsigned char *buffer = Rx_data;  
         unsigned char i, size;
                   
         for (i = 0; i < 15; i++)
          {
           buffer = 0;
          }                  
                          
     size = sizeof(Rx_data);                     //最大长度
     if (Spi_Read_Packet(Rx_data,size))          //接收数据
          {
           if (!(buffer[0] ^= buffer[1]))            //
            {
                 if ((buffer[2] == (~(buffer[3]))))      //
                  {
                   TX_ACK();                             //发送应答
                  }
                }
          }
         delay_nms(1);
         Spi_Write_Strobe(CC_SIDLE);                 //进入空闲
         Spi_Write_Strobe(CC_SRX);                   //进入接收              
}

/*********************************************************/
/*函数名字:nain                                         */
/*输入参数:无                                           */
/*输出参数:无                                           */
/*功能描述:主程序                                       */
/*建造日期;2008年03月30日                               */  
/*********************************************************/
void main(void)
{      
     PORT_Init();                                //脚位定义
         Led_Light();                                //输出指示
         Init_cc1100();                              //模块设置
         
     while(1)                                    //循环程序
          {
           if (key_L)                                //按键检测
            {
                 delay_nms(20);                          //防误处理
                 if (key_L)                              //
                  {                                 
                   led2_On;                              //打开指示
                   Tx_cc1100();                          //发送数据
                   while(key_L);                         //等待弹起
                   led2_Off;                             //关闭指示
                  }
                }
           if (GDO0_H) Rx_cc1100();                  //接收数据       
          }
}
/*********************************************************/

出0入0汤圆

发表于 2008-6-17 00:25:01 | 显示全部楼层
最近在学2510

出0入0汤圆

发表于 2008-6-17 12:57:03 | 显示全部楼层
到 就是没有人在研究协议吗?

出0入0汤圆

发表于 2008-6-20 16:08:50 | 显示全部楼层
收藏
谢谢!

出0入0汤圆

发表于 2008-7-28 20:55:52 | 显示全部楼层
先做个记号,下次可能用上!

出0入0汤圆

发表于 2008-7-28 23:19:53 | 显示全部楼层
前段时间也搞过CC2500。
其实这东西应用起来不难,TI网站的资料很详细,一般问题上面都可以找到答案。
搞跳频系统的话,有点麻烦。

出0入0汤圆

发表于 2008-8-17 10:23:41 | 显示全部楼层
求助啊~~~
各位大侠,cc1100无接收~~~~
发送正常,接收与发送配置相同,
GDO0设置0x06,但是进入接收状态后没有反应~~~该怎么办???
急啊~~~

出0入0汤圆

发表于 2008-8-17 10:33:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-8-17 10:48:15 | 显示全部楼层
没有人在么?~~~急啊~~~~
在线等了!!!

出0入0汤圆

发表于 2008-9-1 15:11:59 | 显示全部楼层
【31楼】 lindajillduan
我原先也是这个问题,不过现在解决了,我是吧地址去掉.

出0入0汤圆

发表于 2008-9-17 12:21:08 | 显示全部楼层
【36楼】&nbsp;yjbin:频分或者时分.

出0入0汤圆

发表于 2008-9-17 12:22:14 | 显示全部楼层
【31楼】&nbsp;lindajillduan:接收没好,你怎么知道发送好了啊?最好有一个能正常收发的东西,这样调试起来简单些

出0入0汤圆

发表于 2008-9-18 17:11:39 | 显示全部楼层
JIHAO

出0入0汤圆

发表于 2008-9-19 21:01:48 | 显示全部楼层
寄存器配器表&nbsp;仿真软件给出,您说的这个软件是,SmartRF&nbsp;Studio,还别的什么软件啊?

出0入0汤圆

发表于 2008-10-9 16:27:24 | 显示全部楼层
太好了.谢谢你

出0入0汤圆

发表于 2008-10-16 14:48:48 | 显示全部楼层
&nbsp;谢谢大家的亨!最近我在在调试CC1100,但是还没有调试成功,我单片机SPI口发送数据,但是连接上无线模块后,就用示波表观察不到数据了。chengyabcd&nbsp;&nbsp;你好,我也是用的LPC&nbsp;系列芯片调试CC1100,能不能发使用功能7的源程序是LPC2214的程序&nbsp;给我参考。你是用的芯片的硬件SPI口吗?&nbsp;&nbsp;&nbsp;我的邮箱是:wellsun2008@163.com.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;谢谢!

出0入0汤圆

发表于 2008-10-30 13:00:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-10-30 22:00:43 | 显示全部楼层
我最近有个项目也想用CC1100,不知道硬件设计时注意哪里问题,天线怎么设计,哪位大侠分享一下经验

出0入0汤圆

发表于 2008-10-30 22:08:17 | 显示全部楼层
记号

出0入0汤圆

发表于 2009-1-4 16:21:29 | 显示全部楼层
if&nbsp;(GDO0_H)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//等待应答&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Spi_Read_Packet(Rx_data,size))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//应答出现&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!(buffer[0]&nbsp;^=&nbsp;buffer[1]))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((buffer[2]&nbsp;==&nbsp;(~(buffer[3]))))&nbsp;&nbsp;//&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//成功应答&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;
如果接收正确能成功应答吗??似乎是没有收对数据才有可能应答,绝对接收成功似乎是应答不了,不知道是否是这样.
原因是这一个判断if&nbsp;(!(buffer[0]&nbsp;^=&nbsp;buffer[1]))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

出10入0汤圆

发表于 2009-2-25 17:00:45 | 显示全部楼层
CC1100记号

出0入0汤圆

发表于 2009-3-8 19:40:52 | 显示全部楼层
【16楼】 chengyabcd
能否发一下使用07功能的程序?谢谢。
我的邮箱:mimang510@yahoo.com.cn

出0入0汤圆

发表于 2009-3-9 08:08:53 | 显示全部楼层
标记

出0入0汤圆

发表于 2009-3-9 09:58:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-7-24 22:44:20 | 显示全部楼层
最近在做STM32与cc1100的项目,发送和接收已经成功,在考虑传送语音的问题,语音要压缩和解压,感觉有点复杂呢。

出0入0汤圆

发表于 2009-7-28 14:30:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-7 16:16:00 | 显示全部楼层
记号

出0入0汤圆

发表于 2009-8-8 07:21:11 | 显示全部楼层
Spi_Write_Strobe(CC_SIDLE);   
        Spi_Write_Burst(CC_TXFIFO,buffer,5);
        Spi_Write_Strobe(CC_STX);//请问这是不是在写完这条命令后就马上开始发送啊,
        LED=1;//--------------开始计时
        while(GDO0_L)
              ;
        while(GDO0_H)
              ;
        LED=0;//-------------计时结束,为何我的1100在TIME(led=1-->led=0)比TIME(GDO0=1-->DGO0)大了好几个MS????
        Spi_Write_Strobe(CC_SFTX);  
   
(原文件名:1100.GIF)

出0入0汤圆

发表于 2009-8-12 12:05:28 | 显示全部楼层
看了看楼主的程序,我测试这个最多一次只能发送63个字节,如果发送比较小的数据包,比如26个字节,或有连续发十几包之后发送出去收不到,发送较长的数据比如110个,有时接收端会收到乱麻。
配置为2-fsk,100k波特率,可变长度,30/32同步字节。

出0入0汤圆

发表于 2009-9-25 20:49:56 | 显示全部楼层
楼主可以给个联系方式不(发到我邮箱tyb-gy@163.com)?想跟楼主交流交流,谢谢!

出0入0汤圆

发表于 2009-9-26 20:41:15 | 显示全部楼层
楼主能把源程序发来看看么(我的邮箱kissmind@gmail.com),MSN(Eric_jlei@hotmail.com)也可以,我也在做CC1110的无线通信应用,请多多指教!

出0入0汤圆

发表于 2009-9-27 17:37:24 | 显示全部楼层
我在研究CC2420,楼主方便的话发我邮箱ljh2688@163.com,大家多交流一下

出0入0汤圆

发表于 2009-12-4 10:02:37 | 显示全部楼层
有没有人搞过CC1100的低功耗啊, 我用CC1100的低功耗怎么不行,  在正常情况下可以(2uA),  有干扰就不行了(20uA).

出0入0汤圆

发表于 2009-12-8 09:03:28 | 显示全部楼层
各位兄弟,我也正在搞CC1100,用来无线收发数据,哪位好心人能不能给个完整的程序参考一下,不胜感激啊!

出0入0汤圆

 楼主| 发表于 2009-12-8 09:28:52 | 显示全部楼层
以下资料来源于网上:



CC1110的RF部分设计基本沿用了CC1100(目前新版本的芯片使用的是CC1010的设计),在老的CC1100中存在接收缓存溢出和发送缓存溢出这两个bug。

Chipcon自己也承认有这个bug。因此建议开发人员在软件中加以避免这个bug。

你可以在datasheet中的Radio部分的MARCSTATE这个寄存器的描述中看到有关RX_OVERFLOW和TX_UNDERFLOW这两个标志。

出0入0汤圆

发表于 2009-12-8 10:05:44 | 显示全部楼层
强烈mark!

出0入0汤圆

发表于 2009-12-11 15:58:27 | 显示全部楼层
强烈mark!再强烈一次

出0入0汤圆

发表于 2010-2-25 14:30:33 | 显示全部楼层
谢谢楼主分享

出0入8汤圆

发表于 2010-2-25 15:02:20 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2010-3-7 18:18:41 | 显示全部楼层
看了以上各位高见,还是有不明白的地方。
本人用cc1100,发送接收均正常。唯一遗憾的就是会出现连接丢失现象。而且是随机的。
有时半小时出现一次,有时十几个小时才出现一次。
不是丢失数据包。就是接收不到数据。我把接收端电源关闭,再打开,就可以收到数据了。
谁能指点下,为什么,谢谢!
我每秒发送/接收20次。我想,若是缓冲区溢出,应该早就溢出了。
我的QQ:33444353.邮箱:zjcxyxy@163.com

出0入0汤圆

发表于 2010-3-8 17:49:04 | 显示全部楼层
很好,看下

出0入0汤圆

发表于 2010-3-9 16:19:34 | 显示全部楼层
救命啊~~~~~~~~~~~~

出0入0汤圆

发表于 2010-3-13 09:58:22 | 显示全部楼层
我也正在调试cc110的收发程序,发送用频谱仪可以看到波形,但总接收不到数据,请教一下高手,我用的是2FSK,不知道接收和发送程序中的配置寄存器的设置是否相同,如果不同,又有哪些寄存器的设置应该不同?

出0入0汤圆

发表于 2010-3-17 10:00:41 | 显示全部楼层
我的收发问题解决了,但是怎样用固定长度协议和可变长度协议收发大于64字节的数据包?我已经搞了好几天了,请高手帮帮忙,不甚感激。还有就是怎样用无线长度协议收发大于255字节的数据包呢?

出0入0汤圆

发表于 2010-3-17 13:16:28 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-3-18 21:19:48 | 显示全部楼层
学习中 !!!

出0入0汤圆

发表于 2010-3-30 16:38:47 | 显示全部楼层
回复【49楼】hwdpaley
-----------------------------------------------------------------------

我最近也做STM32和CC1100的模块,一直接收不了,可否发个例程看看,谢谢啊
邮箱:290106560@qq.com
非常感谢啊

出0入0汤圆

发表于 2010-3-31 14:28:34 | 显示全部楼层
回复【44楼】brotherwyz
if (GDO0_H)                               //等待应答                  
            {  
                 if (Spi_Read_Packet(Rx_data,size))      //应答出现   
                  {  
                   if (!(buffer[0] ^= buffer[1]))        //  
                    {  
                 if ((buffer[2] == (~(buffer[3]))))  //  
                      {  
                       return 1;                         ......
-----------------------------------------------------------------------

同样的疑问

出0入0汤圆

发表于 2010-4-19 14:07:57 | 显示全部楼层
回复【楼主位】ivws 点点滴滴
-----------------------------------------------------------------------

楼主帮个忙 加下我QQ479309630  CC1100我弄的都快疯了 怎么弄都出不来信号,,谢谢了 ,加下我

出0入0汤圆

发表于 2010-4-19 14:13:41 | 显示全部楼层
回复【楼主位】ivws 点点滴滴
-----------------------------------------------------------------------

楼主 为什么我的程序在复位的时候就进入死循环了

//*****************************************************************************************
//函数名:void RESET_CC1100(void)
//输入:无
//输出:无
//功能描述:复位CC1100
//*****************************************************************************************
void RESET_CC1100(void)
{
        CSN = 0;
        while (MISO);
       
        SpiTxRxByte(CCxxx0_SRES);                 //写入复位命令
          
        while (MISO);
        CSN = 1;
}


帮个忙解决下!!谢谢啦!!

出0入0汤圆

发表于 2010-4-19 15:00:23 | 显示全部楼层
NRF24L01无线数传模块(13RMB为人民服务)
http://store.taobao.com/shop/view_shop.htm?shop_id=59240360

出0入0汤圆

发表于 2010-5-2 22:13:46 | 显示全部楼层
Mark一个,正在学习中!

出0入0汤圆

发表于 2010-5-2 23:40:48 | 显示全部楼层
bj

出0入0汤圆

发表于 2010-5-9 21:28:00 | 显示全部楼层
回复【78楼】lou0908
bj
-----------------------------------------------------------------------

bj什么意思?呵呵

出0入0汤圆

发表于 2010-5-27 09:11:10 | 显示全部楼层
**********************************************************
unsigned char RX_ACK(void)
{
     unsigned char *buffer = Rx_data;
unsigned int size,i=0;  
      
size = sizeof(Rx_data);                     //最大长度
while (i <10000)                            //限时应答
  {
   delay_ns(15);
   i++;
   if (GDO0_H)                               //等待应答
    {
if (Spi_Read_Packet(Rx_data,size))      //应答出现   
  {
   if (!(buffer[0] ^= buffer[1]))        //
    {
         if ((buffer[2] == (~(buffer[3]))))  //
      {
       return 1;                         //成功应答
  }      
}
  }
    }
  }   
return 0;                                   //没有应答  
}
个人理解:这段程序不能实现应答的功能,只能理解为主机开始发送数据后,等待数据发送完毕。

楼主在吗?想请教你一下!

出0入0汤圆

发表于 2010-5-27 12:51:26 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-6-27 19:42:34 | 显示全部楼层
/*配置寄存器定义***************************************************************/
#define    CC_IOCFG2              0x00      // GDO2输出脚配置******************/
#define    CC_IOCFG1              0x01      // GDO1输出脚配置******************/
#define    CC_IOCFG0              0x02      // GDO0输出脚配置******************/
#define    CC_FIFOTHR             0x03      // RX FIFO和TX FIFO门限************/
#define    CC_SYNC1               0x04      // 同步词汇,高字节****************/
#define    CC_SYNC0               0x05      // 同步词汇,低字节****************/
#define    CC_PKTLEN              0x06      // 数据包长度**********************/
#define    CC_PKTCTRL1            0x04      // 数据包自动控制******************/

寄存器定义时为什么有两个4;
#define    CC_SYNC1               0x04      // 同步词汇,高字节****************/
#define    CC_PKTCTRL1            0x04      // 数据包自动控制******************/

出0入0汤圆

发表于 2010-7-22 09:34:03 | 显示全部楼层
好文,mark

出0入0汤圆

发表于 2010-7-29 23:12:07 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-8-15 21:03:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-20 01:59:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-15 16:40:46 | 显示全部楼层
回复【49楼】hwdpaley
-----------------------------------------------------------------------

不知道能否发一个STM32 cc1100的代码给我参考一下啊,谢谢了!
wanggang2140@163.com

出0入0汤圆

发表于 2010-11-17 10:32:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-20 13:13:12 | 显示全部楼层
谢谢,楼主,可否有打包好的呢?

出0入0汤圆

发表于 2010-11-20 13:52:12 | 显示全部楼层
hao

出0入0汤圆

发表于 2010-11-21 15:38:23 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-12-3 20:15:36 | 显示全部楼层
我在用CC2500时碰到了便件锁死情况

出0入0汤圆

发表于 2010-12-8 11:24:31 | 显示全部楼层
继续啊,我也正在搞啊!!

出0入0汤圆

发表于 2010-12-8 11:44:04 | 显示全部楼层
好东西,记号一个。

出0入0汤圆

发表于 2010-12-8 14:05:14 | 显示全部楼层
好东西,记号一个。

出0入0汤圆

发表于 2010-12-9 00:04:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-10 11:23:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-13 19:43:35 | 显示全部楼层
回复【49楼】hwdpaley
-----------------------------------------------------------------------

能否把你的stm32 + cc1100的程序发给我参考下,谢谢!
yank639@126.com

出0入0汤圆

发表于 2010-12-20 19:16:45 | 显示全部楼层
能不能把你的程序发给我啊? 我紧急需要这个东西, 写了两个星期写了程序, 但总是测不出来, 这个程序有做不完我就被炒鱿鱼了~~~ 一定要发给我好吗? 特别感谢!~~

saba_m.y@hotmail.com
xjqiushimld@sina.com

出0入0汤圆

发表于 2010-12-20 20:06:55 | 显示全部楼层
回复【25楼】ivws 点点滴滴
-----------------------------------------------------------------------

麻烦, 问一下, 功率配置的问题, 为什么要用signed char PaTabel[] =
      {0xC0, 0xC8, 0x85, 0x51, 0x3A, 0x06, 0x1C, 0x6C};
即,为什么给 PATABLE 写入八个数据?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 08:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表