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.

[参考译文] CC1350:Contiki-ng Web 演示、添加 I2C 过程

Guru**** 2582155 points
Other Parts Discussed in Thread: CC1350, TMP006, HDC1000

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/809307/cc1350-contiki-ng-web-demo-add-i2c-process

器件型号:CC1350
主题中讨论的其他器件: HDC1000

您好!  

-我正在 contiki-ng 中使用 CC26x0 Web 演示示例,pn CC1350 launchpad。

- LaunchPad 连接到 HTU21D 湿度和温度传感器,该传感器使用 I2C 触发和读取测量值。

目标是建立一个打开 I2C 通信、向传感器发送命令、然后读取测量值并将其发布为传感器读数的过程。

-我想知道我应该在代码中的哪个位置添加 I2C 过程? Launchpad 的 Contiki-ng 中是否有一个 I2C 过程示例、我可以将其附加到 Web 演示示示示例中?

谢谢

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

    cc26xx-web-demo 包含 I2C tmp006示例、您可以参考该示例进行相应的移植。

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

    请提供详细信息吗?

    在 arch/platform/ccc26x0-cc13x0/sensortag 中、我看到:

    -board-i2c.c  
     board-i2c.h
    -tmp-007.c
    tmp-007.h
    -sensor-common.c
    sensor-common.h

    在 launchpad 目录 arch/platform/ccc26x0-cc13x0/launchpad 下找不到哪些内容、我应该复制它们、然后用 HTU 替换 tmp-007?

    您能否解释一个简单的案例:如何在 contiki-ng CC26x0-web-demo 中将 tmp-007与 Launchpad (而不是 sensortag 板)搭配使用?  

    -  

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

    您应该复制以下四个文件:

    -board-i2c.c

    board-i2c.h

    -sensor-common.c

    sensor-common.h

    并克隆以下两个文件

    -tmp-007.c

    tmp-007.h

    更改为

    - HTU21D.c

    HTU21D.h

    然后、根据 HTU21D 数据表修改 HTU21D.c/HTU21D.h 中的寄存器值以使其正常工作。

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

    谢谢我这么做、对于 HDC_1000_Sensor (因为它与 HTU21D 非常相似)、我在构建时收到此错误:

    在  以下函数中未定义对`HDC_1000_sensor'的引用:

    静态空
    init_HDC_reading (void *数据)
    {
    if (HDC_hum_reading.publish || HDC_temp_reading.publish){
    SENSORS_ACTIVATE (HDC_1000_SENSOR);
    }否则{
    ctimer_set (&HDC_timer、clock_second、init_HDC_reading、NULL);
    }
    

    附件是我的 cc26xx-web-demo.ce2e.ti.com/.../7713.CC26xx_2D00_web_2D00_demo.c

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

    HDC_1000_SENSOR 是 HDC-1000-Sensor.h 中定义的 SENSORS_SENSOR 结构 您必须包含头文件才能解决此构建错误。

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

    我确实将其包含在 board-peripherals.h 中,但问题仍然存在...  

    当我添加以下内容时、它已成功构建:

    const struct sensors_sensor HDC_1000_sensor; 

    在 cc26xx-web-demo.c 的顶部、这意味着由于某种原因、数据结构未定义、尽管我在 HDC-1000-Sensor.h 中看到它的声明 请注意、hdc_1000_sensor.h 中的所有其他定义均已成功导入程序

    顺便说一下,在 board-peripgerals.h 中,我应该将 #define Board_CONF_HAS_SENSORS 设置为1还是保持原样(0)?

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

    由于您要将湿度/温度传感器连接到电路板、因此应将 #define Board_CONF_has 传感器设置为1

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

    尝试将其设置为1,并得到更多错误...  

    未定义对 SENSORS_FLAGS 的引用

    未定义对传感器的引用...

    我想知道是否有一个如何移植新传感器的示例?

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

    没有文件或公会可以逐步向您显示此情况。 您必须自己学习代码。

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

    尊敬的 Abhed:

    Contiki-NG 相关问题应提交给 Contiki 论坛。

    此致、
    Fredrik

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

    您好, YK,  

    我认为每次代码使用 OS/dev/sensors.h 中定义的 sensor_sensor_sensor 数据结构时、都会显示构建/ makefile 文件时都会出现问题 我尝试了一个非常简单的示例、如下所示、它给出了相同的错误"未定义对 button_sensor"的引用:

    #include "contiki.h"
    #include "dev/LEDs.h"
    #include "dev/button-sensor.h"
    #include 
    
    Process (led_button_process、"LEDs & buttons process");
    
    autostart_processes (&led_button_process);
    
    process_thread (led_button_process、EV、data)
    
    {
    process_begin ();
    
    SENSORS_ACTIVATE (button_sensor);
    
    while (1){
    printf ("按用户按钮\n");
    Process_Wait_event_until (EV = sensors_event && data =&button_sensor);
    LED_TOGGLE (LED_GREEN);
    printf ("传感器为:%u\n"、LED_GET());
    }
    process_end();
    } 

    我的 make 文件为:

    Contiki_project = button_sensing
    target=cc26x0-cc13x0
    Board=launchpad/c1350
    
    CFLAGS +=-g
    所有:$(Contiki_project)
    
    Contiki =..
    包括$(Contiki)/Makefile.include 

    请帮我解决此问题。 我是否应该在 make 文件的 PROJECTFILES 中添加任何其他文件?

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

    是的、您还需要修改 makefile。 您可以参考 Makefile.sensortag (contiki-ng\arch\platform\cc26x0-cc13x0\sensortag)并相应地修改 Makefile.launchpad (contiki-ng\arch\platform\cc26x0-cc13x0\launchpad 下)。

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

    最新帖子中的这个简单代码不适用于 sensortag、甚至是 target=native。 我在两台计算机上尝试过它。

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

    默认情况下、sensortag 示例中包含按钮和 LED。 您不需要为它们添加代码。

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

    是的,我知道,我只是想演示错误...

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

    我尝试将 HTU21D 添加到 sensortag 配置中、我可以毫无问题地构建它。 我随附了我的修订文件供您参考。 您可以将这四个文件放在 contiki-ng\arch\platform\cc26x0-cc13x0\sensortag 下、以重建 CC26x0-web-demo。

    e2e.ti.com/.../HTU21D.zip

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

    谢谢、作为一项解决方案、我只需使用 Board=sensortag 而不是 Launchpad 来构建我的项目。

    但您是否能够使用 Launchpad 进行工作?

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

    是的、我可以让它在 LaunchPad 上工作。 它只是一个复制和过去。

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

    我的文件与您的文件相同、在 launchpad 上无法正常工作...

    我将再次尝试重新克隆存储库、并在明天发布包含结果的另一个更新。

    感谢您的支持!

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

    我只需使用一些复制和粘贴以及修订版来尝试此操作、我可以确认它可以在 LaunchPad 上成功构建。

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

    感谢您的参与、我错过了: Board_SOURCEFILES += launchpad-sensors.c

    下面是移植的摘要:

    在 cc26x0-web-demo.c 中、我从#if BOARDSENSORTAG 宏复制了所有 hdc1000传感器函数和定义:
    - struct ctimer opt_timer;
    - DEMO_SENSOR (HDC_temp、CC26XX_Web_DEMO_SENSOR_HDC_TEMP、 "HDC Temp"、"HDC-TEMP"、"HDC_TEMP"、 CC26XX_Web_demo_unit_TEMP);
    - DEMO_SENSOR (HDC_hum、CC26XX_Web_DEMO_SENSOR_HDC_WE湿度、"HDC 湿度"、"HDC-Humide"、"HDC_hum"、 CC26XX_Web_demo_unit_hum湿度);
    -静态空 init_HDC_reading (空*数据);
    -静态空 COMPARE_AND_UPDATE (cc26xx_web_demo_sensor_reading_t *读取)
    -静态空 GET_HDC_READING ()
    -调用 init_HDC_reading (NULL);在静态空中 init_sensor_readings (void)
    -调用 list_add (sensor_list、&HDC_reading);静态空 init_sensors (void)
    -在 process_thread (cc26xx_web_demo_process、EV、data)中调用 get_HDC_reading ()

    在 launchpad/board_peripherals.h 中、我添加了:
    -#include "HDC-1000-sensor.h"

    在同一个 launchpad 文件夹中、我从 sensortag 文件夹复制了 HDC-1000-sensor.c/h、sensor-common.c/h 和 board-i2c.c/h、然后我添加了:
    - board_SOURCEFILES += HDC-1000-sensor.c sensor-common.c board-i2c.c
    Makefile.launchpad

    我还将 sensortag-sensor.c 复制到 launchpad 文件夹、并将其重命名为 launchpad-sensor.c、然后添加:
    -Board_SOURCEFILES += launchpad-sensors.c
    Makefile.launchpad

    在 launchpad/Board.c 中、我添加了 i2c 函数:
    -#include "lib/sensors.h"
    -#include "board-i2c.h"
    -静态空 shutdown _handler (uint8_t 模式)    
    - LPM_MODULE (launchpad_module、NULL、SHUTDOWN_handler、WAKEUP_handler、LPM_domain_none);
    在 board_init()中:
    -board_i2c_wakeup() ;  

    在 Launchpad/cc1350/board.h 中、我添加了:
    -#define Board_IOID_SDA_HP IOID_Unused /**<接口1 SDA:MPU *  
    -#define Board_IOID_SCL_HP IOID_Unused /**<接口1 SCL:MPU *  

    并且它已成功编译、我尚未测试传感器的 I2C 操作、我将在使其正常工作后发布更新!