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.

[参考译文] CC1352P7:CC1352没有足够的 TX 功率-覆盖无法正常工作? (单端、内部偏置)

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1364546/cc1352p7-cc1352-not-enough-tx-power---override-not-working-single-ended-internal-bias

器件型号:CC1352P7

你(们)好、

就定制电路板申请帮助、而我正尝试使其达到我们的规格。 通常、此系统需要在4-GFSK 调制下在430 -480MHz 范围内工作。

我们为 RX 使用 CC1352P7、并使用外部射频 LNA、为 TX 使用外部射频放大器、所有这些都具有内部偏置。

RX 设计为从 RFN 引脚输入、而 TX 设计为从 RFP 输出(全部在 Sub_1GHz 引脚和单端)。  

根据 SWRA640 (修订版 H)第2.2节(配置前端模式)、我们已将 Config.frontEndMode 设置为0x02以在 RFN 上选择单端模式 RX。 此外、我们还按照建议通过设置 x=1来设置覆盖。 请注意、数据表中提到了 ADI_HALFREG_OVERRIDE S (0、16、0x7、x)、其中必须删除 S 以满足编译器的要求、因为没有定义此类宏。  

我曾尝试在我们自己的应用软件(基于 TI-RTOS)和 Smart-RF Studio 7中使用这些设置、但效果不令人满意。 使用频谱分析仪直接在 RFP 输出端进行测量时、我预计会收到大约0dBm - 3dBm 的信号、但我测得的信号减少了25-30dB。 我怀疑测量的是 RXn 引脚和布线上传输信号产生的寄生耦合。  

但是、当我将 .config.frontEndMode 设置为0x1 (RFP 上的单端)时、输出功率通常为0dBm、但很自然- 由于现在在 RFP 引脚上配置了 RX、因此我的 RX 灵敏度会以~30dB 的损耗。 这让我认为、在我们的配置中、将 TX 分配给 RFP 引脚的覆盖设置无法正常工作。  

我已包含 SmartRF Studio 7生成的 smartrf_settings.c。 请告诉我您是否/需要什么其他信息!

我的问题:

  1. 通常:如何在保持 RX 灵敏度的同时提高 TX 性能? -最好在软件中;-)  
  2. 我是否遗漏了任何其他设置、是否以错误的方式配置了某些设置?  
  3. 覆盖是否按照我以前的方式正确应用? 在覆盖块的哪个位置插入此行是否重要?

提前感谢!  

//*********************************************************************************
// Generated by SmartRF Studio version 2.30.0 (build#397)
// The applied template is compatible with cc13x2_26x2 SDK version 2.30.xx.xx or newer.
// Device: CC1352P7 Rev. B (1.1). Only supported by CC26x2 SDK version 5.10.xx.xx or newer
//
//*********************************************************************************


//*********************************************************************************
// Parameter summary
// RX Address0: 0xAA 
// RX Address1: 0xBB 
// RX Address Mode: No address check 
// Frequency: 459.30000 MHz
// Data Format: Serial mode disable 
// Deviation: 0.797 kHz
// Packet Length Config: Variable 
// Max Packet Length: 255 
// Packet Length: 20 
// Packet Data: 255 
// Preamble Count: 4 Bytes 
// Preamble Mode: Send 0 as the first preamble bit 
// RX Filter BW: 9.7 kHz
// Symbol Rate: 4.80042 kBaud
// Sync Word: 0x930b51de 
// Sync Word Length: 32 Bits 
// TX Power: 3 dBm 
// Enable high output power PA: false 
// Whitening: No whitening 

#include "smartrf_settings_NGT.h"

#include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_prop.h)

// TI-RTOS RF Mode Object
RF_Mode RF_prop =
{
    .rfMode = RF_MODE_AUTO,
    .cpePatchFxn = &rf_patch_cpe_prop,
    .mcePatchFxn = 0,
    .rfePatchFxn = 0
};


