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.

[参考译文] CCS/TIDA-00489:使用传感器/收集器示例降低 TIDA-00489的功耗

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

https://e2e.ti.com/support/tools/simulation-hardware-system-design-tools-group/sim-hw-system-design/f/simulation-hardware-system-design-tools-forum/743254/ccs-tida-00489-power-reduction-for-tida-00489-using-sensor-collector-example

器件型号:TIDA-00489
主题中讨论的其他器件: 传感器到云TIDA-01476CC1350

工具/软件:Code Composer Studio

嗨、大家好、

我已经尝试过 TIDA 固件、但我需要星形网络代码、因为我的网络中有大约50个传感器。 我修改了传感器/收集器示例中的代码、使其适用于 TIDA 传感器。 今天、我进行了第一次粗略功耗测试、到目前为止我还没有感到很有趣。 但是、我使用的是 Fluke 万用表、这不是最先进的电流测量工具。 我将使用 SHUNT+SRF650超低噪声放大器+ DAQ 卡在更长的时间内更精确地记录功耗。 我发送的传感器数据是每10秒作为间隔的移动次数。

  1. 传感器未连接到网络:大约2mA
  2. 传感器已连接且"怠速":0、08mA
  3. 传感器具有"预发送"突发:1、2mA
  4. 传感器正在发送:3-9mA
  5. 传感器具有"发送后"突发:1、2mA

我自己有一些想法:

  1. 增加发送接口
  2. 降低 TX 发射功率
  3. 降低有效载荷(这是可行的还是巧妙的? 收集器是否需要为网络发送所有数据?)

您还有什么建议吗?您能告诉我您的消费大概是多少?

此致

