This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

cc430与cc1101成功实现通信---问题汇总

Other Parts Discussed in Thread: CC1101

我是小白,调试cc430与cc1101的无线通信话费了一个半月时间。

首先确认cc430与cc1101能够正常通信并且测试通信最大距离,这个是保证硬件正确的前提。

其次在选择用cc430和cc1101两个模块的开发板时要慎重,我调试的时候就买了两家的cc1101模块,发现一家的可以通信,另外一家的就不可以。说明质量还是很重要的。

第三点:使用packetsniffer+cc1110抓包,看发送的包是否正确。

第四点:也就是最难的一点,配置cc430和cc1101的寄存器。这个过程要不断地尝试。下面贴出我成功配置的寄存器

这个是cc430的寄存器配置

RF_SETTINGS rfSettings = {
0x08, // FSCTRL1 Frequency synthesizer control.
0x00, // FSCTRL0 Frequency synthesizer control.
0x10, // FREQ2 Frequency control word, high byte.
0xA7, // FREQ1 Frequency control word, middle byte.
0x62, // FREQ0 Frequency control word, low byte.
0x8A, // MDMCFG4 Modem configuration.
0x83, // MDMCFG3 Modem configuration.
0x93, // MDMCFG2 Modem configuration.
0x22, // MDMCFG1 Modem configuration.
0xF8, // MDMCFG0 Modem configuration.
0x00, // CHANNR Channel number.
0x34, // DEVIATN Modem deviation setting (when FSK modulation is enabled).
0x56, // FREND1 Front end RX configuration.
0x10, // FREND0 Front end TX configuration.
0x18, // MCSM0 Main Radio Control State Machine configuration.
0x16, // FOCCFG Frequency Offset Compensation Configuration.
0x6C, // BSCFG Bit synchronization Configuration.
0x43, // AGCCTRL2 AGC control.
0x40, // AGCCTRL1 AGC control.
0x91, // AGCCTRL0 AGC control.
0xE9, // FSCAL3 Frequency synthesizer calibration.
0x2A, // FSCAL2 Frequency synthesizer calibration.
0x00, // FSCAL1 Frequency synthesizer calibration.
0x1F, // FSCAL0 Frequency synthesizer calibration.
//0x59, // FSTEST Frequency synthesizer calibration.
0x81, // TEST2 Various test settings.
0x35, // TEST1 Various test settings.
0x09, // TEST0 Various test settings.
0x47, // FIFOTHR RXFIFO and TXFIFO thresholds.
0x29, // IOCFG2 GDO2 output pin configuration.
0x06, // IOCFG0 GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanation.
0x04, // PKTCTRL1 Packet automation control. 04
0x05, // PKTCTRL0 Packet automation control. 05
0x00, // ADDR Device address.
0xFF, // PKTLEN Packet length. 3D
0XD3, //SYNC1
0X91, //SYNC0
};

这个是cc1101的寄存器配置:

void Reg_config(void)
{
unsigned char PTB[8]={0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
Reg_WR_Burst(0X3E,8,PTB);
Reg_WR_Single(FSCTRL1, 0x08); // 频率合成器控制1
Reg_WR_Single(FSCTRL0, 0x00); // 频率合成器控制0
Reg_WR_Single(FREQ2, 0x10); // 频率控制字高字节
Reg_WR_Single(FREQ1, 0xA7); // 频率控制字中字节
Reg_WR_Single(FREQ0, 0x62); // 频率控制字低字节
Reg_WR_Single(MDMCFG4, 0xCA); // 调制解调器配置4 05
Reg_WR_Single(MDMCFG3, 0x83); // 调制解调器配置3
Reg_WR_Single(MDMCFG2, 0x93); // 禁用数字DC阻断滤波器,GFSK,禁用曼切斯特,检测30/32同步字
Reg_WR_Single(MDMCFG1, 0x22); // 禁用FEC,最小前导4Byte,通道间隔的2bit指数
Reg_WR_Single(MDMCFG0, 0xF8); // 通道间隔的8bit尾数
Reg_WR_Single(CHANNR, 0x00); // 通道数
Reg_WR_Single(DEVIANT, 0x34); // 调试解调器偏差值设置
Reg_WR_Single(FREND1, 0x56); // 前端RX配置
Reg_WR_Single(FREND0, 0x10); // 选择PA功率设置为最大值
Reg_WR_Single(MCSM1, 0x30); // 数据包接收完成后保持RX状态,数据包发送完成后进入RX状态
Reg_WR_Single(MCSM0, 0x18); // 自动校准,终止计数次数64,禁用由引脚直接进行的无线状态控制,XOSC在SLEEP状态下关闭
Reg_WR_Single(FOCCFG, 0x16); // 频率偏移补偿配置
Reg_WR_Single(BSCFG, 0x6C); // 位同步配置
Reg_WR_Single(AGCCTRL2, 0x43); // 自动增益控制2
Reg_WR_Single(AGCCTRL1, 0x40); // 自动增益控制1
Reg_WR_Single(AGCCTRL0, 0x91); // 自动增益控制0
Reg_WR_Single(FSCAL3, 0xE9); // 频率合成器校准3
Reg_WR_Single(FSCAL2, 0x2A); // 频率合成器校准2
Reg_WR_Single(FSCAL1, 0x00); // 频率合成器校准1
Reg_WR_Single(FSCAL0, 0x1F); // 频率合成器校准0
Reg_WR_Single(FSTEST, 0x59);
Reg_WR_Single(TEST2, 0x81); // 各种测试设置2
Reg_WR_Single(TEST1, 0x35); // 各种测试设置1
Reg_WR_Single(TEST0, 0x09); // 各种测试设置0
Reg_WR_Single(FIFOTHR, 0x47); // 使能ADC保持,RX信号强度衰减0dB,设置TX_FIFO和RX_FIFO阀值(TX:33,RX:32)
Reg_WR_Single(IOCFG2, 0x06); // GDO2:发送/接收到同步字时置位,并在数据包的末尾取消置位
Reg_WR_Single(IOCFG0, 0x07); // GDO0:接收数据包的CRC_OK时置位.从RX_FIFO读取第一个Byte时取消置位
Reg_WR_Single(PKTCTRL1, 0x04); // 前导质量评估门限,收数据CRC校验失败时自动清空RX_FIFO,不检查地址
Reg_WR_Single(PKTCTRL0, 0x05); // 开启数据白化,使用FIFO,开启CRC校验,固定数据包长度模式
Reg_WR_Single(ADDR, 0x00); // 数据包地址
Reg_WR_Single(PKTLEN, 0x3D); // 数据包长度
Reg_WR_Single(SYNC1, 0xD3); // 同步字高位
Reg_WR_Single(SYNC0, 0x91); // 同步字低位
}。

在此我要感谢TI的工作人员,和星星师兄的帮助,是我们的交流才让我这个项目顺利进行下去。