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.

[参考译文] CC1310:根据给定的示例代码更改射频设置时的 TX 下溢

Guru**** 2419530 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/810360/cc1310-tx-underflow-when-changing-rf-settings-from-the-example-code-given

器件型号:CC1310

本示例以及 RF Studio 为我提供了两组设置。

以下操作完全正常:

//
//由 SmartRF Studio 版本2.11.0 (内部版本号122)生成
//针对 SimpleLink SDK 版本进行了测试:CC13x0 SDK 2.20.xx.xx
//器件:CC1310修订版本2.1
//
*********


//
//参数摘要
//地址:0
//地址0:0xAA
//地址1:0xBB
//频率:868.00000 MHz
//数据格式:串行模式禁用
//偏差:25.000 kHz
// pktLen:30
// 802.15.4g 模式:0
//选择传输 PSDU 八位位组的位顺序:1
//数据包长度: 可变
//最大数据包长度:255
//数据包长度:30
//数据包数据:255
// RX 滤波器带宽:98kHz
//符号速率:50.0000 kBaud
//同步字长度:32位
// TX 功率:14dBm (需要在 ccfg.c 中定义 CCFG_FORCE_VDDR_HH = 1,请参阅 CC13xx/CC26xx 技术参考手册
/白皮书) 无白化


#include 
#include DeviceFamily_constructPath (driverlib/rf_mailbox.h)
#include DeviceFamily_constructPath (driverlib/rf_common_cmd.h)
#include DeviceFamily_constructPath (driverlib/rf_prop_cmd.h)
#include 
#include DeviceFamily_constructPath (rf_patches/rf_patch_cpe_genfs.h)
#include DeviceFamily_constructPath (rf_patches/rf_patch_rfe_genfs.h)
#include "smartrf_settings.h"


// TI-RTOS RF 模式对象
rf_mode_rf_prop =
{.rff_patch_rf_rfe_rfe_prefs.h}#include "smartrf_rf_rf_regulations.h




和 rf_rf_peds_rf_rf_rf_rf_rf_rf_pet_rf_rf_rf_rf_rf_patchn_rf_

//覆盖 CMD_PROP_RADIO_DIV_SETUP
UINT32_t pOverrides[]=
{
// override_use_patch_prop_genfsk.xml
// PHY:使用 MCE ROM 库4、RFE RAM 补丁
MCE_RFE_OVERRIDE (0、4、0、1、0)、
// override_synth_prop_863_930_div5.xml
// Synth:将建议的 RRIM 设置为7 HW_REG_OVERRIDE (0、0、0、0、0、


0、0、0、0、0、0、0、0

、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0
配置精细校准设置
HW_REG_OVERRIDE (0x4064、0x0040)、
//合成:配置精细校准设置
(uint32_t) 0xB1070503、
//合成:配置精细校准设置
(uint32_t) 0x05330523、
//合成:将锁定后的环路带宽设置为20kHz
(uint32_t)、0x80583
、设置为 uint/

合成:0x480kHz 配置 VCO LDO (在 ADI1中、将 VCOLDOCFG=0x9F 设置为使用电压输入基准)
ADI_REG_OVERRIDE (1、4、0x9F)、
//合成:配置合成 LDO (在 ADI1中、设置 SLDOCTL0.COMP_CAP=1)
ADI_HALFREG_OVERRIDE (1、7、0x4、0x4、0x4)、
//合成:使用

合成 LDO (0x32) 0、INTRF_INTPL (0x40、0x403D_INTRIPH)

增加同步编程超时(0x04B0 RAT 节拍= 300us)
(uint32_t) 0x04B00243、
// override_phy_rx_aaf_bw_0xd.xml
// Rx:将抗混叠滤波器带宽设置为0xD (在 ADI0中、将 IFAMPCTL3[7:4]=0xD)
ADI_HALFREG_TRIM (0、0x61、0xF、0x38D/Rx
override_phy_gfsk_rx.xml
)偏移:0x38t/ Rx
(7:0x38t/ Rx 3、偏移:/Rx)
在找到 SYNC 事件
HW_REG_OVERRIDE (0x6084、0x35F1)上冻结 RSSI、
// override_phy_gfsk_pa_ramp_agc_reflevel_0x1a.xml
// Tx:配置 PA 斜升设置(0x41)。 RX:将 AGC 基准电平设置为0x1A。
HW_REG_OVERRIDE (0x6088、0x411A)、
// Tx:配置 PA 斜升设置
HW_REG_OVERRIDE (0x608C、0x8213)、
// override_phy_rx_rssi_offset_5db.xml
// Rx:设置 RSSI 偏移以调整报告的 RSSI +5 dB (默认值:0)、针对外部偏置和差动配置(
uint32_t)进行修整0x00FB88A3、
#DDR_FORCE
(默认值:0)、针对外部偏置:tx5ddr_txFG/强制)/txf
将 PA 调整设置为最大值(在 ADI0中、设置 PACTL0=0xf8)
ADI_REG_OVERRIDE (0、12、0xF8)、
#endif
(uint32_t) 0xstartFFFF、
};


