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.

[参考译文] CC1310:CC1310–将 SCS 代码合并到 CCS 后温度传感器值未更新

Guru**** 2811785 points

Other Parts Discussed in Thread: CC1310

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1618591/cc1310-cc1310-temperature-sensor-value-not-updating-after-merging-scs-code-into-ccs

器件型号: CC1310

尊敬的团队:

我正在努力实现 CC1310 并在中开发了温度传感器任务 Sensor Controller Studio (SCS) 。 此任务在 SCS 中正确运行、我能够根据环境变化观察到准确的温度读数。

我现在已将生成的 SCS 代码集成到中 rfPacketTx 示例工程 (CCS、TI-RTOS) 。 工程将成功编译和运行。

但是、温度值读数为:

scifTaskData.tempSensor.output.temperature

保持在数据结构中定义的默认常量值、而不是使用实际的传感器测量值进行更新。

我已实施的措施:

  • 添加:scifOsalInit();
    scifInit (&scifDriverSetup);
    scifStartRtcTicksNow (0x00010000);
    scifStartTasksNbl (1 << SCIF_TEMP_SENSOR_TASK_ID);

  • 这些 API 在 LoRa (RF) 初始化之前调用。

  • 通过修改 SCS 中的默认温度值(例如 43、87)验证了集成。 更新后的常量会在调试期间反映在 CCS 中、以确认 SCS 代码已正确合并。

问题:

任务似乎已开始、但运行时温度数据未更新。

请您提出以下建议:

  • 是否需要执行任何额外的 SCIF 任务或数据同步步骤?

  • 是否scifExecuteTasksOnce()需要 OSAL 回调?

  • 将 SCS 与 rfPacketTx (TI-RTOS) 集成时是否存在已知冲突?

此外、请查找随附的 Sensor Controller Studio 代码、我将在该代码中根据温度变化获得准确的温度读数。

 sensor_controller.zip 

请提供任何指导。

谢谢你。

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

    首先、我想您需要补充  
    fwScheduleTask(1);

    工程中的初始化代码以使 SC 代码开始。

    在调试类似代码时、您可以使用逻辑分析仪监控 I2C 总线、以确保代码按预期在配置的间隔运行。

    BR

    Siri

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

    尊敬的 Siri:

    感谢您的答复。

    fwScheduleTask(1)代码中使用的一个二进制文件。

    以下是 Sensor Controller Studio (SCS) 的执行参考代码:

    i2cStart();

    i2cTx ((0x44<<1)| I2C_OP_WRITE);//器件地址写入命令
    i2cTx (0x21);//开始转换命令
    i2cTx (0x30);//完成开始转换
    i2cStop();

    fwDelayUs (150000、FW_DELAY_RANGE_1_MS);//模数转换延迟

    i2cStart();
    i2cTx ((0x44<<1)| I2C_OP_WRITE);
    i2cTx (0xE0);
    i2cTx (0x00);
    fwDelayUs (15000、FW_DELAY_RANGE_1_MS);//模数转换延迟

    //如果成功...
    if (state.i2cStatus == 0x0000){

    U16 MSB;
    U16 LSB;
    U16 CRC;
    U16 RawData;

    i2crepeatedStart();
    i2cTx ((0x44<<1)| I2C_OP_READ);//器件地址读取命令

    i2cRxAck (msb);//读取温度 MSB
    i2cRxAck (LSB);//读取温度 LSB
    i2cRxNack (CRC);//读取 CRC

    RawData =((MSB << 8)| LSB);
    output.temperature = RawData;
    }

    i2cStop();

    fwScheduleTask(1);

    代码在 Sensor Controller Studio 中正常工作。

    但是、将其集成到 CCS 后、任务似乎没有运行、温度值也不会更新。

    您能否说明一下为什么即使fwScheduleTask(1)正在使用任务、也没有从 CCS 执行任务?

    谢谢你。

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

    尊敬的 Siri:

    感谢您的答复。

    我了解您fwScheduleTask(1);需要将这一点添加到初始化代码中。 我已作相应补充。

    按照以下链接中提供的步骤生成示例代码时:

    https://software-dl.ti.com/lprf/simplelink_academy/modules/sc_01_basic/sc_01_basic.html

    我观察到生成的工程包含一个main_tirtos.c文件。 但在本例中、此文件不会生成。 这可能是问题的原因吗?

    请在附件中找到我生成的文件和工程结构的快照。 请告诉我,如果我方面有任何遗漏。

    供参考:

    • SCS 版本: 2.9.0.208.

    • CCS 版本: 20.4.1.4__1.10.1.

    此外、您能否澄清一下为什么main_tirtos.c在我的案例中未生成?

    谢谢你。
    e2e.ti.com/.../temperature_5F00_sensor.zip

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

    您好、

    不会生成 MAIN_tirtos、因为它已经位于您导入的工程中(文档中的 i2c_light_sensor_tirtos)

    为了测试您的传感器控制器项目、建议您从开始 示例、位于 drivers/文件夹中:



    然后、在 empty.c 中、您可以复制代码、该代码将允许您启动传感器控制器任务:


    生成的 scif_how_to_use.html 文件对此进行了说明。

    此致、


    Arthur