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.

[参考译文] TMS320F28335:使用 DB9引脚连接器(使用 TTL 转换器)在 TMS320F28335器件和外部器件之间进行 SCI 通信、从而通过 LabView 工具进行 RS232通信。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1415383/tms320f28335-sci-communication-in-between-tms320f28335-device-and-external-device-using-db9-pin-connector-using-ttl-converter-for-rs232-communication-with-labview-tool

器件型号:TMS320F28335
Thread 中讨论的其他器件:C2000WARE

工具与软件:

尊敬的 TI 团队:

我希望这封邮件能让您满意。

我在做 硬件连接如下所示:

F28335TX 至 RS232转换器 RX 至(连接的 DB9连接器)、使用 TTL 转换器将 TTL 输出转换为 RS232 DB9引脚连接器。

F28335 RX 到 RS232转换器 TX 到(连接的 DB9连接器)、使用 TTL 转换器将 TTL 输出转换为 RS232 DB9引脚连接器。

从 F28335到 外部器件 RS232 (LabView) 的数据发送正在正确执行。 但是、 由 外部器件 RS232 (LabView)发送的 F28335数据接收未执行。

已针对内部环路和外部环路(通过将 TX 线路连接到 RX 线路)进行测试、正在正确执行。

查询:

1.您能告诉我,所有的配置都需要完成吗?

