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.

[参考译文] TMS320F28388D:使用 F28388D 的 HTTP 客户端请求

Guru**** 2562930 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1237427/tms320f28388d-http-client-request-using-the-f28388d

器件型号:TMS320F28388D
主题中讨论的其他器件:C2000WARE

您好、专家!

我是代表客户发布此帖子。 请帮助我们协助我们的客户。  

我需要发布与 https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1205601/tms320f28388d-f28388d-to-pc-via-ethernet-data-transfer?tisearch=e2e-sitesearch&keymatch=F28388D%20Ethernet%20http#相关的问题、但论坛提示我需要拥有公司电子邮件地址、我 不知道它为什么不起作用  

您能在 C2000方面回答我的问题吗? 我正在尝试编译示例!

基于 lwIP 的以太网示例。

C:\ti\c2000\C2000Ware_3_04_00_00\libraries\communications\Ethernet\third_party\lwip\examples\enet_lwip\cm\

使用的存储器  

它进行编译,但在调试时它位于汇编中的某个位置,我无法断点或查看它是否进入 C 代码 main ()

正在处理 CM

我想我也可以在这里进行调试吗?

我想让这个示例现在起作用。 我知道如何使用 CCS 和 C200板。 我只是运行 ePWM 示例、在示波器上工作正常 、但对于以太网示例、没有问题。

提前感谢您!

此致、