SLV1n

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

    我会推荐此参考设计:TIDA-01476。 它是 TIDA-00489的传感器到云版本。 为了优化功耗、可以进行一些调整。 例如、禁用跳频、增加轮询间隔和降低发射功率。 如果您想减少有效载荷、可以通过配置 configSettings.frameControl 数据结构对其进行控制。 通过使用 FrameControl,您只能设置要发送的字段。

    作为参考、您可以在以下位置找到 TIDA-01476的示例代码: git.ti.com/sub1ghz-sensor-to-cloud

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

    谢谢 Christina。 我将介绍固件、不过我想它基于传感器收集器 TI 15.4 Stack 示例 :http://dev.ti.com/tirex/content/simplelink_academy_cc13x0sdk_1_13_01_05/modules/154-stack_01_sensor_collector/154-stack_01_sensor_collector.html

    查看固件控制图、我很确定、除了我测量移动次数的方法外、其余的都是相同的。 我也很高兴您能给出一些建议。 我会尝试它们。

    但到目前为止、我真的很想知道、为什么万用表在未加入网络时显示2mA 的功耗(无论传感器是孤立的还是以前从未加入过网络)以及在连接时显示为2mA 的功耗、 我的传感器始终在计数运动并以特定的间隔发送运动数。 在这种"空闲"或"待机" 80µA 期间、根据万用表、它仍然消耗70 μ A 的电流、尽管我不再信任这里的器件...这是否与 J3短路有关、我只是注意到、它始终短路、尽管 PDF 说它不应该短路。 这是问题吗?

    此致

    Stefan

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

    我假设您使用的是 TI 15.4堆栈中的传感器/收集器。 当传感器未连接到收集器时、它将持续扫描要加入的网络。 因此、如果您在传感器不属于网络时看到电流消耗较高、则这可能是原因。

    J3将 GPIO 引脚短接至 VDD。 在原始代码中、固件具有一个检查"Board_Mode"引脚的 if 语句。 如果 J3短接(例如、GPIO 引脚为高电平)、则不要运行代码以进行调试。 如果 J3未短接(例如、GPIO 引脚为低电平)、则执行正常的固件操作。 如果从固件中删除此代码片段、则 J3无关。 但是、最好确定如何配置此引脚。 如果默认情况下、该引脚在内部拉低、J3短接(将引脚拉高)、则会导致更高的电流消耗。

    Christina
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Hmm、关于连接到 IOID_3的 J3、在我的代码中、它用于 UART Tx:
    #define CC1350_LAUNCHXL_UART_TX ioID_3. /* TXD */

    我想、我可以取出所有的 UART 功能、因为我不需要在电路板上使用它们。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ‘ve、我下载了 git 存储库并仔细查看了传感器代码。 正如预期的那样、我在构建项目时遇到了问题。 请注意,我还下载了 simplelink_cc13x0_sdk_1_30_00_06软件包。

    在建造之前、我进行了以下更改:

    1. 我在预定义的符号部分下将 TEMP_SENSOR 设置为 MOTION_SENSOR。
    2. 我配置了 CC1310F128.ccxml 目标配置

    我检查了一般属性:

    • 已检查 SimpleLink CC13x0 SDK 1.30.0.06
    • XDCtools:3.50.1.12_core 被使用
    • 编译器版本为 TI v18.1.0.LTS

    我使用了„Build project”和„Build All“,我还尝试了„原始 V0版本”,没有做任何更改。 两者都有错误、尽管不同。

    编辑:通过按照我自己的愿望采用代码、错误消失了、尽管我不知道原因。

    „Build project”的错误

    • #10010 null:链接期间遇到错误;"TIDA01478_SENSOR_cc1310lp_v1.out"未构建  TIDA01478_SENSOR_cc1310lp_v1
    • 10234-D 空:未解析的符号仍为  TIDA01478_SENSOR_cc1310lp_v1             
    • Gmake:***[全部]错误2  TIDA01478_SENSOR_cc1310lp_v1
    • gmaking[1]:***[TIDA01478_SENSOR_cc1310lp_v1.out]错误1  TIDA01478_SENSOR_cc1310lp_v1
    • 未解析的符号 Board_PIR_initialize、首先在中引用   TIDA01478_SENSOR_cc1310lp_v1

    警告

    此工程是使用当前未安装的编译器版本创建的- 16.9.2.LTS [ARM]。 编译器的另一个版本将在编译期间使用- 18.1.0.LTS。

    问题:

    1. 是否有任何想法、我还必须改变什么才能构建它?
    2. 我是否应该为此问题制作另一个主题?
    3. 我查看了 board.h 文件、注意到以下几点:
    #if defined (CC13XX_LAUNCHXL)
    
    /* CC1350板级配置文件将同时用于 CC1310和 CC1350 */
    
    #include "boards/CC1350_LAUNCHXL/Board.h"
    
    #Elif defined (TIDA00758)|| Defined (TIDA00488)
    
    #include "LaunchPad/TIDA00489_TIDA-board.Elih"
    
    #include "LaunchPad/TIDA-00489_TIDA00489_TIDA-Eli..."#define.tIDA-0489_TIDA-0159_TIDA-0159_TIDA-0159_TIDA-
    
    
    
    

    我是否应该在预定义符号中添加„TIDA00489”?

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

    项目中有用于设置正确项目设置的预构建配置。

    导入项目后、右键单击并转至"Properties"。 单击"Build"。 在顶部、您应该会看到配置部分。 在下拉列表右侧、单击"Manage configurations..." 按钮。 突出显示 TIDA-00489并单击"Set Active"按钮。 单击"确定"、然后单击"应用并关闭"以关闭属性窗口。

    之后、您应该会在 Project Explorer 中看到它提到了 TIDA-00489 (例如 sensor_cc1310lp [Active - TIDA-00489])。 清理工程并重新编译。 编译工程时应不会出现任何错误。

    Christina
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嘿、我不知道这个选项、谢谢! 它确实在编译之后没有错误、仅针对已声明但从未引用和设置但从未使用的函数发出2条警告。

    关于电流消耗:
    当我尝试传感器的新 TIDA 001476固件时(我对收集器使用旧固件)、我再次测量、空闲时大约为70µA μ s。
    当我刷写3µA 的 TIDA 00489固件并仅将代码从检测运动更改为计算特定时间的运动、然后通过"sendpacket (XX)"函数发送软件包时、我可以看到1 μ A 空闲、但会有很多波动至0.8µA Ω 及以上 30µA μ A、因此我平均说10µA μ A。

    我仍然不理解空闲时 Δ I 和 Δ I 之间的差异、您能告诉我进一步的操作来降低空闲电流、因为在70µA 10µA 70µA +传输峰值的情况下、传感器的持续时间不会超过2个月、我们需要几年。 至少该测试表明、不存在电流泄漏等硬件问题。

    感谢您的建议。

    当然、感谢您迄今提供的帮助!

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

    您是否还可以尝试使用 git 存储库中的收集器进行测试? 当传感器启动时、它会设置自己的默认轮询、发射功率和其他配置。 传感器连接到收集器后、收集器将根据其自身的网络要求修改传感器配置。

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

    您好、Christina、

    下面是我这边的更新:

    TIDA 01476的收集器固件目前仍能正常工作、如果我将其与传感器固件相结合并选择"sensor_cl1310lp"、则可以正常工作。 也可以将其更改为 TIDA 00489、电流消耗在可接受的数字 µA 区域内。

    但是、当我重新编写代码以便在检测到移动或计时器过期时不发送代码时、收集器不会接收消息。 调试时,我可以看到"readSensor();"函数被执行三次,然后它停止尝试并停止。 收集器向我显示传感器已连接、然后等待一段时间、然后显示:!Responding:0x1。

    默认配置时间实际上设置为100ms、但收集器似乎无法配置器件。

    我必须进行一些更改才能使传感器固件尝试发送。 例如,我在 SSF_setReadingClock()中启用了 readingTime,调整了 Board_PIR.c 并更改了 MotionSensor-Msg。

    • 您是否知道收集器没有收到消息并且无法配置器件的原因?(轮询和报告接口设置为5s 和6s。) 解决方案:-> SMSGS_SENSOR_MOTION_LEN 必须为2而不是1!
    • 为什么#ifdef feature_MAC_security 中的代码块会灰显、尽管在 feature.h 中定义了代码块?
    • 如果启动后没有集电极(出厂设置)、为什么消耗7mA 电流? 扫描持续时间为2秒、回退和孤立扫描间隔分别设置为10秒?!

    此致

    Stefan

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

    仅需确认、在未修改 TIDA-01476代码的情况下、传感器和收集器即可正常工作。

    您是否能够使其与修改配合使用? 如果更改 Motionsensorfield 数据包、则还需要更新 SMSGS_SENSOR_MOTION_LEN。 这两个更改也需要在收集器侧完成、否则收集器将不知道如何解密传感器发送的数据包。

    对于扫描和孤立回退、您使用了什么值? 该值是以毫秒为单位的持续时间。 默认情况下、在 config.h 中、扫描回退为5秒(5、000)、孤立回退为300秒(300、000)。 您提到的持续时间看起来要频繁得多、这可能会导致更高的消耗。

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

    您好、Christina、

    我花了一些时间,但我已经发现了数据包长度的问题,并使其正常工作了:)我已经编辑了我的最后一篇文章并添加了解决方案。 除了将传感器侧的长度设置为两个字节外、还必须在收集器消息帧中添加字段。

    typedef 结构体_Smsgs_motionsensorfield_t

       /*! 移动值*/
       uint16_t 移动;

    } Smsgs_motionsensorfield_t;

    您必须在此结构中添加此结构:typedef struct _smsgs_sensormsg_t

    扫描持续时间和间隔的相关信息。 我将扫描持续时间设置为2秒、并将回退和孤立扫描间隔设置为大值30s。 消耗持续为7mA、完全没有波动。 我以前也遇到过这个问题、比如经典的传感器/收集器示例。 在这里、我经常有2mA 电流、但我想这是因为扫描持续时间为5s、退避间隔也为5s、这意味着它一直在搜索。 当我更改这两个值时、我解决了这个问题。

    我进行了两次测试、以更好地了解为什么消耗如此高。

    1. 我在 sensor_process()中添加了循环递增变量时永无休止的循环。 这会导致8mA 持续电流。
    2. 我在 sensor_process()中添加了一个等待10秒的信标,我确认了使用两个断点来调试代码,一个在信标之前,一个在信标之后。 代码停止了10秒、但是必须有后台事务或任何其他事务(可能是由于某种原因、接收器或发送器正在执行一些操作)、但流耗始终为7mA。

    我不知道为什么如果成为孤儿或准备生产新产品,而且没有收集器,那么消费就会这么高。

    此致

    Stefan

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

    Stefan、

    对于孤立或未连接的传感器的高功耗、这似乎是15.4传感器/收集器示例所特有的。  我建议在低于1GHz 论坛上发布一篇新文章、详细介绍您使用传感器/收集器示例看到的问题。

    Christina

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

    我会这样做,感谢你的帮助!