2.如果我的 SCI 数据接收器和配置功能代码不正确、请更正 X 中所附的代码吗?

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
* SCI.c
*
* Created on: Aug 27, 2024
* Author: CG00844381
*/
#include "Mcu1_Device.h"
#include "SCI.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
UNS8 receivedData[4] = { 0 };
UNS16 rx_loop = 0;
void main()
{
/* Initialize system */
InitSysCtrl();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

谢谢、此致、

Chaya

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

    尊敬的 Chaya:

    我建议尝试确定是哪个器件导致了问题。 您可以调整 SCI RX 引脚上的信号并确认进入  F28335的 UART 信号是否 正确吗?  

    您第一眼看到代码就会希望直接读取 SCI_RXBUF ()中的 SCI_Rx ()、而不是 SCIRXEMU 寄存器(因为只有 CCS 才应该使用它来读取寄存器视图的 RX 内容)。 另一个可能值得检查的是 SCIRXST 寄存器中错误标志的状态。 用户可以在此条件下添加断点、并查看正在设置的错误标志、以帮助评估问题是什么。

    此致、

    Delaney

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

    您好!  

    USB 到 RS232  

    这里我附加的波形55数据是这样的:

    TI 板到 TTL 转换器

     我在此附加55数据的波形、如下所示:

    1.我们发现 USB 到 RS232转换器不符合 RS232电气规范,电压电平始终为正。  

    2.虽然我们的转换器 TI 在连接时符合 RS232协议,但我们发现数据交换没有正常进行,这可能是由于电压电平不兼容造成的问题。

    3.您有任何改进建议吗?  

    谢谢、此致

    Chaya  

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

    尊敬的 Chaya:

    为了正确解读 F2833x 接收到的数据、它必须遵循 UART 标准协议、具有~3.3V 的逻辑高电压电平和~0V 的逻辑低电压电平。 您将必须使用符合这些规格的收发器、或为信号添加某种电平转换器以将其转换为正确的电压。

    此致、

    Delaney

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

    您好!  

    我们知道 TI 电路板具有 RS232所需的所有转换和转换功能。 J3、可兼容 RS -232。   

    我们尝试了使用两个 TTL 转换器连接两个 TI 电路板、这时我们成功地在两个电路板之间建立了通信、而没有丢失数据。  

    现在、我们使用 RS -232兼容 J3标签将 TI 板连接至 USB RS USB-232。 此 USB RS -232连接到 LabVIEW。

    从 F28335到 外部器件 RS232  (LabView) 的数据发送正在正确执行。  

    但是、  外部器件 RS232 (LabView)发送的 F28335数据接收无法正常进行。 但我们能够在 F28335中通过 RS232 (LabView)传输的 J3标签的 RX 引脚中正确地看到波形。 当我们尝试在控制台中打印数据时、它不会打印预期数据、数据重复或丢失。  

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void Mcu1_Arinc429_Configuration()
    {
    SciaRegs.SCICCR.all = 0x0027;
    SciaRegs.SCICTL1.all = 0x0067;
    SciaRegs.SCICTL2.all = 0x0003;
    SciaRegs.SCIHBAUD = 0x0000;
    SciaRegs.SCILBAUD = 0x0079;
    SciaRegs.SCIFFTX.all = 0x0000;
    SciaRegs.SCIFFRX.all = 0x0000;
    SciaRegs.SCIFFRX.all = 0x0064;
    SciaRegs.SCIFFRX.bit.RXFFIL = 0x1F;
    SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
    SciaRegs.SCIPRI.bit.FREE = 1;
    SciaRegs.SCIPRI.bit.SOFT = 0;
    }
    void Receiver()
    {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    请向我们建议我们需要做些什么来改进。  

    谢谢、此致、

    Chaya

     

     

      

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

    尊敬的 Chaya:

    我有几个澄清问题:

    从 F28335的角度来看、问题在于接收数据、对吗?

    看看你的代码, 你的  Receiver()函数是否在你的主/后台循环中连续调用?

    该函数中的逻辑也可能会导致一些问题;您是否知道主机器件(LabView) 一次将发送一个字符的数据?

    当我们尝试在控制台中打印数据时、它没有打印预期数据、数据重复或丢失。  [报价]

    您说的是 PC 上的 COM 端口吗? 或通过 LabView 程序打印到控制台、即从 F28335传输的数据? 无论哪种方式、我都不建议这样调试、因为您已经在为您的应用使用传输线。 您能否通过 在"Expressions"视图中查看 Received_Data_ 3872尝试连接调试器并在 CCS 中查看接收到的数据? (注意:确保打开了持续刷新)

    此致、

    Delaney

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

    您好!  

    是的、问题在于从 F28335角度接收数据。  

    是的、我们在 main 中连续调用接收器函数。  

    主机器件将一次发送1个字节。  

    我们尝试在 CCS 控制台中将从主机(LabView)接收到的数据打印到 F28335。 我们尝试仅在 CCS 控制台中打印此 Received_Data_ 3079。  

    此外、当数据流在 SCI 上的 RXD 输入为0-3.3V TTL 的情况下传输时、我们只能接收一个字节的数据  

     

    谢谢、此致、

    Chaya

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

    尊敬的 Chaya:

    由于您在非 FIFO 模式下运行、因此无需检查 SCIFFRX。 RXFFST 域。 您是否可以尝试在 while ()循环中删除此检查? 您的代码应如下所示:

    void Receiver()
    {
    do
    {

    }while((SciaRegs.SCIRXST.bit.RXRDY == 0));

    Received_Data_g = SciaRegs.SCIRXBUF.bit.RXDT;
    for(cd=0;cd<=1000;cd++)
    {

    }

    }

    另外、您是否可以尝试向从 RX 缓冲区中读取的 Received_Data_所在的行添加一个断点、并在 CCS 监视窗口中查看该行? 如果使用此方法仍然发现某些数据丢失、可能是由于出现了帧或中断检测错误、可以使用 SCIRXST 寄存器中的标志进行检查。

    此致、

    Delaney

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

    您好!  

    是的、我们尝试了检查 SCIRXST.bit.RXRDY 字段。 即使我们这样尝试也是一样的。 数据丢失了。  

    您可以查看我们的 SCI 配置。 配置是否正确、是否缺少任何位配置。 您能不能回顾一下我们的配置。  

    空 Mcu1_Arinc429_Configuration ()

    SciaRegs.SCICCR.all = 0x0027;
    SciaRegs.SCICTL1.all = 0x0067;
    SciaRegs.SCICTL2.all = 0x0003;
    SciaRegs。 SCIHBAUD = 0x0000;
    SciaRegs。 SCILBAUD = 0x0079;
    SciaRegs.SCIFFTX.ALL = 0x0000;
    SciaRegs.SCIFFRX.ALL = 0x0000;
    SciaRegs.SCIFFRX.ALL = 0x0064;
    SciaRegs.SCIFFRX.bit.RXFFIL = 0x1F;
    SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
    SciaRegs.SCIPRI.bit.FREE = 1;
    SciaRegs.SCIPRI.bit.soft = 0;

    }

    谢谢、此致、  

    Chaya  

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

    尊敬的 Chaya:

    您能否参考 C2000ware 中的一个 SCI 示例来比较您的位配置? 我自己看不出配置有任何明显的错误。

    您是否尝试过用于调试的断点方法?

    您还可以尝试在调试器中查看 RXST 寄存器吗? 接收到的数据可能存在帧或中断检测错误。

    此外、即使您一次发送一个字节、两个字节之间的线路上是否有任何延迟?

    此致、

    Delaney