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.

[参考译文] CC2674P10:无法使用更改了射频 DIO 来编译示例固件

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1321491/cc2674p10-can-not-compile-example-firmware-with-changed-dios-for-rf

器件型号:CC2674P10
主题中讨论的其他器件:CC1354P10SysConfig

输入

  1. SDK 版本:7_10_02_23
  2. CCS 版本:12.2
  3. 已选择要重现的固件:  ZNP_LP_EM_CC1354P10_6_tirtos7_ticlang (该固件专为 CC2674P10构建、 RSK -重要)
    1. 默认引脚设置 RF:
      1. CONFIG_RF_24GHz - DIO_34
      2. CONFIG_RF_HIGH_PA - DIO_3
      3. CONFIG_RF_SUB1GHZ - DIO_35
    2. 默认引脚设置外设:
      1. CONFIG_GPIO_RLED - DIO_6
      2. CONFIG_GPIO_GLED - DIO_7
      3. CONFIG_DISPLAY_UART (TX) - DIO_13
      4. CONFIG_DISPLAY_UART (Rx) - DIO_12
      5. CONFIG_GPIO_BTN2 - DIO_14
      6. CONFIG_GPIO_BTN1 - DIO_15
    3. 默认引脚设置  SPI
      1. CONFIG_SPI_0 (POCI)- DIO_37
      2. CONFIG_SPI_0 (Pico)- DIO_36
      3. CONFIG_SPI_0 (SCLK)- DIO_39
      4. CONFIG_NVS_SPI_0 (片选)- DIO_38

目的

  1. 为基于 CC2674P10的硬件板编译固件 RGZ 即使用这些引脚:
    1. 所需的引脚设置 RF:
      1. CONFIG_RF_24GHz - DIO_28
      2. CONFIG_RF_HIGH_PA - DIO_29
      3. CONFIG_RF_SUB1GHZ - DIO_30
    2. 所需的 引脚设置外设:
      1. CONFIG_GPIO_RLED - DIO_6
      2. CONFIG_GPIO_GLED - DIO_7
      3. CONFIG_DISPLAY_UART (TX) - DIO_13
      4. CONFIG_DISPLAY_UART (Rx) - DIO_12
      5. CONFIG_GPIO_BTN2 - DIO_14
      6. CONFIG_GPIO_BTN1 - DIO_15
    3. 所需的 引脚设置  SPI
      1. CONFIG_SPI_0 (POCI)- DIO_8
      2. CONFIG_SPI_0 (Pico)- DIO_9
      3. CONFIG_SPI_0 (SCLK)- DIO_10
      4. CONFIG_NVS_SPI_0 (片选)- DIO_20

我需要在 CC2674P10 RGZ 版本的芯片上尝试来自 SDK 的标准固件。 因此、基本而言、我需要更改仅用于射频的引脚、因为我将不会在项目中使用 SPI。 在 RF 中、我不希望在低于1GHz 中被占用、所以只需要更新引脚... RF_24GHz 和... RF_HIGH_PA。

