TI中文支持网
TI专业的中文技术问题搜集分享网站

CC1310跟CC1101通信

各位好,根据项目需求,需要进行CC1310跟CC1101组网通信,射频参数尽可知配置一致,但是无法通信,烦请帮忙看看,感激不尽!

CC1310用的例程是nortos的rfPacketTx(),修改CC1310的射频参数配合CC1101进行通信。以下为相关配置:

大概的配置为:使能地址检查、CRC校验,地址05,同步字段长度4字节,前导4字节,同步字段0x8799,FSK调制,434Mhz载波频率,2KBaud,

滤波带宽:58,频率偏移:5.157471Khz,使能曼彻斯特编码。

CC1310配置,

// Overrides for CMD_PROP_RADIO_DIV_SETUP
uint32_t pOverrides[] =
{
// override_use_patch_prop_genfsk.xml
// PHY: Use MCE ROM bank 4, RFE RAM patch
MCE_RFE_OVERRIDE(0,4,0,1,0,0),
// override_synth_prop_863_930_div5.xml
// Synth: Set recommended RTRIM to 7
HW_REG_OVERRIDE(0x4038,0x0037),
// Synth: Set Fref to 4 MHz
(uint32_t)0x000684A3,
// Synth: Configure fine calibration setting
HW_REG_OVERRIDE(0x4020,0x7F00),
// Synth: Configure fine calibration setting
HW_REG_OVERRIDE(0x4064,0x0040),
// Synth: Configure fine calibration setting
(uint32_t)0xB1070503,
// Synth: Configure fine calibration setting
(uint32_t)0x05330523,
// Synth: Set loop bandwidth after lock to 20 kHz
(uint32_t)0x0A480583,
// Synth: Set loop bandwidth after lock to 20 kHz
(uint32_t)0x7AB80603,
// Synth: Configure VCO LDO (in ADI1, set VCOLDOCFG=0x9F to use voltage input reference)
ADI_REG_OVERRIDE(1,4,0x9F),
// Synth: Configure synth LDO (in ADI1, set SLDOCTL0.COMP_CAP=1)
ADI_HALFREG_OVERRIDE(1,7,0×4,0x4),
// Synth: Use 24 MHz XOSC as synth clock, enable extra PLL filtering
(uint32_t)0x02010403,
// Synth: Configure extra PLL filtering
(uint32_t)0x00108463,
// Synth: Increase synth programming timeout (0x04B0 RAT ticks = 300 us)
(uint32_t)0x04B00243,
// override_phy_rx_aaf_bw_0xd.xml
// Rx: Set anti-aliasing filter bandwidth to 0xD (in ADI0, set IFAMPCTL3[7:4]=0xD)
ADI_HALFREG_OVERRIDE(0,61,0xF,0xD),
// override_phy_gfsk_rx.xml
// Rx: Set LNA bias current trim offset to 3
(uint32_t)0x00038883,
// Rx: Freeze RSSI on sync found event
HW_REG_OVERRIDE(0x6084,0x35F1),
// override_phy_gfsk_pa_ramp_agc_reflevel_0x1a.xml
// Tx: Configure PA ramping setting (0x41). Rx: Set AGC reference level to 0x1A.
HW_REG_OVERRIDE(0x6088,0x411A),
// Tx: Configure PA ramping setting
HW_REG_OVERRIDE(0x608C,0x8213),
// override_phy_rx_rssi_offset_5db.xml
// Rx: Set RSSI offset to adjust reported RSSI by +5 dB (default: 0), trimmed for external bias and differential configuration
(uint32_t)0x00FB88A3,
#if (CCFG_FORCE_VDDR_HH)
// TX power override
// Tx: Set PA trim to max (in ADI0, set PACTL0=0xF8)
ADI_REG_OVERRIDE(0,12,0xF8),
#endif
(uint32_t)0xFFFFFFFF,
};

// CMD_PROP_RADIO_DIV_SETUP
rfc_CMD_PROP_RADIO_DIV_SETUP_t RF_cmdPropRadioDivSetup =
{
.commandNo = 0x3807,
.status = 0x0000,
.pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.modulation.modType = 0x0,//FSK
.modulation.deviation = 0x14,//频率偏移
.symbolRate.preScale = 0xF,
.symbolRate.rateWord = 0x51F,//波特率?
.symbolRate.decimMode = 0x0,
.rxBw = 0x22, //滤波带宽59
.preamConf.nPreamBytes = 0x4,//前导4字节
.preamConf.preamMode = 0x1, //前导从1开始
.formatConf.nSwBits = 0x20, //同步字4字节
.formatConf.bBitReversal = 0x0,
.formatConf.bMsbFirst = 0x0, //先传输最低有效位
.formatConf.fecMode = 0xA, //使能曼彻斯特编码
.formatConf.whitenMode = 0x0,//无数据白化
.config.frontEndMode = 0x0,
.config.biasMode = 0x1, //外部偏移
.config.analogCfgMode = 0x0,
.config.bNoFsPowerUp = 0x0,//打开频率合成器
.txPower = 0xA73F, //发送功率
.pRegOverride = pOverrides, //指向要重写的硬件和配置寄存器列表的指针
.centerFreq = 0x01B2, //中心频率434
.intFreq = 0x8000, //RX时使用的中频327.68khz?
.loDivider = 0x0A,
};

// CMD_FS
rfc_CMD_FS_t RF_cmdFs =
{
.commandNo = 0x0803,
.status = 0x0000,
.pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.frequency = 0x01B2, //434khz频率
.fractFreq = 0x0000,
.synthConf.bTxMode = 0x0,
.synthConf.refFreq = 0x0,
.__dummy0 = 0x00,
.__dummy1 = 0x00,
.__dummy2 = 0x00,
.__dummy3 = 0x0000,
};

