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.

[参考译文] LAUNCHXL-CC3235S:AWS IoT

Guru**** 2556600 points
Other Parts Discussed in Thread: CC3235S, SYSCONFIG, UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1045694/launchxl-cc3235s-aws-iot

器件型号:LAUNCHXL-CC3235S
主题中讨论的其他器件:CC3235SSysConfigUNIFLASH

我在 CC3235S 上的 Simplelink SDK 中使用了一些代码、如下所示-  

1. subscribe_publish_sample_CC3235S_LAUNCHXL_tirtos_ccs -我能够发送 MQTT 消息并在 AWS 主题订阅中看到带有"PAYLOAD"的字符串:"hello from SDK QOS1:403"。 按照自述文件步骤、代码在调试模式下运行。

uartecho_CC3235S_LAUNCHXL_tirtos_ccs -我能够修改代码以在 UART1 Rx 的 P03引脚上接收数据、并通过 UART0将其打印在 PuTTy 上。 这是通过将代码刷写到 LaunchXL CC3235S 来实现的

现在、我想合并2个 SDK 示例代码、以便通过 UART1 P03 Rx 获取数据并在 AWS IoT 上发布字符串。  subscribe_publish 示例具有 Display_init();/Display_open (Display_Type_UART、NULL);标记为 UART 初始化和打印消息。 另一方面、uartecho 具有像 UART_init ();/UART_open (CONFIG_UART_0、&uart0Params)这样的例程;

我正在努力在 main_tirtos.c 中设置初始化、以便能够完成在 Rx P03上获取串行文本和在 AWS 上打开字符串的工作。 任何尝试 UART 初始化的行为都会导致与 Display I beleive 发生冲突。