// CMD_PROP_RADIO_DIV_SETUP
RF_DIV_SETUP_t RF_TRF_0
= 0xstart0*


、0x0000_0 = 0xtrigger_0 = 0xtrigger.trigger = 0xtrigger0=0x0000.0*、0xtrigger.trigger0=0x0000.0=0x0000.0=0xtrigger0=0x0000.0=.0=.0=.0=.0=.0=.000=0xtrigger0=.0=.0=.000_#.000_#.000=0xtrigger0=.000=.000=.000=.





.condition.rule = 0x1、
.condition.nSkip = 0x0、
.modulate.modType = 0x1、
.modulation.deviation = 0x64、
.symbolRate.prescale = 0xF、
symbolRate.rate.rateWord = 0x8000、
.symbolRate.decimMode = 0x0、
.rxBw = 0x24、
.PreambBytes = 0x4、.PreambConf.PreambMode
= 0x0、
.formatConf.nSwBits = 0x20、
.formatConf.bBitVersal = 0x0、
.formatConf.bMsbFirst = 0x1、
.formatConf.fecMode = 0x0、
.formatConf.whitenMode = 0x0、
.config.frontEndMode = 0x0、
.config.biasMode = 0x1、
.config.analogCfgMode = 0x0、
.config.bNoFsPowerUp = 0x0、
.txPower = 0xA73F、
.pRegOverride = pOverrides、
.centerFreq = 0x0364、
.intFreq = 0x8000、
.loDivider = 0x05、
};

// CMD_FS
RFC_CMD_FS_t RF_cmdF =
{
.commandNo = 0x0803、
.status = 0x0000、
.pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
.triggerStartTime = 0x00000000、
.startTrigger.TrierType = 0x0、
.startTrigger.bEntrigg器= 0x0、.startTrigger = 0x0、.start0、.startTrigg.startTrigger.b.trigg器=
0x0
、.trigg.trigg.trigg器=
.condition.rule = 0x1、
.condition.nSkip = 0x0、
.frequency = 0x0364、
.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、//插入适用的指针:(UINT8_t*)&xxx
.StartTime = 0x00000000、
.startpsertriggerType = 0xstartTrigger =
0x0

、.startTrigger.trigger = 0x0、.trigger.trigger = 0xb0.trigg.trigg.0.trigger.trigg器= 0x0
.condition.rule = 0x1、
.condition.nSkip = 0x0、
.pktConf.bFsOff = 0x0、
.pktConf.bUseCrc = 0x1、
.pktConf.bVarLen = 0x1、
.pktLen = 0x1E、//设置应用程序有效载荷长度
.syncWord = 0x930B51DE、
.pPKT = 0、//插入适用的







指针:(uint8_t*)&xxx};// CMD_PROP_RX RFC_CMD_PROP_RX_t RF_cmdPropRx ={.NOT_0000 = 0x3802、//插入适用的状态= 0x3802、.NOP = 0x0000 (uint8_t*)&xxx
.StartTime = 0x00000000、
.startTrigger.triggerType = 0x0、
.startTrigger.bEnaCmd = 0x0、
.startTrigger.starter No = 0x0、.trigger.pastrigger
= 0x0、
.condition.rule = 0x1、
.condition.nSkip = 0x0、
.pktConf.bFsOff = 0x0、
.pktConf.bRepeatOk = 0x0、
.pktConf.bRepeatNok = 0x0、
.pktConf.bUseCrc = 0x1、
.pktConf.bVarLen = 0x1、
.pktConf.bChkAddress = 0x0、
.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、
.syncdWord = 0x930B51DE、
.maxPktLen = 0xFF、//确保数据条目足够大
.address0 = 0xAA、
.address1 = 0xBB、
.endtriggerType = 0xendtrigger

