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.

[参考译文] TMS320F28035:C2000 MCU 上的 SCI 通信

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/974539/tms320f28035-sci-communication-on-the-c2000-mcu

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

大家好、

一直在 C2000 MCU 上构建一个电机控制器。 我想添加一个功能、以便能够使用 UART 端口(在本例中为 SCI)通信一些信息。 之前我尝试使用 SCI 进行串行编程、在社区的帮助下、我成功地使用串行闪存内核和引导引脚进行了编程。

在查看 TMS320f2803x 的数据表时、我在 PIN27 (SCITXDA)、PN32 (SCIRXDA)和 PIN37 (SCITXDA)、PIN38 (SCIRXDA)上找到了两个 SCI 端口。 据我所知、只有一个 SCI 端口可用、但根据配置的不同、这两组引脚可被使用。 现在、串行编程中已经声明、我们只能使用 PIN27和 PIN32进行串行编程。

我的怀疑:-

1.如果我想在应用程序中使用 SCI 通信,可以使用哪组引脚? 以及该器件的配置。 示例代码建议使用 PIN27和 PIN32。 我可以使用另一组吗? 如何实现?

2.如果有的话,这两组之间有何差异?

谢谢你

此致

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

    您好、Shwetank、

    [引用 user="shw湿 性侧面 vishnu1]1. 如果我想在应用程序中使用 SCI 通信,可以使用哪组引脚? 以及该器件的配置。 示例代码建议使用 PIN27和 PIN32。 我可以使用另一组吗? 如何?[/报价]

    这两组引脚均可用于应用中的 SCI 通信。 如果您执行 SCI 引导模式、则引导模式引脚将具有一些上拉和下拉电阻、具体取决于引导配置。 您必须注意、这不会干扰 SCI 通信。 我认为这不是问题。 该器件应该能够克服您选择的下拉或上拉电阻、但如果确实出现问题、我将使用几个电阻值进行实验、或者使用另一组 SCI 引脚进行通信。 不过、您需要确保的一点是通过电阻器驱动您的引脚、而不是直接对地短路。  

    您可以使用相同的方法为任一选项设置 TX 和 RX 引脚。 查看 C2000Ware 示例中的 InitSciaGpio()函数。 他们在这里注释了与引脚37/38相对应的行、但您可以始终取消注释它们、然后注释引脚27/32对应的行。

    void
    InitSciaGpio()
    {
    EALLOW;
    
    //
    //为所选引脚启用内部上拉
    //用户可以启用或禁用上拉。
    //这将启用指定引脚的上拉电阻。
    //
    GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;//启用 GPIO28的上拉电阻器(SCIRXDA)
    //GpioCtrlRegs.GPAPUD.bit.GPIO7=0;//启用 GPIO7的上拉电阻器(SCIRXDA)
    
    GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0;//启用 GPIO29的上拉电阻器(SCITXDA)
    //GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0;//启用 GPIO12的上拉电阻器(SCITXDA)
    
    //
    //仅将所选引脚的限定条件设置为异步
    默认情况下、//输入与 SYSCLKOUT 同步。
    //这将为所选引脚选择异步(无限定条件)。
    //
    GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3;//异步输入 GPIO28 (SCIRXDA)
    //GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 3;//异步输入 GPIO7 (SCIRXDA)
    
    //
    //使用 GPIO 寄存器配置 SCI-A 引脚
    //这指定可能的 GPIO 引脚
    // be SCI 功能引脚。
    //
    GpioCtrlRegs.GPAMUX2.bit.GPIO28=1;//为 SCIRXDA 配置 GPIO28
    //GpioCtrlRegs.GPAMUX1.bit.GPIO7=2;//为 SCIRXDA 配置 GPIO7
    
    GpioCtrlRegs.GPAMUX2.bit.GPIO29=1;//为 SCITXDA 配置 GPIO29
    //GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 2;//为 SCITXDA 配置 GPIO12
    
    EDIS;
    } 

    [引用 user="shw湿 性侧面 vishnu1">2. 两组之间有何差异(如果有)?

    除了引脚27和32也是 SCI 引导模式引脚之外、使用任一引脚组都没有区别。

    此致、

    Marlyn

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

    感谢 Marlyn、

    是的、我现在只需按照您的建议更改引脚配置、就能够单独使用两个对与 SCI 引脚通信。 现在、我能够在主应用中通信串行编程以及 SCI。

    如果您能为我提供有关 SCI 的更多详细信息,我将不胜感激:-

    1.我可以使用 RX 中断、但是 TX FIFO 中断似乎被卡住、没有响应。 我希望接收两个字节的数据、并根据这些数据、使用端口发送10个字节。 请告诉我是否可以找到相同的文献或示例代码。

    2.示例代码回显是简单的软件服务,中断回送看起来像自检代码。 如果我错了、请纠正我的问题。

    再次感谢。

    此致

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

    您好、Shwetank、

    我很高兴您能够让这两组引脚都适用于您的应用。  

    [引用 user="shw湿 性侧面 vishnu1]1. 我可以使用 RX 中断、但是 TX FIFO 中断似乎被卡住、没有响应。 我希望接收两个字节的数据、并根据这些数据、使用端口发送10个字节。 请告诉我是否可以找到相同的文献或示例代码。

    对于 SCI 模块、我们只有3个示例(按软件) sci_echoback、scia_loopback 和 sci_loopback _interrupts。 您对第2部分的描述正确无误。 但是、在最后两个示例中、可以使用  SCICCR 寄存器中的 LOOPBKENA 位来禁用内部回送模式、这样它就不仅仅是"自检"代码。 就文献而言、我们提供 了技术参考手册(TRM) 、其中详细介绍了 SCI 模块及其所有配置的修改方法。  

    您是说永远不会调用 TXFIFO 中断吗? TX FIFO 的配置方式可能存在问题。 我需要检查  SCIFFTX 寄存 器中的 TXFFST 位、以查看 TXFIFO 中有多少字、以及 SCIFFTX 寄存器中的 TXFFINT 位、并确保调用 TXFIFO 中断。 您可以从 Code Composer Studio 的"Watch Expressions"窗口中读取这些值。

    请创建一个新的线程、描述您所面临的问题以及您的配置是什么样子、我们可以在那里进行调试。 最好将不同的问题分开、以便论坛上的其他人更容易找到。

    此致、

    Marlyn