// Overrides for CMD_PROP_RADIO_DIV_SETUP_PA
uint32_t pOverrides[] =
{
    // override_tc706.xml
    ADI_2HALFREG_OVERRIDE(0,16,0x8,0x8,17,0x1,0x1),
    ADI_HALFREG_OVERRIDE(0,16,0x7,1),
    HW_REG_OVERRIDE(0x609C,0x001A),
    (uint32_t)0x000188A3,
    ADI_HALFREG_OVERRIDE(0,61,0xF,0xD),
    // override_prop_common_sub1g.xml
    // TX: Set FSCA divider bias to 1
    HW32_ARRAY_OVERRIDE(0x405C,0x0001),
    // TX: Set FSCA divider bias to 1
    (uint32_t)0x08141131,
    // override_prop_common.xml
    // DC/DC regulator: In Tx with 14 dBm PA setting, use DCDCCTL5[3:0]=0xF (DITHER_EN=1 and IPEAK=7). In Rx, use default settings.
    (uint32_t)0x00F788D3,
    (uint32_t)0xFFFFFFFF
};


// CMD_PROP_RADIO_DIV_SETUP_PA
// Proprietary Mode Radio Setup Command for All Frequency Bands
rfc_CMD_PROP_RADIO_DIV_SETUP_PA_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 = 0x1,
    .modulation.deviation = 0x33,
    .modulation.deviationStepSz = 0x2,
    .symbolRate.preScale = 0xF,
    .symbolRate.rateWord = 0xC4A,
    .symbolRate.decimMode = 0x0,
    .rxBw = 0x45,
    .preamConf.nPreamBytes = 0x4,
    .preamConf.preamMode = 0x0,
    .formatConf.nSwBits = 0x20,
    .formatConf.bBitReversal = 0x0,
    .formatConf.bMsbFirst = 0x1,
    .formatConf.fecMode = 0x9,
    .formatConf.whitenMode = 0x0,
    .config.frontEndMode = 0x2,
    .config.biasMode = 0x0,
    .config.analogCfgMode = 0x0,
    .config.bNoFsPowerUp = 0x0,
    .config.bSynthNarrowBand = 0x0,
    .txPower = 0x40D6,
    .pRegOverride = pOverrides,
    .centerFreq = 0x01CB,
    .intFreq = 0x8000,
    .loDivider = 0x0A,
    .pRegOverrideTxStd = 0,
    .pRegOverrideTx20 = 0
};


// CMD_FS
// Frequency Synthesizer Programming Command
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 = 0x01CB,
    .fractFreq = 0x4CCD,
    .synthConf.bTxMode = 0x0,
    .synthConf.refFreq = 0x0,
    .__dummy0 = 0x00,
    .__dummy1 = 0x00,
    .__dummy2 = 0x00,
    .__dummy3 = 0x0000
};


// CMD_PROP_TX
// Proprietary Mode Transmit Command
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,
    .syncWord = 0x930B51DE,
    .pPkt = 0 // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
};