= 0x0、.endtrigger = 0xb0.ender0、.endtrigger = 0xb.ender0、.endtrigger = 0xb0.end.enderType = 0xb0.trigger = 0xb0.end.
.endTrigger.PastTrig = 0x0、
.EndTime = 0x00000000、
.pQueue = 0、//插入适用的指针:(dataQueue_t*)&xxx
.pOutput = 0、//插入适用的指针:(uint8_t*)&xxx
}; 

但是、切换到我在 Smart RF Studio 中生成的另一个文件会导致错误 TX 下溢(PROP_ERROR_TXUNF):

//
//由 SmartRF Studio 版本2.11.0 (内部版本号126)生成
//应用的模板与 CC13x0 SDK 2.20.xx.xx 兼容
//器件:CC1310修订版2.1 (修订版 B)
//
*********


//
//参数摘要
//地址:0
//地址0:0xAA
//地址1:0xBB
//频率:868.00000 MHz
//数据格式:串行模式禁用
//偏差:5.000 kHz
// pktLen:30
// 802.15.4g 模式:0
//选择发送 PSDU 八位位组的位顺序:1
//数据包长度: 可变
//最大数据包长度:255
//数据包长度:20
//数据包数据:255
// RX 滤波器带宽:155kHz
//符号速率:60.00061kBaud
//同步字长度:32位
// TX 功率:14dBm (需要在 ccfg.c 中定义 CCFG_FORCE_VDDR_HH = 1,请参阅 CC13xx/CC26xx 技术参考手册
/白皮书): CC1101/CC2500兼容

#include 
#include DeviceFamily_constructPath (driverlib/rf_mailbox.h)
#include DeviceFamily_constructPath (driverlib/rf_common_cmd.h)
#include DeviceFamily_constructPath (driverlib/rf_prop_cmd.h)
#include 
#include DeviceFamily_constructPath (rf_patches/rf_patch_cpe_sl_longrange.h)
#include DeviceFamily_constructPath (rf_patches/rf_patch_rfe_sl_longrange.h)
#include DeviceFamily_constructPath (rf_patches/rf_mc补丁_mce_sl_grange.h)#include "rf_rf_rf_rtmos"




= rf_lon_mode.h)#include "rf_mode.rf_rf_rf_rf_mode.

rfMode = RF_MODE_Proprietary"子模式1、
.cpePatchFxn =&rf_patch_cpe_sl_longrange、
.mcePatchFxn =&rf_patch_mce_sl_longrange、
.rfePatchFxn =&rf_patch_rfe_sl_longrange
、};


