主题中讨论的其他器件:CC1312R、 CC1310、 Sysconfig、
工具/软件:
您好、
我将项目从 CC1312R 和 CC1310 迁移到 CC1312PSIP。 除无线电通信外、大部分通信功能都已正常工作。 我不知道如何控制 DIO0-DIO3 和 DIO0-DIO3 输出。
目前、对于 CC1312、我们使用 SDK 4.10.0.78 和 3.40.0.02。 适用于 CC1310 4.10.1.01 和 3.20.0.23。 我们很难过渡到更新的 SDK。
此致、
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.
工具/软件:
您好、
我将项目从 CC1312R 和 CC1310 迁移到 CC1312PSIP。 除无线电通信外、大部分通信功能都已正常工作。 我不知道如何控制 DIO0-DIO3 和 DIO0-DIO3 输出。
目前、对于 CC1312、我们使用 SDK 4.10.0.78 和 3.40.0.02。 适用于 CC1310 4.10.1.01 和 3.20.0.23。 我们很难过渡到更新的 SDK。
此致、
尊敬的 Jakub:
如您所见、CC1312PSIP 上的射频驱动器在内部拥有 DIO0 和 DIO0-DIO3 引脚:
与 CC1312R 工程相比、还有一个特殊的 rfDriverCallbackAntennaSwitching 回调:
/* * ======== Antenna switching ======== */ /* * ======== rfDriverCallbackAntennaSwitching ======== * Sets up the antenna switch according to the TX power table PA type. * * Truth table: * * Path DIO0 DIO3 * ========== ===== ===== * Off 0 0 * STANDARD PA 1 0 * HIGH PA 0 1 */ void __attribute__((weak)) rfDriverCallbackAntennaSwitching(RF_Handle client, RF_GlobalEvent events, void *arg) { if (events & RF_GlobalEventRadioSetup) { /* Switch off all paths. */ GPIO_write(CONFIG_RF_STANDARD_PA, 0); GPIO_write(CONFIG_RF_HIGH_PA, 0); /* Decode the current PA configuration. */ RF_TxPowerTable_PAType paType = (RF_TxPowerTable_PAType)RF_getTxPower(client).paType; if (paType == RF_TxPowerTable_HighPA) { /* * Mux GPIOs to RF Core signals: * - High PA --> HIGH_PA * - LNA enable --> STANDARD_PA */ GPIO_setConfigAndMux(CONFIG_RF_STANDARD_PA, GPIO_CFG_OUTPUT, IOC_PORT_RFC_GPO0); GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_RFC_GPO3); } else { /* RF Core active --> 5_DBM */ GPIO_write(CONFIG_RF_STANDARD_PA, 1); } } else if (events & RF_GlobalEventRadioPowerDown) { /* Switch off all paths. */ GPIO_write(CONFIG_RF_STANDARD_PA, 0); GPIO_write(CONFIG_RF_HIGH_PA, 0); /* Reset the IO multiplexer to GPIO functionality */ GPIO_setConfigAndMux(CONFIG_RF_STANDARD_PA, GPIO_CFG_OUTPUT, IOC_PORT_GPIO); GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_GPIO); } }
以及其他温度补偿设置:
以及 PSIP 器件+覆盖的专用 CPE 补丁:
我的观点是、如果可能、我强烈建议您更新到最新的 SDK。
此致、
Arthur
您好、Arthur
我将 EasyLink 文件从旧的 SKD 复制到新的 SKD、并使项目进入编译状态。 我还没有测试它是否正常工作。
我们在项目中使用了 14 个 EasyLink 函数:
EasyLink_init()
EasyLink_transmitASYNC ()
EasyLink_transmitCcaAsync ()
EasyLink_receiveAsync ()
EasyLink_abort()
EasyLink_enableRxAddrFilter()
EasyLink_getIeeeAddr ()
EasyLink_setFrequency ()
EasyLink_getFrequency ()
EasyLink_setRfPower ()
EasyLink_getRssi ()
EasyLink_getAbsTime()
EasyLink_setCtrl()
Link_Params_初始化 ()
我们不使用 4 个函数:
EasyLink_Transmit ()
easyLink_receive ()
EasyLink_getRfPower ()
EasyLink_getCtrl()
此致、
Marcin。
尊敬的 Marcin:
我将尝试总结如何替换 Easylink 方法:
如果有用、请告诉我。
此致、
Arthur
是的、PIN 确实已被 GPIO 取代(如果您问我,会更好)。 下面是说明: (+) LAUNCHXL-CC1310:GPIO v PIN 驱动器? 有何差异? 推荐哪一种? -低于 1GHz 论坛 — 低于 1GHz - TI E2E 支持论坛 。 UART2 也是如此。
此致、
Arthur
从上面的帖子中可以看出、在切换到新的 SDK 后、要编译软件需要大量工作。 运行和测试还需要更多的资源。 同时、当我的上级决定使用 CC1312PSIP 时、他们提供的信息表明从 CC1312R 迁移到 CC1312PSIP 应该比从 CC1310 迁移到 CC1312R 容易得多。 比较主题 e2e.ti.com/.../cc1312psip-migrating-from-cc1312r-to-cc1312psip
关于上述问题,我们回到使用旧 SDK 的概念,我们目前只有两个问题:
-传输后不久,我们无法正确接收数据时,设备之间的距离超过 3cm
-传输的频率比程序中设置的频率高 100KHz。
尊敬的 Marcin:
同样、我不建议您以这种方式使用、因为该 SDK 版本中尚未包含该器件、所以我们不支持 CC1312PSIP。 与迁移相比、您将花更多时间尝试让器件在旧版 SDK 上运行。
我在这里发布了我们的迁移指南: 文档概述
顺便说一下、100KHz 偏差会指示错误的 XOSC_CAPARRAY_DELTA 配置。
此致、
Arthur
您好 Arthur、
Jakub 在创建主题时写道、我们正在将工程从 CC1312R 和 CC1310 迁移到 CC1312PSIP。
我们只是在移动一些项目。 目前、无法将所有工程都移至 CC1312PSIP、甚至可以移动到新的 SDK。 新的 SDK 不支持 CC1310。 我们在 5mm x 5mm 的外壳 (CC1310F128RHBR) 中使用它、因此如果不修改硬件、也无法用 CC1312R 替换它。
此外、我们在 CC13*微控制器上实施的所有项目都具有大多数共同的源文件。 CC1310 上扩展最广泛的项目目前仅禁用了 4KB 的可用闪存并禁用了缓存、其中使用了--opt_level=2。 如此少量的可用内存已导致调试软件时出现问题。
关于上述问题、有以下问题:
-是否有计划为 CC1310F128RHBR 引入引脚对引脚兼容的替代产品?
-用 GPIO 替换 PIN 对在 CC1310 上工作的项目的内存使用和速度有什么影响
此致、
Marcin。
尊敬的 Marcin:
我明白。 无论如何、您肯定必须继续为 CC1310 使用 CC13xx 4.20 SDK。 CC13xx (LOWPOWER-F1) 是 CC13x2 SDK (LOWPOWER-F2) 支持不同的系列。
是否在为 CC1310 工程使用 CCS 编译器?
对于您的两个问题:
我将发送在将第三个工程从 CC1312R 转换为 CC1312PSIP 时所做的工程配置更改。
我以第二个项目为基础、该项目的传输已经可以正常工作、网址是 SDK 4.10.0.78。
第三个项目 — 属性:
第三个项目
与第三个项目 Tirtos /属性相关
SysConfig:
我们不使用高于 14dB (25mW) 的功率
许多工程通用的文件更改:
void Board_initHook() { ... # ifdef Device_CC1312PSIP Board_init_rf_switch(); # endif //#ifdef Device_CC1312PSIP ... } #ifdef Device_CC1312PSIP /* * ======== PIN ======== */ /* RF Antenna Pin 0, (DIO0) Substitution, because there is no DIO0 for CC1312R, and in CC1312PSIP we have to use it */ #define CONFIG_RF_STANDARD_PA 0x00000000 /* RF Antenna Pin 1, (DIO3) */ #define CONFIG_RF_HIGH_PA 0x00000003 #endif //#ifdef Device_CC1312PSIP /* * ====================== RF_switch ====================== */ #include <ti/drivers/rf/RF.h> #include <ti/drivers/PIN.h> #include <ti/drivers/pin/PINCC26XX.h> #ifdef Device_CC1312PSIP const PIN_Config antennaConfig[] = { /* RF Antenna Pin 0, (DIO1) */ CONFIG_RF_STANDARD_PA | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* RF Antenna Pin 1, (DIO3) */ CONFIG_RF_HIGH_PA | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, PIN_TERMINATE }; static PIN_Handle antennaPins; static PIN_State antennaState; void Board_init_rf_switch(void) { if (PIN_init(antennaConfig) != PIN_SUCCESS) { /* Error with PIN_init */ while (1); } antennaPins = PIN_open(&antennaState, antennaConfig); } /* * ======== rfDriverCallbackAntennaSwitching ======== * Function to handle antenna switching. */ void rfDriverCallbackAntennaSwitching(RF_Handle client, RF_GlobalEvent events, void *arg) { if(events & RF_GlobalEventInit) { // Perform action for this event //antennaPins = PIN_open(&antennaState, antennaConfig); } else if (events & RF_GlobalEventRadioSetup) { // > Set pin output value manually PINCC26XX_setOutputValue(CONFIG_RF_STANDARD_PA, 0); // Low PINCC26XX_setOutputValue(CONFIG_RF_HIGH_PA, 0); // Low PINCC26XX_setOutputValue(CONFIG_RF_STANDARD_PA, 1); // High } else if (events & RF_GlobalEventRadioPowerDown) { PINCC26XX_setOutputValue(CONFIG_RF_STANDARD_PA, 0); // Low PINCC26XX_setOutputValue(CONFIG_RF_HIGH_PA, 0); // Low // > Mux pin to be driven/controlled by the RF Core // > (RFC GPIO0 is here only used as an example) //PINCC26XX_setMux(antennaPins, CONFIG_RF_STANDARD_PA, PINCC26XX_MUX_RFC_GPO0); // > Mux pin to be controlled manually (i.e. release RF Core control) PINCC26XX_setMux(antennaPins, CONFIG_RF_STANDARD_PA, PINCC26XX_MUX_GPIO); PINCC26XX_setMux(antennaPins, CONFIG_RF_HIGH_PA, PINCC26XX_MUX_GPIO); } /* * ======== rfDriverCallback ======== * Handle events triggered by the RF driver for custom / application specific behavior. */ void rfDriverCallback(RF_Handle client, RF_GlobalEvent events, void *arg) { if(events & RF_GlobalEventInit) { // Perform action for this event } else if (events & RF_GlobalEventRadioPowerDown) { // Perform action for this event } else if (events & RF_GlobalEventRadioSetup) { // Perform action for this event } rfDriverCallbackAntennaSwitching(client, events, arg); }
特定于第三个项目的更改
/* * ======== Power_enableTCXO ======== * * This is a dummy plug added to avoid having to create a new tirtos project. * This way there is one common tirtos for many projects. */ void Power_enableTCXO(bool turnOn) { ; }
第三个项目带来了一个我熟悉的问题,这已经解决了第二个项目。 当设备在发射后接收时,它具有非常小的范围 — 大约一米。 与之通信的器件中的 RSSI 水平非常好、在 LAUCPAD LP-EM-CC1312PSIP 上的 RSSI 不优于–90dB。 温度补偿确实尚未实现、但我认为无关紧要、因为器件工作频率的差异仅为 6kHz。
此问题是否可能与发送和接收之间的不同时间间隔有关?
我仔细地比较了这两个项目、目前我没有想到其他想法。