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.

[FAQ] [参考译文] [常见问题解答]编译器/LAUNCHXL-F28379D:更新为控制卡开发的默认 SCI 回送示例、以便与 Launchpad 配合使用

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/817224/faq-compiler-launchxl-f28379d-updating-default-sci-echoback-example-developed-for-control-card-to-work-with-launchpad

器件型号:LAUNCHXL-F28379D
主题中讨论的其他器件: C2000WARE

工具/软件:TI C/C++编译器

大家好、

我正在尝试 LAUNCHXL-F28379D 上的 SCI 回波示例。 我构建了程序并启动了调试会话。 我根据说明打开了串行端口

-

但我会得到这种垃圾值。

如果能帮助解决这个问题、我将不胜感激。

谢谢你。

C2000培训视频:https://training.ti.com/search-catalog/field_language/ZH-CN?keywords=C2000&start%5Bdate%5D=&end%5Bdate%5D=

C2000培训小程序码

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

    您好 Arindam ,

    波特率似乎未正确设置、导致终端上出现错误数据。

    除非在示例或工程属性中指定、否则 C2000ware 中的示例主要是为 controlCARD 开发的。

    如果要将其与 Launchpad 配合使用,我们需要对项目配置进行一些更新。

    请查看  C2000Ware_2_00_02\device_support\f2837xd\docs\F2837xD_DEV_USER_GUIDE.pdf 中有关"入门和故障排除"的部分

    如果使用 Launchpad、请添加名为"_LAUNCHXL_F28379D"的预定义名称。 这是设置正确的器件计时所必需的。

    此致。

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

    大家好、Meghana、

    感谢您的回答。 正如您所建议的、我注意到未声明预定义名称。 我更改了它并重建了程序并启动了调试会话。 奇怪的是、在调试会话期间、如果我运行程序、我在终端窗口中看不到任何内容(尽管它之前也是一样的)。 如果我复位电路板、我开始观察终端上仍然发生在特定频率~1Hz 时的相同垃圾值。 因此它没有解决问题。

    我有点困惑、因为同一个串行端口用于调试、也用作终端。 现在、这是否会造成任何问题?  此外、一旦我运行代码、我应该看到电路板和终端之间有一个正常工作的串行通信?

    谢谢你。 非常感谢您的帮助。

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

    您好 Arindam ,

    您是否了解了用于终端连接的 GPIO? 我想 launchpad 中使用的是 GPIO 42/43、但基本示例使用了一些其他引脚。

    它们可能需要更新以满足 LaunchPad 所需的更新。

    此致。

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

    大家好、Meghana、

    再次感谢您的回答。 现在、让我来描述一下我想要的硬件功能。 我的方法可能非常错误。  

    对于此程序、我尝试在串行终端软件中写入内容(将传输到 launchpad)(即"X")、并期望在串行监视器中看到相同的"X"(作为电路板的回波) (通过同一串行端口/调试串行接口在电路板和计算机之间建立链接)。 比如 Arduino 串行反馈。  

    我可能是很错误的、因为 SCI 回送可能被写入以将数据传输到其其他串行端口引脚之一(而不是与计算机/调试串行接口通信的引脚)。 在这种情况下、这些串行端口引脚需要使用另一个 USB 串行器件连接到 PC。  

    请您澄清我的理解吗? 我可以使用 这些板执行预期的功能(串行打印为 Arduino)、还是需要将外部硬件连接到将连接到 PC 的 USB 串行转换器?

    我已根据您的建议更改了 GPIO 引脚、但仍然相同。

    非常感谢您的回答。

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

    您好,

    是的、您所描述的是  SCI 回送示例中发生的情况。

    SCI 回送示例发送到 TX,然后有一个内部回送(没有到达 GPIO /没有 PC 连接),然后进入 RX。

    无需外部硬件。

    您能否重申您修改过的所有内容以及修改位置? 如果需要、粘贴代码...

    我抓取了 F28377S launchpad 来尝试该示例、我所做的就是添加预定义并更改 GPIO 引脚多路复用以映射到正确的 sci 引脚。

    此致。

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

    大家好、Meghana、

     

    列出的是我遵循的分步说明-

     

    1. 我卸载了 C2000器件、只是为了重新安装它、并重新安装了示例的新副本。
    2. 我安装了 C2000并导入了 SCI_LOOP_CPU1示例

    3. 我添加了_LAUNCHXL_F28379D 作为预定义符号。

    4. 我更改了引脚 Rx->43和 Tx->42。 可以在图中看到。

    5. 我构建了程序并开始调试。
    6. 我已在 CCS 终端窗口中打开一个终端。

    7. 调试期间观察到 sci 寄存器发生变化、但在按键盘时终端上没有输出刷新板载红色 Rx LED、但终端上没有任何输出。

    8. 然后、我感到沮丧并重置了电路板、在终端上看到了一些垃圾、之后继续发送垃圾。

     整个过程可在视频中看到。

    https://youtu.be/ZMyKtTO7G4c

    感谢你的帮助。 请告诉我出错了。

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

    这是主代码-

    //######################################################################################################################
    //
    //文件:example_2837xDSci_Echoback.c
    //
    //标题:SCI 回送。
    //
    //! addtogroup cpu01_example_list
    //!

    SCI 回送(sci_echoback)


    //!
    //! 此测试通过 SCI-A 端口接收和回波数据。
    //!
    //! PC 应用程序“超级终端”或其它终端
    //! 例如"putty"可用于查看来自 SCI 和的数据
    //! 以向 SCI 发送信息。 接收到的字符
    //! 将被发送回主机。
    //!
    //! b 正在运行\b 应用程序
    //! -#配置超级终端或其它终端、如 PuTTy:
    //!
    //! 对于超级终端、您可以使用随附的超级终端配置
    //! 文件 SCI_96.HT。
    //! 超级终端中加载此配置
    //! -#打开超级终端
    //! -#转至文件->打开
    //! -#浏览至项目位置和
    //! 选择 SCI_96.HT 文件。
    //! -#检查 COM 端口。
    //! 当前已为 COM1设置配置文件。
    //! 如果不正确,请断开连接(呼叫->断开连接)
    //! 打开"File-Properties"对话框并选择正确的 COM 端口。
    //! -#连接超级终端呼叫->呼叫
    //! 然后启动2837xD SCI 回送程序执行。
    //! -#该程序将打印一条问候语,然后请您回答
    //! 输入一个字符、它将回显到超级终端。
    //!
    //! 注意:如果无法打开.HT 文件,或者您正在使用
    //! 另一个终端、您可以使用以下设置打开 COM 端口
    //! -找到正确的 COM 端口
    //! -每秒位数= 9600
    //! -日期位= 8
    //! -奇偶校验=无
    //! -停止位= 1
    //! -硬件控制=无
    //!
    //! b 监视\b 变量\n
    //! - LoopCount -发送的字符数
    //!
    //! b 外部连接\n
    //! 通过收发器和电缆将 SCI-A 端口连接到 PC。
    //! - GPIO28为 SCI_A-RXD (连接到串行 DB9电缆的引脚3、PC-TX)
    //! - GPIO29为 SCI_A-TXD (通过串行 DB9电缆连接到 PIN2、PC-RX)
    //!
    //
    //######################################################################################################################
    //$TI 发行版:F2837xD 支持库 v3.05.00.00 $
    //$Release Date:Thu OCT 18 15:48:42 CDT 2018 $
    //版权所有:
    //版权所有(C) 2013-2018 Texas Instruments Incorporated - http://www.ti.com/
    //
    //以源代码和二进制形式重新分发和使用,有无
    //如果满足以下条件,则允许进行修改
    //满足:
    //
    //重新分发源代码必须保留上述版权
    //注意、此条件列表和以下免责声明。
    //
    //二进制形式的重新分发必须复制上述版权
    //注意、中的条件列表和以下免责声明
    //随提供的文档和/或其他材料
    //分布。
    //
    //德州仪器公司的名称和的名称都不是
    //其贡献者可用于认可或推广衍生产品
    //未经特定的事先书面许可,从该软件下载。
    //
    //本软件由版权所有者和作者提供
    //“原样”以及任何明示或暗示的保证,包括但不包括
    //限于对适销性和适用性的暗示保证
    //一个特定的目的是免责的。 在任何情况下、版权均不得
    //所有者或贡献者应对任何直接、间接、偶然、
    //特殊、典型或必然的损害(包括但不包括)
    //仅限于采购替代货物或服务;
    //数据或利润;或业务中断)
    //责任理论,无论是合同责任、严格责任还是侵权行为
    //(包括疏忽或其他)以任何方式因使用而产生
    //此软件,即使已被告知可能会发生此类损坏。
    //$
    //######################################################################################################################

    //
    //包含的文件
    //
    #include "F28x_Project.h"

    //
    //全局
    //
    uint16环计数;

    //
    //函数原型
    //
    void scia_echoback_init (void);
    void scia_fifo_init (void);
    void scia_xmit (int a);
    void scia_msg (char * msg);

    //
    //主函
    //
    void main (void)

    uint16 ReceivedChar;
    char *msg;

    //
    //步骤1. 初始化系统控制:
    // PLL、安全装置、启用外设时钟
    //此示例函数位于 F2837xD_SYSCTRL.c 文件中。
    //
    InitSysCtrl();

    //
    //步骤2. 初始化 GPIO:
    //此示例函数位于 F2837xD_GPIO.c 文件和中
    //说明了如何将 GPIO 设置为其默认状态。
    //
    InitGpio();

    //
    //对于这个示例、只初始化针对 SCI-A 端口的引脚。
    // GPIO_SetupPinMux ()-设置 GPxMUX1/2和 GPyMUX1/2寄存器位
    // GPIO_SetupPinOptions ()-设置 GPIO 的方向和配置
    //这些函数可在 F2837xD_GPIO.c 文件中找到。
    //
    GPIO_SetupPinMux (43、GPIO_MUX_CPU1、1);
    GPIO_SetupPinOptions (43、GPIO_INPUT、GPIO_PushPull);
    GPIO_SetupPinMux (42、GPIO_MUX_CPU1、1);
    GPIO_SetupPinOptions (42、GPIO_output、GPIO_Async);

    //
    //步骤3. 清除所有_interrupts 并初始化 PIE 矢量表:
    //禁用 CPU __interrupts
    //
    Dint;

    //
    //将 PIE 控制寄存器初始化为默认状态。
    //默认状态为禁用所有 PIE __interrupts 和标志
    //被清除。
    //此函数位于 F2837xD_PIECTRL.c 文件中。
    //
    InitPieCtrl();

    //
    //禁用 CPU __interrupts 并清除所有 CPU __interrupt 标志:
    //
    IER = 0x0000;
    IFR = 0x0000;

    //
    //使用指向 shell 中断的指针初始化 PIE 矢量表
    //服务例程(ISR)。
    //这将填充整个表,即使是__interrupt
    //在本例中未使用。 这对于调试很有用。
    //可以在 F2837xD_DefaultIsr.c 中找到 shell ISR 例程
    //此函数可在 F2837xD_PieVect.c 中找到
    //
    InitPieVectTable();

    //
    //步骤4. 用户特定代码:
    //
    LoopCount = 0;

    scia_fifo_init();//初始化 SCI FIFO
    scia_echoback_init ();//初始化用于 echoback 的 SCI

    MSG ="\r\n\n\nHello World!\0";
    scia_msg (msg);

    MSG ="\r\n 您将输入一个字符,DSP 将回显它! \n\n";
    scia_msg (msg);

    for (;;)

    MSG ="\r\n 输入字符:\0";
    scia_msg (msg);

    //
    //等待 inc 字符
    //
    while (SciaRegs.SCIFFRX.bit.RXFFST ==0){}//等待空状态

    //
    //获取字符
    //
    ReceivedChar = SciaRegs.SCIRXBUF.ALL;

    //
    //回显字符
    //
    MSG ="您已发送:\0";
    scia_msg (msg);
    scia_xmit (ReceivedChar);

    LoopCount++;

    //
    // scia_echoback_init -测试1、SCIA DLB、8位字、波特率0x000F、
    //默认,1个停止位,无奇偶校验
    //
    void scia_echoback_init ()

    //
    //注意:SCIA 外设的时钟被打开
    //在 InitSysCtrl()函数中
    //

    SciaRegs.SCICCR.all = 0x0007;// 1停止位,无回路
    //无奇偶校验,8个字符位,
    //异步模式,空闲线协议
    SciaRegs.SCICTL1.all = 0x0003;//启用 TX、RX、内部 SCICLK、
    //禁用 RX ERR、睡眠、TXWAKE
    SciaRegs.SCICTL2.all = 0x0003;
    SciaRegs.SCICTL2.bit.TXINTENA=1;
    SciaRegs.SCICTL2.bit.RXBKINTENA=1;

    //
    // SCIA 为9600波特
    //@LSPCLK = 50MHz (200MHz SYSCLK) HBAUD = 0x02且 LBAUD = 0x8B。
    //@LSPCLK = 30MHz (120MHz SYSCLK) HBAUD = 0x01且 LBAUD = 0x86。
    //
    SciaRegs.SCIHBAUD.ALL = 0x0002;
    SciaRegs.SCILBAUD.ALL = 0x008B;

    SciaRegs.SCICTL1.all = 0x0023;//从复位中撤回 SCI

    //
    // scia_xmit -从 SCI 发送一个字符
    //
    void scia_xmit (int a)

    while (SciaRegs.SCIFFTX.bit.TXFFST!= 0){}
    SciaRegs.SCITXBUF.ALL =A;

    //
    // scia_msg -通过 SCIA 发送消息
    //
    void scia_msg (char * msg)

    int i;
    I = 0;
    while (msg[i]!='\0')

    scia_xmit (msg[i]);
    i++;

    //
    // scia_fifo_init -初始化 SCI FIFO
    //
    void scia_fifo_init()

    SciaRegs.SCIFFTX.ALL = 0xE040;
    SciaRegs.SCIFFRX.ALL = 0x2044;
    SciaRegs.SCIFFCT.all = 0x0;

    //
    //文件结束
    //

    我还添加了项目 file.e2e.ti.com/.../sci_5F00_echoback.zip

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

    您好 Arindam ,

    我相信 SCI 的引脚复用配置不正确。 休息一下看起来不错。

    修改自:  

    GPIO_SetupPinMux (43、GPIO_MUX_CPU1、1);
    GPIO_SetupPinOptions (43、GPIO_INPUT、GPIO_PushPull);
    GPIO_SetupPinMux (42、GPIO_MUX_CPU1、1);
    GPIO_SetupPinOptions (42、GPIO_output、GPIO_Async);

    至:

    GPIO_SetupPinMux (43、GPIO_MUX_CPU1、0xF);
    GPIO_SetupPinOptions (43、GPIO_INPUT、GPIO_PushPull);
    GPIO_SetupPinMux (42、GPIO_MUX_CPU1、0xF);
    GPIO_SetupPinOptions (42、GPIO_output、GPIO_Async);

    检查 TRM 表。

    此致。

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

    尊敬的 Meghana:

    非常感谢您的回答。 我的问题得到了解决、再次感谢您。

    如果可能、请参阅文档/参考、我可以在其中找到该 GPIO 复用设置以及如何解释它们。 我有一本技术参考手册、与这个手册略有不同。 我还很难解释多路复用的原因、例如从0x01 (0b0001)到0x0F (0b1111)的原因。

    谢谢。

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

    您好 Arindam,  

    很高兴听到您让它正常工作。 实际上,我是指以前版本的 TRM。

    请参阅表8-7。 下面 TRM 的 GPIO 复用引脚。

    http://www.ti.com/lit/ug/spruhm8h/spruhm8h.pdf

     GPIO 索引是从0x1更新为0xF 的值。

    这在本质上处理  了该多路复用所需的 GPyGMUXn 和 GPyMUXn 更新。

    有关如何使用 API 的详细信息、请参阅相应源文件中的 API。

    C2000Ware\device_support\f2837xd\common\source

    此致。

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

    感谢 Meghana 的帮助。