//覆盖 CMD_PROP_RADIO_DIV_SETUP
UINT32_t pOverrides[]=
{
// override_use_patch_simplelink_long_range.xml
// PHY:使用 MCE RAM 补丁、RFE RAM 补丁
MCE_RFE_OVERRIDE (1、0、0、1、0、0)、
// override_synth_prop_863_930_div5_lbw60k.xml
//合成:将推荐的 RTRIM 设置为7
HW_REG_OVERRIDE (0x4038、0x0037)、
//合成:将频率设置为4MHz
(uint32_t) 0x000684A3、
//合成:配置精细校准设置
HW_REG_OVERRIDE (0x4020、0x7F00)、
//合成:配置精细校准设置
HW_REG_OVERRIDE (0x4064、0x0040)、
//合成:配置精细校准设置
(uint32_t) 0xB1070503、
//合成:配置精细校准设置
(uint32_t) 0x05330523、
//合成:将锁定后的环路带宽设置为60kHz
(uint32_t) 0x40410583、
//合成:将锁定后的环路带宽设置为60kHz
(uint32_t) 0x32CC0603、
//合成:将锁定后的环路带宽设置为60kHz
(uint32_t) 0x00010623、
//合成:配置 VCO LDO (在 ADI1中、设置 VCOLDOCFG=0x9F 以使用电压输入基准)
ADI_REG_OVERRIDE (1、4、0x9F)、
//合成:配置同步 LDO (在 ADI1中、设置 SLDOCTL0.COMP_CAP=1)
ADI_HALFREG_OVERRIDE (1、7、0x4、0x4)、
//合成:使用24MHz XOSC 作为同步时钟、启用额外的 PLL 滤波
(uint32_t) 0x02010403、
//合成:配置额外的 PLL 滤波
(uint32_t) 0x00108463、
//合成:增加同步编程超时(0x04B0 RAT 节拍= 300us)
(uint32_t) 0x04B00243、
// override_synth_disable_bias_div5.xml
//合成:将分频器偏置设置为禁用
HW32_array_override (0x405C、1)、
//合成:将分频器偏置设置为禁用(特定于 loder=5)
(uint32_t) 0x18000200、
// override_phy_rx_aaf_bw_0xd.xml
// Rx:将抗混叠滤波器带宽设置为0xD (在 ADI0中、设置 IFAMPCTL3[7:4]=0xD)
ADI_HALFREG_OVERRIDE (0、61、0xF、0xD)、
// override_phy_gfsk_rx.xml
// Rx:将 LNA 偏置电流修整偏移设置为3
(uint32_t) 0x00038883、
// Rx:在发现同步事件时冻结 RSSI
HW_REG_OVERRIDE (0x6084、0x35F1)、
// override_phy_gfsk_pa_ramp_agc_reflevel_0x14.xml
// Tx:配置 PA 斜升设置(0x41)。 RX:将 AGC 基准电平设置为0x14。
HW_REG_OVERRIDE (0x6088、0x4114)、
// Tx:配置 PA 斜升设置
HW_REG_OVERRIDE (0x608C、0x8213)、
// override_phy_long_range_dsss2.xml
// PHY:配置 DSSS SF=2
HW_REG_OVERRIDE (0x505C、0x0100)、
// override_phy_rx_rssi_offset_5db.xml
// Rx:设置 RSSI 偏移以将报告的 RSSI 调整+5dB (默认值:0)、针对外部偏置和差分配置进行了修整
(uint32_t) 0x00FB88A3、
// TX 功率覆盖
// Tx:将 PA 调整设置为最大值(在 ADI0中、设置 PACTL0=0xf8)
ADI_REG_OVERRIDE (0、12、0xF8)、
(uint32_t) 0xFFFFFFFF
};


// CMD_PROP_RADIO_DIV_SETUP
//针对所有频带的专有模式无线电设置命令
RFC_CMD_PROP_RADIO_DIV_SETUP_t RF_PropcmdletRadioDivSetup =
{
.commandNo = 0x3807、
.status = 0x0000、
.pNextOp = 0、//插入适用的指针:(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 = 0x1、
.modulation.deviation = 0x14、
symbolRate.prescale = 0xF、
symbolRate.rateWord = 0x999A、
.symbolRate.decimMode = 0x0、
.rxBw = 0x26、
.PreambBytes = 0x2、
.Conf.前置 放大器模式= 0x0、
.formatConf.nSwBits = 0x20、
.formatConf.bBitVersal = 0x0、
.formatConf.bMsbFirst = 0x0、
formatConf.fecMode = 0x8、
formatConf.whitenMode = 0x1、
.config.frontEndMode = 0x0、
config.biasMode = 0x1、
config.analogCfgMode = 0x0、
config.bNoFsPowerUp = 0x0、
TxPower = 0xA73F、
.pRegOverride = pOverrides、
.centerFreq = 0x0364、
.intFreq = 0x8000、
.loDivider = 0x05
};


