The PCB board designed by myself cannot connect to the Zigbee gateway, but the same embedded code development board can connect

Other Parts Discussed in Thread: CC2652P, SYSCONFIG, CC1352P

Please help me find out if it is an embedded code configuration problem.

  • 1. 使用开发板相同的嵌入式代码,是可以连接网关的。

    2. 自己开发的板子 使用外置天线也没办法连接,天线是好的。

    3. 芯片用的是cc2652P 和网关只有20厘米近,也连不上。

  • This is most likely caused by an incorrect capacitor array delta.

    What is your configuration for that in SysConfig, compared to the one on the default board?

  • Please list your SimpleLink F2 SDK and SysConfig versions.  You can also provide your SysConfig file for easier review.  Nevertheless, I don't see anything concerning with the settings you've provided.  Have you submitted the custom design to SIMPLELINK-2-4GHZ-DESIGN-REVIEWS for review?  Is your crystal and RF path antenna design exactly the same as a TI LaunchPad EVM, or if not then what differences are there?  Have you debugged the device state and call stack, debugged RF output, and used a sniffer log to confirm over-the air packets?  Are you factory resetting or erasing all flash on the device before programming and running the Zigbee firmware?

  • /**
     * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
     * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
     * @cliArgs --board "/ti/boards/CC1352P_2_LAUNCHXL" --device "CC1352P1F3RGZ" --part "Default" --package "RGZ" --rtos "tirtos7" --product "simplelink_cc13xx_cc26xx_sdk@8.31.00.11"
     * @v2CliArgs --board "/ti/boards/CC1352P_2_LAUNCHXL" --device "CC1352P" --package "VQFN (RGZ)" --rtos "tirtos7" --product "simplelink_cc13xx_cc26xx_sdk@8.31.00.11"
     * @versions {"tool":"1.25.0+4268"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const CCFG         = scripting.addModule("/ti/devices/CCFG");
    const rfdesign     = scripting.addModule("/ti/devices/radioconfig/rfdesign");
    const AESCBC       = scripting.addModule("/ti/drivers/AESCBC");
    const AESCBC1      = AESCBC.addInstance();
    const AESCCM       = scripting.addModule("/ti/drivers/AESCCM");
    const AESCCM1      = AESCCM.addInstance();
    const AESECB       = scripting.addModule("/ti/drivers/AESECB");
    const AESECB1      = AESECB.addInstance();
    const DMA          = scripting.addModule("/ti/drivers/DMA");
    const ECDH         = scripting.addModule("/ti/drivers/ECDH");
    const ECDH1        = ECDH.addInstance();
    const ECDSA        = scripting.addModule("/ti/drivers/ECDSA");
    const ECDSA1       = ECDSA.addInstance();
    const NVS          = scripting.addModule("/ti/drivers/NVS");
    const NVS1         = NVS.addInstance();
    const NVS2         = NVS.addInstance();
    const Power        = scripting.addModule("/ti/drivers/Power");
    const RF           = scripting.addModule("/ti/drivers/RF");
    const SHA2         = scripting.addModule("/ti/drivers/SHA2");
    const SHA21        = SHA2.addInstance();
    const TRNG         = scripting.addModule("/ti/drivers/TRNG");
    const TRNG1        = TRNG.addInstance();
    const UART2        = scripting.addModule("/ti/drivers/UART2", {}, false);
    const UART21       = UART2.addInstance();
    const Button       = scripting.addModule("/ti/drivers/apps/Button");
    const Button1      = Button.addInstance();
    const Button2      = Button.addInstance();
    const LED          = scripting.addModule("/ti/drivers/apps/LED");
    const LED1         = LED.addInstance();
    const LED2         = LED.addInstance();
    const Settings     = scripting.addModule("/ti/posix/tirtos/Settings");
    const BIOS         = scripting.addModule("/ti/sysbios/BIOS");
    const Boot         = scripting.addModule("/ti/sysbios/family/arm/cc26xx/Boot");
    const GateMutexPri = scripting.addModule("/ti/sysbios/gates/GateMutexPri");
    const HeapCallback = scripting.addModule("/ti/sysbios/heaps/HeapCallback");
    const Clock        = scripting.addModule("/ti/sysbios/knl/Clock");
    const Idle         = scripting.addModule("/ti/sysbios/knl/Idle");
    const Idle2        = Idle.addInstance();
    const Semaphore    = scripting.addModule("/ti/sysbios/knl/Semaphore");
    const Swi          = scripting.addModule("/ti/sysbios/knl/Swi");
    const Task         = scripting.addModule("/ti/sysbios/knl/Task");
    const Error        = scripting.addModule("/ti/sysbios/runtime/Error");
    const Memory       = scripting.addModule("/ti/sysbios/runtime/Memory");
    const SysCallback  = scripting.addModule("/ti/sysbios/runtime/SysCallback");
    const System       = scripting.addModule("/ti/sysbios/runtime/System");
    const zstack       = scripting.addModule("/ti/zstack/zstack");
    
    /**
     * Write custom configuration values to the imported modules.
     */
    CCFG.xoscCapArray             = true;
    CCFG.xoscCapArrayDelta        = 0xC1;
    CCFG.enableBootloader         = true;
    CCFG.enableBootloaderBackdoor = true;
    CCFG.dioBootloaderBackdoor    = 15;
    CCFG.levelBootloaderBackdoor  = "Active low";
    CCFG.forceVddr                = true;
    CCFG.ccfgTemplate.$name       = "ti_devices_CCFG_CCFGCC26XXTemplate0";
    
    rfdesign.rfDesign = "LAUNCHXL-CC1352P-2";
    rfdesign.fbSub1g  = "none";
    
    AESCBC1.$name = "CONFIG_AESCBC_0";
    
    AESCCM1.$name             = "CONFIG_AESCCM_0";
    AESCCM1.interruptPriority = "2";
    
    AESECB1.$name             = "CONFIG_AESECB_0";
    AESECB1.interruptPriority = "1";
    
    ECDH1.$name = "CONFIG_ECDH_0";
    
    ECDSA1.$name = "CONFIG_ECDSA_0";
    
    NVS1.$name                    = "CONFIG_NVSINTERNAL";
    NVS1.internalFlash.$name      = "ti_drivers_nvs_NVSCC26XX0";
    NVS1.internalFlash.regionSize = 0x4000;
    NVS1.internalFlash.regionBase = 0x52000;
    
    NVS2.$name                          = "CONFIG_NVSEXTERNAL";
    NVS2.nvsType                        = "External";
    NVS2.$hardware                      = system.deviceData.board.components.MX25R8035F;
    NVS2.externalFlash.$name            = "ti_drivers_nvs_NVSSPI25X0";
    NVS2.externalFlash.regionSize       = 0x256000;
    NVS2.externalFlash.verifyBufferSize = 64;
    
    scripting.suppress("The board \'CC1352P-2 LaunchPad\' requires the \'RF Antenna Switch\' to be selected\\.", RF, "$hardware");
    
    SHA21.$name = "CONFIG_SHA2_0";
    
    TRNG1.$name = "CONFIG_TRNG_0";
    
    UART21.$name              = "CONFIG_DISPLAY_UART";
    UART21.rxRingBufferSize   = 128;
    UART21.txRingBufferSize   = 128;
    UART21.interruptPriority  = "5";
    UART21.uart.txPin.$assign = "boosterpack.36";
    UART21.uart.rxPin.$assign = "boosterpack.19";
    
    Button1.$name         = "CONFIG_BTN_LEFT";
    Button1.$hardware     = system.deviceData.board.components["BTN-1"];
    Button1.gpioPin.$name = "CONFIG_GPIO_BTN1";
    Button1.gpioPin.pull  = "Pull Up";
    
    Button2.$name         = "CONFIG_BTN_RIGHT";
    Button2.$hardware     = system.deviceData.board.components["BTN-2"];
    Button2.gpioPin.$name = "CONFIG_GPIO_BTN2";
    Button2.gpioPin.pull  = "Pull Up";
    
    LED1.$name         = "CONFIG_LED_RED";
    LED1.$hardware     = system.deviceData.board.components.LED_RED;
    LED1.gpioPin.$name = "CONFIG_GPIO_RLED";
    
    LED2.$name         = "CONFIG_LED_GREEN";
    LED2.$hardware     = system.deviceData.board.components.LED_GREEN;
    LED2.gpioPin.$name = "CONFIG_GPIO_GLED";
    
    const NVSSPI25XDevice                        = scripting.addModule("/ti/drivers/nvs/NVSSPI25XDevice", {}, false);
    const NVSSPI25XDevice1                       = NVSSPI25XDevice.addInstance({}, false);
    NVSSPI25XDevice1.$name                       = "CONFIG_NVS_SPI_0";
    NVS2.externalFlash.spiFlashDevice            = NVSSPI25XDevice1;
    NVSSPI25XDevice1.chipSelectPinInstance.$name = "CONFIG_GPIO_0";
    
    const SPI                          = scripting.addModule("/ti/drivers/SPI", {}, false);
    const SPI1                         = SPI.addInstance({}, false);
    SPI1.$name                         = "CONFIG_SPI_0";
    NVSSPI25XDevice1.sharedSpiInstance = SPI1;
    SPI1.sclkPinInstance.$name         = "CONFIG_PIN_SPI_SCLK";
    SPI1.pociPinInstance.$name         = "CONFIG_PIN_SPI_MISO";
    SPI1.picoPinInstance.$name         = "CONFIG_PIN_SPI_MOSI";
    
    BIOS.assertsEnabled = false;
    BIOS.rtsGateType    = "BIOS_GateMutexPri";
    BIOS.heapSize       = 0x00000000;
    BIOS.heapType       = "HeapCallback";
    
    const Hwi   = scripting.addModule("/ti/sysbios/family/arm/m3/Hwi", {}, false);
    Hwi.nvicCCR = [];
    
    HeapCallback.initFxn           = "osalHeapInitFxn";
    HeapCallback.allocInstFxn      = "osalHeapAllocFxn";
    HeapCallback.freeInstFxn       = "osalHeapFreeFxn";
    HeapCallback.getStatsInstFxn   = "osalHeapGetStatsFxn";
    HeapCallback.isBlockingInstFxn = "osalHeapIsBlockingFxn";
    
    Clock.tickPeriod  = 10;
    Clock.swiPriority = 4;
    
    const Timer = scripting.addModule("/ti/sysbios/family/arm/cc26xx/Timer", {}, false);
    
    Idle2.$name   = "powerIdle";
    Idle2.idleFxn = "Power_idleFunc";
    
    Semaphore.supportsPriority = false;
    
    Swi.numPriorities = 6;
    
    Task.checkStackFlag    = false;
    Task.defaultStackSize  = 512;
    Task.idleTaskStackSize = 512;
    Task.numPriorities     = 6;
    
    Error.policy = "Error_SPIN";
    
    System.abortFxn          = "System_abortSpin";
    System.exitFxn           = "System_exitSpin";
    System.maxAtexitHandlers = 1;
    System.supportModule     = "SysCallback";
    
    zstack.deviceType                                 = "zed";
    zstack.deviceTypeReadOnly                         = true;
    zstack.touchlink.$name                            = "ti_zstack_touchlink_zstack_touchlink0";
    zstack.pm.$name                                   = "ti_zstack_pm_zstack_pm0";
    zstack.rf.$name                                   = "ti_zstack_rf_zstack_rf0";
    zstack.rf.txPower                                 = "14";
    zstack.rf.primaryChannels                         = [11,15];
    zstack.rf.secondaryChannels                       = [11,15];
    zstack.rf.radioConfig.$name                       = "ti_devices_radioconfig_settings_ieee_15_40";
    zstack.rf.radioConfig.codeExportConfig.$name      = "ti_devices_radioconfig_code_export_param0";
    zstack.rf.coexSettings.$name                      = "ti_zstack_rf_zstack_coex_mod0";
    zstack.network.$name                              = "ti_zstack_network_zstack_network0";
    zstack.network.panID                              = "0x1234";
    zstack.advanced.$name                             = "ti_zstack_advanced_zstack_advanced0";
    zstack.advanced.routing.$name                     = "ti_zstack_advanced_zstack_routing0";
    zstack.advanced.packetSending.$name               = "ti_zstack_advanced_zstack_packet_sending0";
    zstack.advanced.packetSending.apscMaxFrameRetries = 4;
    zstack.advanced.packetSending.nwkDataRetries      = 3;
    zstack.advanced.packetSending.macFrameRetries     = 5;
    zstack.advanced.tableSize.$name                   = "ti_zstack_advanced_zstack_table_size0";
    
    /**
     * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
     * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
     * re-solve from scratch.
     */
    UART21.uart.$suggestSolution                 = "UART1";
    Button1.button.$suggestSolution              = "boosterpack.13";
    Button2.button.$suggestSolution              = "boosterpack.8";
    LED1.ledPin.$suggestSolution                 = "boosterpack.39";
    LED2.ledPin.$suggestSolution                 = "boosterpack.40";
    NVSSPI25XDevice1.chipSelect.$suggestSolution = "boosterpack.38";
    SPI1.spi.$suggestSolution                    = "SSI0";
    SPI1.spi.sclkPin.$suggestSolution            = "boosterpack.7";
    SPI1.spi.pociPin.$suggestSolution            = "boosterpack.14";
    SPI1.spi.picoPin.$suggestSolution            = "boosterpack.15";
    SPI1.spi.dmaRxChannel.$suggestSolution       = "DMA_CH3";
    SPI1.spi.dmaTxChannel.$suggestSolution       = "DMA_CH4";
    Timer.rtc.$suggestSolution                   = "RTC0";
    

    1.upload my syscfg

    2.Based on this SDK and the corresponding sample code:simplelink_cc13xx_cc26xx_sdk_8_31_00_11\examples\rtos\CC1352P_2_LAUNCHXL\zstack\zed_sw

    3. PCB schematic diagram