// CMD_PROP_RX
// Proprietary Mode Receive Command
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 = 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, // INSERT APPLICABLE POINTER: (dataQueue_t*)&xxx
    .pOutput = 0 // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
};

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

    您好!

    感谢您指出 SWRA640中的拼写错误-我们将在本文档的下一修订版中修复该拼写错误。 为此、建议使用 SmartRF Studio 开发射频设置、然后再移至您自己的固件。

    下面是一些初始问题:

    • 您为此使用的 BOM 是什么? 本文档中尚未包含433 MHz 的 BOM。
    • 当您指出"由于现在也在 RFP 引脚上配置了 RX、因此我的 RX 灵敏度会下降~30dB"-如果您打算使用外部 PA 和 LNA、那么考虑到您将使用 RF_N 进行此用途、RF_P 上的 RX 灵敏度会有什么问题? 我可能误解了你的问题。

    此致、

    Zack

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

    尊敬的 Zack:  

    感谢您的快速响应。  

    您是对的、RF_p 的 RX 灵敏度根本不是问题、我输入该数字只是为了证明我的怀疑、我在前端模式= 0x2的情况下测量的 RF_p 处的信号与 RF_n 寄生耦合  

    简而言之:  

    1.  EndfrontMode = 0x2:Rx -> rf_n 工作正常、rf_p 上的 TX 几乎不会产生任何输出(尽管其设置因其设置而异)、无论是否以及如何配置覆盖(尝试设置0、1和2)

    2. EndfrontMode = 0x1:Rx -> RF_n 几乎不起作用、显示 RSSI 比0x2设置低30dB、RF_p 上的 TX 运行良好(输出功率为0dBm、根据其设置而变化)

    我们的 RF LNA 为 MAX2634、通过交流耦合电容器耦合到 CC1352 RF_n。

    或 RF PA 是 GRF5504、也通过交流耦合电容器耦合到 CC1352 RF_p。  

    据我所知、BOM 基于 LAUNCHXL-CC1352P-4评估套件、但属于定制设计、我们会对其进行检查并报告情况(如果不同)。  

    也就是说、我将直接在 rf_p 滤波器上测量、因此 RF PA 不在这里的等式中。  

    对我来说、这种覆盖感觉在我们的情况下根本没有任何作用、因为当 frontEndMode 设置为0x1时、RF_p 上的输出工作非常好。  

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

    我想在内部对此进行仔细检查、并向您提供明确的答案。 我希望我会在下周(星期三)中作答、但如果可以的话、我会尽快答复。

    我们正在努力发布适用于单端配置(0201元件尺寸)的推荐433 MHz BOM、但目前我无法提供发布时间时间表。 发布后、它将添加到 SWRA640的下一修订版中。

    为了清楚起见、我将在下面添加其他信息(看起来您已经完成了此操作):

    在 SmartRF Studio 中、您可以为器件配置单端配置、而无需手动添加这些覆盖项。

    从配置开始RF_P、可通过以下步骤完成此操作:

    • 从主菜单中选择 CC1352P7和专有模式
    • Settings(在顶部栏中)-> Custom Target Configuration
    • Target Selection创建新配置时(选择Create Copy As...复制 I/O 配置和 PA 表可能更容易)
    • 按照自己喜欢的方式(CC1352P7_IS_RFP例如)对目标命名、并确保选择 CC1352P7
    • 选择所需的前端配置(Internal Bias, Single-ended RF on RFP)
    • 保存配置
    • 检查是否从下拉列表中选择了新的目标配置(RF Design Based On:)

    这应该会正确配置设备RF_P、尽管您可能还需要检查 PA 表中是否包含所需的设置。 如果没有、那么您需要从 Custom Target Configuration窗口添加它们。

    我不知道您的布局(I/O 配置等) 因此、最好您 自己根据需要进行配置。

    此致、

    Zack

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

    谢谢、这正是我以前所遵循并为核查所重复的程序。 当我 为 RFP 上的内部偏置、单端射频选择前端配置时、实际上会得到期望的0dBm 输出功率。

    问题是、如果我错了、请纠正我、在 rf_p 上将前端配置设置为 SE-RF (没有任何覆盖项)也会将其配置为在 rf_p 上接收 RX 信号... 我们的设计使用 RX/TX 分集设置、期望 rf_n 上具有 RX、并且应该仅将 rf_p 用于 TX。  

    因此、我需要通过 覆盖(0x1)将前端配置设置为 RF_n (0x2)上的 SE-RF、从而将 TX 路由至 RF_p。 遗憾的是、相对于将前端模式设置为 rf_p (前端模式0x1)、这会导致输出功率下降~30dB。   

    我已将原理图中的相关部分包含在 CC1352以及 RF PA 和 LNA 中。 我正在测量原理图下部用绿色箭头指示的位置。  

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

    你(们)好、

    希望您能够在内部讨论这一点!  

    我也一直在通过一些其他的事情,试图更好地掌握正在发生的事情。 我尝试了从 SmartRF Studio 中的各种不同典型设置开始、包括它们的"停止"值以及根据我们的需求进行更改。 所有这些都没有得到令人满意的结果。 主要尝试这些方法、因为我注意到有些方法使用不同的覆盖配置。  

    我还尝试使用一些无文档记载/保留的 FrontEndMode 和 Override 设置值、但都不起作用。  

    最后、我用示波器在 RFP 和 RFN 引脚上进行测量、请查看附加的结果。 通道1 (黄色)在引脚 RFP 上测量、通道2 (绿色)在引脚 RFN 上测量。 所有结果均使用 SmartRF Studio 标准设置(433MHz、50kbps、25kHz DEV、2-GFSK、78kHz RX BW)获得。 我已更改 frontEndMode 设置、并按照 SWRA640修订版中的说明添加/更改覆盖范围 h、设置0、1和2。  

    ----------------------------------------------------------------------------------------------------------------------------------

    模式0:正如预期的那样:在 RFP 和 RFN 上都可以看到差分输出。  

    ----------------------------------------------------------------------------------------------------------------------------------

    模式1:正如预期的那样:RFP 上的输出、RFN 显示有一些串扰

    ----------------------------------------------------------------------------------------------------------------------------------

    模式1、在不同的时间标度上覆盖1。 符合预期、与模式1相同、无需覆盖。 RFP 上的输出信号、RFN 上的串扰。  

    ----------------------------------------------------------------------------------------------------------------------------------

    模式1、OVERRIDE = 2。 也不符合预期:偏置似乎在 RFN 上启用、但没有可见的信号/调制。  

    ----------------------------------------------------------------------------------------------------------------------------------

    模式 2、无覆盖:符合预期:RFN 上的输出、RFP 显示一些串扰

    ----------------------------------------------------------------------------------------------------------------------------------

    模式 2、OVERRIDE = 0:符合预期:RFN 上的输出、RFP 显示一些串扰

    ----------------------------------------------------------------------------------------------------------------------------------

    模式 2、OVERRIDE = 1:具有不同 Vscale 的两个图。 数据包结构可见、但信号功率太小。

    ----------------------------------------------------------------------------------------------------------------------------------

    模式2、OVERRIDE = 2:与模式 2相同、无 OVERRIDE、如预期:RFn 输出、RFP 显示一些串扰。

    ----------------------------------------------------------------------------------------------------------------------------------

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

    更新:今天、我还通过 SmartRF Studio 对 LP-CC1352P7-4开发套件的几种配置排列进行了测试。 通过该设置、我可以观察到与我们的定制电路板相同的行为(我们有多个设计都存在此问题)。

    简要回顾一下我使用  LP-CC1352P7-4开发套件测试的内容:  

    -使用适当的 USB 电缆将开发套件连接到我的电脑

    -打开设备 SmartRF Studio ,在那里它被正确地列为连接的设备。  

    -选择了 LP-CC1352P7-4目标配置,并使用"创建新副本"将其保存为新的定制设计。

    -试验不同的典型设置(例如43.1 -27MHz 50kbps 和359 -430MHz 4.8kbps),也试验了我们的定制频率

    -实验不同的 FrontEndMode 设置和覆盖设置(无, 0, 1, 2 )为上述设置。  

    -虽然使用覆盖的两个设置(前端模式1、OVR 2和 前端模式2、OVR 1)在输出上不产生任何显著信号,但所有"重复"设置似乎都正常工作。  


    我在过去一周尝试过的其他因素、都没有任何令人满意的结果:

    -不同的 SmartRF Studio 版本(2.30, 2.29, 2.28, 2.27)

      CCS 版本12.7.1.00001上的 SimpleLink CC13xx CC26xx SDK 的不同版本(7.10.00.98、7.10.01.24、7.10.02.23、7.40.00.77)  

    -已将 TI ARM Clang 编译器工具更新为 3.2.2

    -不同的操作系统(基于 Windows 11 Pro, Ubuntu Linux 22.04)

    -不同的区域设置(荷兰语/荷兰语、美国/英语)-我以前遇到过 与 小数点和逗号有关的软件工具的模糊行为,虽然 我 在这里找不到任何关系。

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

    尊敬的 Rene:

    我只是回复注意事项、您的问题尚未被遗忘、我已联系我们的设计团队、仍在等待回复-我将在本周结束前要求回复。

    此致、

    Zack

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

    我们这边快速更新:我们注意到 TI 已经发布了新版本的 SDK 7.41.00.17、我们也对此进行了测试、但是在这个问题上没有任何改进。  

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

    尊敬的 Zack:

    因为这已经有几个星期了,我没有从你和其他任何人那里听到;我想知道,这方面是否有任何进展内部. 我们仍在焦急地等待解决方案、因为我们目前正在停止生产、并正在寻找替代解决方案。 如果您能够回答并分享是否有任何进展、那将是非常好的选择。 谢谢!  

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

    尊敬的 Rene:

    尚未忘记该问题、请尝试添加其他覆盖项:

    (uint32_t) 0x30108703

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

    太棒了、谢谢。 我还有一些更严格的测试要做、但第一个结果看起来非常有希望。 我谨慎地乐观地认为、这可能解决了我一直在努力解决的问题。  

     一旦我能够 确认我们对该解决方案满意、我就会回来。