感谢您为解决此问题提供的任何帮助。  

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

    您应该在 应用程序中选择一种日志记录方法。

    不要尝试同时使用这两者。

    您需要将 UART_PRINT 端口为 Dispaly_printf 或相反方向。  

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

    初始化 UART1时出现问题。 我可以将 UART0与显示功能结合使用。 我没有使用任何 UART_PRINT。  当我尝试深入  Display_init()和  UART_init() TI 显示和驱动程序例程时,它们会初始化函数 指针表。 应该有一种方法从 P03引脚上的 UART1获取数据并将其显示在串行 UART0上

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

    请使用 syscfg 为 RX 配置 UART1。 然后、您可以直接使用 TI UART 驱动程序从 UART1读取数据。

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

    谢谢 Kobi、我已经这么做了。 正如我在第一个注释中提到的、我成功地修改了 uartecho、使两个 UART 都正常工作。 这只能在修改 SysConfig 时实现。 这更多是 init 部分。 要调用 SysConfig 中添加的 UART1的任何读取函数、必须执行 UART 初始化。 如果您有 CC3235S 硬件、可以尝试从  subscribe_publish_sample_CC3235S_LAUNCHXL_tirtos_ccs 中的引脚 P03 UART1读取数据、以便将数据推送到 AWS 主题。  

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

    您是否在 syscfg 中启用了"Dispaly"?

    无论如何, 您将需要在初始化期间看到2个对 UART2_open()的调用-每个端口一个(使用断点进行验证)。

    如果您使用 Display_printf、Dispaly_open 将在内部调用 URAT2_open。

    您可以在(syscfg)自动生成的代码("Generated Source / SysConfig"下的 ti_drivers_config.c)中检查 UART2配置。

     UART2_CONFIG[]中应该有2个条目。

    BR、

    Kobi

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

    感谢 Kobi、

    是 在 syscfg 中启用了"显示"

    根据 我的外部串行器件、我需要9600波特的 UART1。 UART0的默认显示频率为115200。 将 UART1波特率设置为9600的方法是什么。

    要调用的函数是什么?

     display_init(); //  

    Display = Display_open (Display_Type_UART、NULL); //根据上面的响应、我假设两个 UART 都处于打开状态

    XXXXX               //请提供我应该用来从 UART1读取9600波特数据的代码,这是要读取的函数?

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

    调用 UART2_PARAM_INIT ()、然后在调用 UART2_OPEN ()之前更改波特率。

    显示仅用于 UART0。

    对于 UART1 -您应该调用 UART2_open。

    /*!
    *@用于将 UART2_Params 结构初始化为默认值的简短函数
    *
    *@param[in] params 指向的 UART2_Params 结构的指针
    *初始化
    *
    *默认值为:
    * readMode = UART2_Mode_Blocking;
    * writeMode = UART2_Mode_Blocking;
    * eventCallback = NULL;
    * EventMask = 0;
    * readCallback = NULL;
    * writeCallback = NULL;
    * readReturnMode = UART2_ReadReturnMode_Partial;
    *波特率= 115200;
    * dataLength = UART2_DataLen_8;
    * stopbits = UART2_stopbits_1;
    * parityType = UART2_Parcy_none;
    * userArg=NULL;
    *
    extern void UART2_Params_init (UART2_Params *参数);

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

    感谢 Kobi 提供的解决方案-我能够使用以下代码从 UART 2读取数据

    /*创建一个 UART,其中默认的读写模式是阻塞*/
    UART2_Params_init (uartParams);
    uartParams.baudrate = 9600;

    UART = UART2_open (CONFIG_UART2_0、uartParams);

    if (UART == NULL){
    /* UART2_open()失败*/
    while (1);

    bytesRead = 0;
    while (bytesRead < 32){
    status1 = UART2_read (UART、bbff、32、bytesRead);

    if (status1!= UART2_STATUS_SUCCESS){
    /* UART2_READ()失败*/
    while (1);

    在执行分步调试时、我能够在缓冲区 bbff 中看到我的数据。

    现在的挑战是、如果我进行分步调试、程序将按预期运行。 如果我删除了断点、它将挂起、并且我无法在 COM 端口上看到任何消息。 我也尝试增加睡眠(),以防有任何延迟需要。 但这没有什么帮助。

    另一方面,我有两个非常基本的问题:

    如何从 CCS 刷写代码而不是使用调试模式? 在其他程序中、我在 Run -> Load -> To flash using serial 下看到一个选项。 但是、子批评发布示例在构建和连接硬件时没有此选项

    如果是 UniFlash、我看到了 UniFlash 的文档-但是我有点困惑,在从 CCS 构建之后,如何导航到将二进制文件更正为硬件。 请帮帮我

    3.我已使用 UniFlash 在器件存储器的单独文件夹\cert\中刷写 AWS 证书。 当我从 CCS Run->Load->serial flash 刷写任何其他程序时,证书文件夹会被覆盖。 当我刷写任何其他程序时、如何确保 cert 文件夹完好无损、

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

    1.我相信您只需要将 image.syscfg 添加到您的项目中。

    2.在工作区中找到您的项目并转至调试/或 MCU+Image/(根据活动配置),在这里可以找到" 在 Uniflash 中使用的.bin"。

    使用 Uniflash 或 CCS 对器件进行编程时、首先对器件进行格式化。 如果使用 CCS、则可以在项目中添加 userFiles 文件夹、在其中指定文件系统结构(可以复制证书/文件夹以及 userFiles 文件夹下的证书)。

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

    感谢 Kobi、

    1.我将  image.syscfg 从另一个项目复制到我的项目中、并构建了该项目。 它不会更新 MCU+Image\syscfg\sl_image 中的 SLI 映像。 这是将 image.syscfg 复制到工程文件夹的正确方法。 在 项目中启用 SysConfig ImageCreator 的步骤是什么?

    正如我之前在调试模式中提到的、我的程序仅在我执行分步执行时才会运行并获取 IP 地址。 当我在调试模式下运行没有断点的项目时,它会卡在函数  Network_startup()->  initWiFi()中;在调试模式下分步运行 v/s 自由运行时,出现不同行为的原因是什么。 我尝试引入睡眠(3)延迟来检查、但这没有帮助

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

    1.我需要检查添加"image.syscfg"。 同时、您可以从工作项目的副本开始、而不是将文件复制到该工程中。 也可以使用 Uniflash 对文件系统进行编程、

    2.似乎是一个时间问题。 您可能需要 在 代码中的某个位置添加延迟。 请检查 initWifi ()中它的确切位置。