重现步骤

  1. 创建新工程(CCS -> Import -> CCS Projects ->(SDK 中的 examples\RTOS folder)-> ZNP_LP_EM_CC1354P10_6_tirtos7_ticlang
  2. 打开 Znp.syscfg
  3. 显示设备视图
  4. 切换器件并将芯片更改为 CC2674P10 RGZ switch-device.jpg 
  5. 出现一般错误、但您可以接受它们: generic-errors.jpg
  6. 将 RF 引脚更改为 DIO_28和 DIO_29
  7. 出现错误 RE RF、您不能忽略它: rf-errors.jpg
  8. 构建固件
  9. 编译期间的错误
    1. -日志在这里 logs.txt
    2. -错误摘要 errors-summary.jpg

问题

  1. 如何构建默认固件 ZNP_LP_EM_CC1354P10_6_tirtos7_ticlang
    用于芯片 CC2674P10 RGZ (7*748 GPIO)
    SDK 模板仅适用于 CC2674P10 RSK (8 × 8 64 GPIO)?

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

    Andrew、您好!

    感谢您提供详细的报告。  该问题的最佳指示来自 errors-summary.jpg、您可以在其中看到"已定义多个 DeviceFamily!" 这是由定义了"DeviceFamily_CC13X4"的 Project Properties -> CCS Build -> Arm compiler -> Predefined Symbols 引起的。  请将此值更改为"DeviceFamily_CC26X4"以删除此错误。  如果不从 SysConfig 中删除射频天线切换、则需要完成的最后一项更改是   在工程中定义 rfDriverCallbackAntennaSwitching (最初在 SysConfig 构建的 ti_drivers_config.c 中定义):

    #include "ti_drivers_config.h"
    #include <ti/drivers/GPIO.h>
    
    //...
    
    void rfDriverCallbackAntennaSwitching(RF_Handle client, RF_GlobalEvent events, void *arg)
    {
    
        if (events & RF_GlobalEventRadioSetup) {
            bool    sub1GHz   = false;
            uint8_t loDivider = 0;
    
            /* Switch off all paths. */
            GPIO_write(CONFIG_RF_24GHZ, 0);
            GPIO_write(CONFIG_RF_HIGH_PA, 0);
            GPIO_write(CONFIG_RF_SUB1GHZ, 0);
    
            /* Decode the current PA configuration. */
            RF_TxPowerTable_PAType paType = (RF_TxPowerTable_PAType)RF_getTxPower(client).paType;
    
            /* Decode the generic argument as a setup command. */
            RF_RadioSetup* setupCommand = (RF_RadioSetup*)arg;
    
            switch (setupCommand->common.commandNo) {
                case (CMD_RADIO_SETUP):
                case (CMD_BLE5_RADIO_SETUP):
                        loDivider = RF_LODIVIDER_MASK & setupCommand->common.loDivider;
    
                        /* Sub-1GHz front-end. */
                        if (loDivider != 0) {
                            sub1GHz = true;
                        }
                        break;
                case (CMD_PROP_RADIO_DIV_SETUP):
                        loDivider = RF_LODIVIDER_MASK & setupCommand->prop_div.loDivider;
    
                        /* Sub-1GHz front-end. */
                        if (loDivider != 0) {
                            sub1GHz = true;
                        }
                        break;
                default:break;
            }
    
            if (sub1GHz) {
                /* Sub-1 GHz */
                if (paType == RF_TxPowerTable_HighPA) {
                    /* PA enable --> HIGH PA
                     * LNA enable --> Sub-1 GHz
                     */
                    GPIO_setMux(CONFIG_RF_24GHZ, IOC_PORT_GPIO);
                    /* Note: RFC_GPO3 is a work-around because the RFC_GPO1 (PA enable signal) is sometimes not
                             de-asserted on CC1352 Rev A. */
                    GPIO_setMux(CONFIG_RF_HIGH_PA, IOC_PORT_RFC_GPO3);
                    GPIO_setMux(CONFIG_RF_SUB1GHZ, IOC_PORT_RFC_GPO0);
                } else {
                    /* RF core active --> Sub-1 GHz */
                    GPIO_setMux(CONFIG_RF_24GHZ, IOC_PORT_GPIO);
                    GPIO_setMux(CONFIG_RF_HIGH_PA, IOC_PORT_GPIO);
                    GPIO_setMux(CONFIG_RF_SUB1GHZ, IOC_PORT_GPIO);
                    GPIO_write(CONFIG_RF_SUB1GHZ, 1);
                }
            } else {
                /* 2.4 GHz */
                if (paType == RF_TxPowerTable_HighPA)
                {
                    /* PA enable --> HIGH PA
                     * LNA enable --> 2.4 GHz
                     */
                    GPIO_setMux(CONFIG_RF_24GHZ, IOC_PORT_RFC_GPO0);
                    /* Note: RFC_GPO3 is a work-around because the RFC_GPO1 (PA enable signal) is sometimes not
                             de-asserted on CC1352 Rev A. */
                    GPIO_setMux(CONFIG_RF_HIGH_PA, IOC_PORT_RFC_GPO3);
                    GPIO_setMux(CONFIG_RF_SUB1GHZ, IOC_PORT_GPIO);
                } else {
                    /* RF core active --> 2.4 GHz */
                    GPIO_setMux(CONFIG_RF_24GHZ, IOC_PORT_GPIO);
                    GPIO_setMux(CONFIG_RF_HIGH_PA, IOC_PORT_GPIO);
                    GPIO_setMux(CONFIG_RF_SUB1GHZ, IOC_PORT_GPIO);
                    GPIO_write(CONFIG_RF_24GHZ, 1);
                }
            }
        }
        else if (events & RF_GlobalEventRadioPowerDown) {
            /* Switch off all paths. */
            GPIO_write(CONFIG_RF_24GHZ, 0);
            GPIO_write(CONFIG_RF_HIGH_PA, 0);
            GPIO_write(CONFIG_RF_SUB1GHZ, 0);
    
            /* Reset the IO multiplexer to GPIO functionality */
            GPIO_setMux(CONFIG_RF_24GHZ, IOC_PORT_GPIO);
            GPIO_setMux(CONFIG_RF_HIGH_PA, IOC_PORT_GPIO);
            GPIO_setMux(CONFIG_RF_SUB1GHZ, IOC_PORT_GPIO);
        }
    }

    您可以执行进一步的优化来删除低于1GHz 部分(在 CC26XX 器件上不可用)、或仅在非 PA (<+5dBm)或高 PA (>+5dBm)输出 TX 操作之间进行选择。

    此致、
    瑞安