// CMD_PROP_TX
rfc_CMD_PROP_TX_t RF_cmdPropTx =
{
.commandNo = 0x3801,
.status = 0x0000,
.pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.pktConf.bFsOff = 0x0,
.pktConf.bUseCrc = 0x1,
.pktConf.bVarLen = 0x1,
.pktLen = 0x14, // SET APPLICATION PAYLOAD LENGTH数据包长度
.syncWord = 0x87998799,//0x99879987, //同步字
.pPkt = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
};

// CMD_PROP_RX
rfc_CMD_PROP_RX_t RF_cmdPropRx =
{
.commandNo = 0x3802,
.status = 0x0000,
.pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.pktConf.bFsOff = 0x0,
.pktConf.bRepeatOk = 0x0,
.pktConf.bRepeatNok = 0x0,
.pktConf.bUseCrc = 0x1,
.pktConf.bVarLen = 0x1,
.pktConf.bChkAddress = 0x1, //使能地址检查
.pktConf.endType = 0x0,
.pktConf.filterOp = 0x0,
.rxConf.bAutoFlushIgnored = 0x0,
.rxConf.bAutoFlushCrcErr = 0x0,
.rxConf.bIncludeHdr = 0x1,
.rxConf.bIncludeCrc = 0x0,
.rxConf.bAppendRssi = 0x0,
.rxConf.bAppendTimestamp = 0x0,
.rxConf.bAppendStatus = 0x1,
.syncWord = 0x87998799,//同步字
.maxPktLen = 0xFF, // MAKE SURE DATA ENTRY IS LARGE ENOUGH
.address0 = 0x05, //地址
.address1 = 0xBB,
.endTrigger.triggerType = 0x1,
.endTrigger.bEnaCmd = 0x0,
.endTrigger.triggerNo = 0x0,
.endTrigger.pastTrig = 0x0,
.endTime = 0x00000000,
.pQueue = 0, // INSERT APPLICABLE POINTER: (dataQueue_t*)&xxx
.pOutput = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
};

CC1101配置

static const uint8_t CC1101InitData[ 25 ][ 2 ]={
{ CC1101_IOCFG0, 0x06 }, //GDO0 配置
{ CC1101_FIFOTHR, 0x47 },
{ CC1101_PKTCTRL0, 0x05 }, //数据包自动控制寄存器,可变数据包长度 CRC使能 正常模式
{ CC1101_PKTCTRL1, 0x07 }, //地址检查 传输状态字 CRC校验失败不自动刷新FIFO { CC1101_CHANNR, 0x00 }, //通道0
{ CC1101_FSCTRL1, 0x06 }, //期望在RX中使用的IF频率
{ CC1101_PKTLEN, 0x40 },
{ CC1101_FREQ2, 0x10 },//434M载波频率
{ CC1101_FREQ1, 0xb1 },
{ CC1101_FREQ0, 0x3b },
{ CC1101_MDMCFG4, 0xF6 }, //通道搜带宽58 通讯波特率【0:3】
{ CC1101_MDMCFG3, 0x43 }, //波特率【0:7】 2KBaud
{ CC1101_MDMCFG2, 0x0B }, //[6:4] FSK 30/32同步字节侦测到 【3】使能曼彻斯特编码
{ CC1101_DEVIATN, 0x15 }, //频差
{ CC1101_MCSM0, 0x18 }, { CC1101_FOCCFG, 0x16 },
{ CC1101_FREND0, 0x17 }, //选择发射功率
{ CC1101_WORCTRL, 0xFB },
{ CC1101_FSCAL3, 0xE9 },
{ CC1101_FSCAL2, 0x2A },
{ CC1101_FSCAL1, 0x00 },
{ CC1101_FSCAL0, 0x1F },
{ CC1101_TEST2, 0x81 },
{ CC1101_TEST1, 0x35 },
{ CC1101_MCSM1, 0x3B }//[1:0]当包发送时,转为接收模式,[3:2]当接收一个包时,转为发送模式,[5:4]CCA选项
};

CC1101_Set_Address( 0x05, BROAD_0AND255 ); //设置过滤设备地址05 和 地址检测模式设置
CC1101_Set_Sync( 0x8799 ); //同步字段设置
CC1101_Write_Reg(CC1101_MDMCFG1, 0x22); //前导数4 通道间距200khz

CC1101_Write_Multi_Reg( CC1101_PATABLE, (uint8_t*)PaTabel, 8 );//配置发射功率

Viki Shi:

请参考一下这边的类似问题:e2e.ti.com/…/788475

user6045094:

回复 Viki Shi:

请问下,CC1310信道是如何选择,我想选择为和CC1101一样的信道,但是找不到设置的项。

Viki Shi:

回复 user6045094:

频率修改可以通过CMD_FS。 Sub 1 GHz以下没有标准的信道概念,中心频率通过CMD_PROP_RADIO_DIV_SETUP命令设置,或者你也可以通过smartrf studio

user6045094:

回复 Viki Shi:

好的,我CC1101中心频率设置为434MHz,CC1310也是434MHz。但是CC1101有个设置信道的选项,请问我如何设置才能在频率这方面两者对的上。

user6045094:

回复 灰小子:

好的,我看看,谢谢

user6045094:

回复 灰小子:

就是这个曼彻斯特编码的问题,非常感谢!!

赞(0)
未经允许不得转载:TI中文支持网 » CC1310跟CC1101通信
分享到: 更多 (0)