// CMD_FS
//频率合成器编程命令
RFC_CMD_FS_t RF_cmdF =
{
.commandNo = 0x0803、
.status = 0x0000、
.pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
.StartTime = 0x00000000、
.startTrigger.triggerType = 0x0、
.startTrigger.bEnaCmd = 0x0、
.startTrigger.triggerNo = 0x0、
.startTrigger.PastTrig = 0x0、
.condition.rule = 0x1、
.condition.nSkip = 0x0、
.frequency = 0x0364、
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、//插入适用的指针:(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、
syncWord = 0x930B51DE
.pPKT = 0 //插入适用的指针:(uint8_t*)&xxx
};

// CMD_PROP_RX
//专有模式接收命令
RFC_CMD_PROP_RX_t RF_cmdPropRx =
{
.commandNo = 0x3802、
.status = 0x0000、
.pNextOp = 0、//插入适用的指针:(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 = 0x0、
.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 = 0x930B51DE
.maxPktLen = 0xFF、
.address0 = 0xAA、
.address1 = 0xBB、
endTrigger.triggerType = 0x1、
.endTrigger.bEnaCmd = 0x0、
.endTrigger.triggerNo = 0x0、
.endTrigger.PastTrig = 0x0、
.EndTime = 0x00000000、
.pQueue = 0、//插入适用的指针:(dataQueue_t*)&xxx
.pOutput = 0 //插入适用的指针:(UINT8_t*)&xxx
};

此外、我可以看到、通过使用 SmartRF Studio 程序、两者都可以成功地相互发送数据包。 当我的其中一个设备作为接收器时、我没有收到任何内容、当我将其中一个设备用作发送器时、我会在另一侧收到长度为 FF 的数据包和垃圾数据包(在更改之前、多个字节的数据包是相同的)。

我还注意到、在将修补指令更改为的第二组设置中  

MCE_RFE_OVERRIDE (0、1、0、1、0、0)、而不是 
MCE_RFE_OVERRIDE (1、0、0、1、0、0)、 

删除了 TX_Underflow 错误、但仍然无法修复发送或接收的数据包。

我基于这些示例的示例是 rfWakeOnRadioRx 和 rfWakeOnRadioTx

我使用的是 NoRTOS 版本

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    这两个文件适用于不同的对讲机配置、我看不到两个设备如何与不同的对讲机配置进行通信。

    有关远距离模式下的 WOR、请参阅此主题。

    https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz/f/156/t/642024

    对于常规 WOR、请参阅:

    http://dev.ti.com/tirex/content/simplelink_cc13x0_sdk_1_30_00_06/docs/proprietary-rf/html/cc13x0/examplesusersguide/rfWakeOnRadioTx/README.html#

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不想让这些设置同时工作。

    我有2个器件、一个是使用第一个设置加载、另一个是使用第一个设置加载、它们工作正常。

    然后、我加载这两个设置、但它们不加载。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您不应更改 MCE 设置。 您发布的第一个设置适用于通用 GFSK 链接、第二个设置适用于远距离模式、该模式使用调制解调器内存中的专用补丁。

    此外、从 studio 导出设置后、请使用 SDK 中的 rfPacketTx 和 rfPacketRx 示例。  

    在将设置移植到 SDK 示例之前、请确保您的射频链路在 Studio 环境中正常工作。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否能够解决此问题? 我现在将关闭此主题、如果问题仍然存在、请重新打开该主题。

    谢谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!


    不、我仍然无法解决此问题。

    我将继续处理该问题、如果我发现问题、我将使用解决方案更新此主题。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我现在将关闭此主题、但请打开同一主题、让我们随时了解您的进度。

    谢谢、