乔纳森

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

    Jonathan、

    示例文件夹中有一个 Readme 文件、其中提到了 运行此示例的步骤。  

    它仅适用于 CM 内核、但 C28x 应配置 pinmux 配置。  这可以通过运行 文件夹中的 Ethernet_C28x_config 项目来完成。 \driverlib\f2838x\examples\cm\Ethernet\ccs。  

    此致

    西达尔特

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

    尊敬的 Siddarth:

    感谢您的支持。 以下是客户的回答。

    我是否必须混合这两个程序?

    CM_COMMON_CONFIG_C28x.c
    从项目 Ethernet_C28x_config 中

    或者只是运行/调试配置、然后运行/调试 enet_lwip

    我这么做了、但什么也没有、我无法 ping 192.168.0.4

    C28xx_CPU1:GEL 输出:
    存储器映射初始化完成
    C28xx_CPU1:GEL 输出:
    ... DCSM 初始化开始...
    C28xx_CPU1:GEL 输出:
    ... DCSM 初始化完成...
    C28xx_CPU1:GEL 输出:
     CPU2已退出复位并配置为等待引导。
     (如果您以前已连接、可能必须恢复 CPU2才能到达等待引导循环。)
    C28xx_CPU1:GEL 输出:
     CM 已退出复位并配置为等待引导。
     (如果您之前已连接、可能必须恢复 CM 才能到达等待引导循环。)
    C28xx_CPU1:GEL 输出:
    ... DCSM 初始化开始...
    C28xx_CPU1:GEL 输出:
    ... DCSM 初始化完成...
    C28xx_CPU1:GEL 输出:
     CPU2已退出复位并配置为等待引导。
     (如果您以前已连接、可能必须恢复 CPU2才能到达等待引导循环。)
    C28xx_CPU1:GEL 输出:
     CM 已退出复位并配置为等待引导。
     (如果您之前已连接、可能必须恢复 CM 才能到达等待引导循环。)
    C28xx_CPU1:如果在一个内核上完成擦除/编程(E/P)操作、另一个内核不应从共享 RAM (SR)中执行、因为它们用于 E/P 代码。 可以在两个闪存组都编程后从 SR 开始执行用户代码。
    C28xx_CPU1:只有 CPU1片上闪存插件可以为 CPU1、CPU2和 CM 闪存操作配置时钟。 当调用 CPU1闪存操作时、插件会自动配置 PLL。 但是、如果用户只想执行 CPU2或 CM 闪存操作、而不在当前会话中执行先前的 CPU1操作、则应在调用 CPU2和 CM 闪存操作之前点击 CPU1的片上闪存插件中的"配置时钟"按钮。 使用此按钮时、闪存插件会将 CPU1/CPU2的时钟配置为190MHz、将 CM 配置为95MHz 并使用 INTOSC2作为时钟源。 插件将保持这样的 PLL 配置、用户应用应根据应用的要求配置 PLL。
    C28xx_CPU1:GEL 输出:
    ... DCSM 初始化开始...
    C28xx_CPU1:GEL 输出:
    ... DCSM 初始化完成...
    C28xx_CPU1:GEL 输出:
     CPU2已退出复位并配置为等待引导。
     (如果您以前已连接、可能必须恢复 CPU2才能到达等待引导循环。)
    C28xx_CPU1:GEL 输出:
     CM 已退出复位并配置为等待引导。
     (如果您之前已连接、可能必须恢复 CM 才能到达等待引导循环。)




       //
       //初始化设备时钟和外设
       //
       device_init();

       //
       //引导 CM 内核
       //
    #ifdef _flash
       DEVICE_BOOTCM (BOOTMODE_BOOT_TO_FLASH_SECTOR0);
    #else
       DEVICE_BOOTCM (BOOTMODE_BOOT_TO_S0RAM);
    #endif

       //
       //禁用引脚锁定并启用内部上拉。
       //
       device_initGPIO();

    #ifdef 以太网
       //
       //设置 EnetCLK 以使用 SYSPLL 作为时钟源,并设置
       //时钟分频为2。
       //
       //这样就可以确保 PTP 时钟为100 MHz。 请注意、该值
       //对于 CM 内核来说不是自动/动态已知的,因此需要
       //预先提供给 CM 端代码。
       SYSCTL_setEnetClk (SYSCTL_ENETCLKOUT_DIV_2、SYSCTL_SOURCE_SYSPLL);

       //
       //为以太网配置 GPIO。
       //

       //
       // MDIO 信号
       //
       GPIO_setPinConfig (GPIO_105_ENET_MDIO_CLK);
       GPIO_setPinConfig (GPIO_106_ENET_MDIO_DATA);

       //
       //仅将其用于 RMII 模式
       //GPIO_setPinConfig (GPIO_73_ENET_RMII_CLK);
       //

       //
       //MII 信号
       //
       GPIO_setPinConfig (GPIO_109_ENET_MII_CRS);
       GPIO_setPinConfig (GPIO_110_ENET_MII_COL);

       GPIO_setPinConfig (GPIO_75_ENET_MII_TX_DATA0);
       GPIO_setPinConfig (GPIO_122_ENET_MII_TX_DATA1);
       GPIO_setPinConfig (GPIO_123_ENET_MII_TX_DATA2);
       GPIO_setPinConfig (GPIO_124_ENET_MII_TX_DATA3);

       //
       //仅当必须连接 TX 错误引脚时才使用此选项
       //GPIO_setPinConfig (GPIO_46_ENET_MII_TX_ERR);
       //

       GPIO_setPinConfig (GPIO_118_ENET_MII_TX_EN);

       GPIO_setPinConfig (GPIO_114_ENET_MII_RX_DATA0);
       GPIO_setPinConfig (GPIO_115_ENET_MII_RX_DATA1);
       GPIO_setPinConfig (GPIO_116_ENET_MII_RX_DATA2);
       GPIO_setPinConfig (GPIO_117_ENET_MII_RX_DATA3);
       GPIO_setPinConfig (GPIO_113_ENET_MII_RX_ERR);
       GPIO_setPinConfig (GPIO_112_ENET_MII_RX_DV);

       GPIO_setPinConfig (GPIO_44_ENET_MII_TX_CLK);
       GPIO_setPinConfig (GPIO_111_ENET_MII_RX_CLK);

       //
       //通过掉电引脚使外部 PHY 退出掉电模式
       //
       GPIO_setDirection 模式(108、GPIO_DIR_MODE_OUT);
       GPIO_setPadConfig (108、GPIO_PIN_TYPE_PULLUP);
       GPIO_writePin (108、1);

       //
       //PHY 复位引脚被驱动为高电平、以使外部 PHY 退出复位状态
       //

       GPIO_setDirectionMode (119、GPIO_DIR_MODE_OUT);
       GPIO_setPadConfig (119、GPIO_PIN_TYPE_PULLUP);
       GPIO_writePin (119、1);
    #endif



    C28xx_CPU1:GEL 输出:
    存储器映射初始化完成
    C28xx_CPU1:GEL 输出:
    ... DCSM 初始化开始...
    C28xx_CPU1:GEL 输出:
    ... DCSM 初始化完成...
    C28xx_CPU1:GEL 输出:
     CPU2已退出复位并配置为等待引导。
     (如果您以前已连接、可能必须恢复 CPU2才能到达等待引导循环。)
    C28xx_CPU1:GEL 输出:
     CM 已退出复位并配置为等待引导。
     (如果您之前已连接、可能必须恢复 CM 才能到达等待引导循环。)
    C28xx_CPU1:GEL 输出:
    ... DCSM 初始化开始...
    C28xx_CPU1:GEL 输出:
    ... DCSM 初始化完成...
    C28xx_CPU1:GEL 输出:
     CPU2已退出复位并配置为等待引导。
     (如果您以前已连接、可能必须恢复 CPU2才能到达等待引导循环。)
    C28xx_CPU1:GEL 输出:
     CM 已退出复位并配置为等待引导。
     (如果您之前已连接、可能必须恢复 CM 才能到达等待引导循环。)
    C28xx_CPU1:如果在一个内核上完成擦除/编程(E/P)操作、另一个内核不应从共享 RAM (SR)中执行、因为它们用于 E/P 代码。 可以在两个闪存组都编程后从 SR 开始执行用户代码。
    C28xx_CPU1:只有 CPU1片上闪存插件可以为 CPU1、CPU2和 CM 闪存操作配置时钟。 当调用 CPU1闪存操作时、插件会自动配置 PLL。 但是、如果用户只想执行 CPU2或 CM 闪存操作、而不在当前会话中执行先前的 CPU1操作、则应在调用 CPU2和 CM 闪存操作之前点击 CPU1的片上闪存插件中的"配置时钟"按钮。 使用此按钮时、闪存插件会将 CPU1/CPU2的时钟配置为190MHz、将 CM 配置为95MHz 并使用 INTOSC2作为时钟源。 插件将保持这样的 PLL 配置、用户应用应根据应用的要求配置 PLL。
    Cortex_M4_0:GEL 输出:存储器映射初始化完成
    Cortex_M4_0:GEL 输出:窗口式看门狗已启用
    Cortex_M4_0:GEL 输出:启用 UART0
    Cortex_M4_0:只有 CPU1片上闪存插件可以为 CPU1、CPU2和 CM 闪存操作配置时钟。 当调用 CPU1闪存操作时、插件会自动配置 PLL。 但是、如果用户只想执行 CPU2或 CM 闪存操作、而不在当前会话中执行先前的 CPU1操作、则应在调用 CPU2和 CM 闪存操作之前点击 CPU1的片上闪存插件中的"配置时钟"按钮。 使用此按钮时、闪存插件会将 CPU1/CPU2的时钟配置为190MHz、将 CM 配置为95MHz 并使用 INTOSC2作为时钟源。 插件将保持这样的 PLL 配置、用户应用应根据应用的要求配置 PLL。

    此致、

    乔纳森

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

    Jonathan、

    您可以将  cm_common_config_C28x 与"ethernet"一起用作预定义符号。  

    您必须将、out 从该项目加载到 C28x 上、然后运行它。

    然后、您可以在 ARM 内核上加载并运行 enet_lwip .out 文件。  

    如果您能运行、请告诉我。  

    此致

    西达尔特

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

    尊敬的 Siddharth

    (我现在可以直接发布)


    我已经这么做了

    我打开 cm_common_config_C28x 项目并调试/运行该项目
    然后、我打开 enet_lwip 项目并调试/运行该项目

    我将以太网电缆从 F28388D 以太网端口插入笔记本电脑、并在上面放置静态 IP 192.168.0.3
    尝试 ping 192.168.0.4
    无答案

    有没有一个更简单的运行示例可以使 http GET 或 POST
    获取结果并通过 USB 将其发送到 CPU1和 COM 端口

    我在 F28388D 上不需要服务器
    谢谢

    此致
    洛特菲

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

    尊敬的 Lotfi:

    Enet_lwip 项目必须加载到 CM 内核上。  您可以调试 CM 内核、以检查代码是否已成功执行。  

    您可以停止执行并共享屏幕截图以进一步调试。

    此致

    西达尔特

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

    您好

    我下载了 C2000Ware V4.03而不是3.04 、但结果相同

    这是在 CM 上运行 enet_lwip 时的捕获

    我不确定自己的做法是否正确:

    首先我调试/运行项目

     CM_COMMON_CONFIG_C28x

    然后我 激活 enet_lwip 项目 、并对其进行调试

    我会创建另一个调试配置、因为目标更改

    到目前为止、我在192.168.0.4上没有 ping

    谢谢

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

    您好!  

    构建项目之后、请按照以下步骤启动调试会话

    1.点击"View->TargetConfigurations",选择项目和相应的目标配置文件。 右键点击该配置并点击"Launch Selected configuration"

    2.启动调试会话时,您可以选择内核并连接到内核

     首先连接到"C28xx_CPU1"内核、然后连接到"Cortex_M4_0"内核。

    3.选择"C28xx_CPU1:"内核,然后点击"Run->Load->Load Program",指定从  cm_common_config_C28x 项目生成的.out 文件,并加载它,然后运行它

    4.选择"Cortex_M4_0"内核,然后点击"Run->Load->Load Program",指定从 enet_lwip 项目生成的.out 文件,加载并运行它。

    现在、两个内核均已加载且程序正在运行。 现在、您应该能够获得对 ping 的响应。

    此致

    西达尔特

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

    它终于成功了! 谢谢

    您是否有一个简单的示例 、表明有一个更简单的示例可以运行以便使 http GET 或 POST
    获取结果并通过 USB 将其发送到 CPU1和 COM 端口

    如何将变量数据从 CPU1传输到 CM、反之亦然?

    谢谢

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

    您好!  

    很高兴您启动了工作。  

    这是目前唯一可用的示例。   

    还有一个示例位于 \driverlib\f2838x\examples\C28x_cm\Ethernet、准备 将要发送到 CM 内核的以太网帧
    添加了条消息 RAM。  这不使用任何 TCP/IP 堆栈、只使用以太网驱动程序。

    此致

    西达尔特