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.

[参考译文] TMS570LS1224:TMS570LS12x 和 PC 之间的 RS232通信问题

Guru**** 2535590 points
Other Parts Discussed in Thread: MAX3232E

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/900220/tms570ls1224-issue-of-rs232-communication-between-tms570ls12x-and-pc

器件型号:TMS570LS1224

您好!

如果我做了几个姿势、我会感到抱歉。  我正在使用 TMS570LS12x LaunchPad 对电路板进行测试。  我在 TMS570LS12x 中运行的程序无法正确接收来自 PC 的数据。 请帮助我找出问题或遗漏的内容。

有两个奇数点。
第一个是按 sciIsIdleDetected 的函数阻止的主函数、用于等待 SCI 的空闲状态、如下所示。


另一个是在我禁用 sciIsIdleDetected 函数等待空闲的过程时接收工作正常的 ISR、但通过断点观察到的接收数据不正确  、如下所示。


以下是我如何为测试创建环境。
首先、通过了 TMS570LS12x 中数字自环路模式下的 UART 通信测试。
然后、我将 LINSCI RX 和 TMS570LS12x 的 TX 引脚连接到  电路板中 MAX3232E 的 ROUT1和 DIN1引脚。 我也是
已连接 DB9连接器的引脚2和3、用于回路、回路由  电路板中的 MAX3232E 驱动。 进行测试
通过自循环模式。 该器件的照片、原理图、布局以及 HalCogen 中的 CONFIG 如下所示。

最后、我使用 USB 转 RS232转换器连接计算机和电路板。 测试数据是在中手动发送的
串行控制台应用程序。 连接和配置如下所示。

此致
Datïan μ A

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

    您好、Tatian、

    在 SCI 发送器发送数据后、SCI 不空闲。 您的 SCI 发送器是否在接收器检测到总线(空闲检查)之前传输数据?

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

    您好 QJ、

    很高兴再次见到你。 我的 SCI 发送器在接收器检测到总线之前未发送数据。 唯一的传输是在主函数的循环中。

    int main (void)
    {
    /*用户代码 begin (3)*/
    int i=0;
    
    gioInit();
    mibspiInit();
    sciInit();
    
    while (sciIsIdleDetected (sciREG);//scilinREG));
    _enable_IRQ ();
    
    sciReceive (sciREG、RSIZE1、(uint8 *)&RX_Text[0]);
    
    rtiInit();
    /*启用 RTI 比较0通知*/
    rtiEnableNotification (rtiNOTIFICATION_COMPARE0);
    /*开始计数器*/
    rtiStartCounter (rtiCOUNTER_BLOCK0);
    
    while (1)
    {
    if (command==1)
    {
    sciSend (sciREG、TsIZE1、&text1[0]);
    gioToggleBit (gioPORTB、2);
    命令=0;
    }
    }/*
    用户代码结束*/
    
    返回0;
    }
    
    //用户代码开始(4)*/
    void rtiNotification (uint32通知)
    {
    command=1;
    }
    
    void sciNotification (sciBASE-t * sci、uint32标志)
    {
    int i=0;
    
    if (RX_text[0])=0x55
    &RX_text[1]=0x0a
    &RX_TEX[2]= 0x40
    &RX_text[3]=0x01
    &RX_text[4]=0x00
    &RX_text[5]= 0x04
    &RX_text[6]= 0x33
    &RX_TEX[7]=0xbb)
    {
    gioToggleBit (mibspiPORT3、PIN_CLK);//pin7@J2、0:PIN2@J3、表示接收正确
    
    for (i=0;i 
    

    此致

    Datïan μ A

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

     您好 Datïan、

    sciInit()(SCI moudle 为软件复位)后、SCI 应进入空闲状态。 您的电线设置很容易受到噪声干扰。 如果 SCIRX 被下拉超过4个 SCI 波特时钟周期、SCI 总线将被视为运行模式而非空闲模式。

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

    您好 QJ、

    非常感谢您提供的信息。 这正是我所要说的。 您能给我一些建议来减轻噪音的影响吗?

    此致

    Datïan μ A

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

    您好、Tatian、

    在 SCI 模块被初始化后、探测 SCI 总线以查看总线是否被下拉。 当空闲时、SCI TX 和 RX 都处于逻辑高电平。  

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

    您好 QJ、

    非常感谢。 我将对它们进行探测。

    此致

    Datïan μ A

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

    您好 QJ、

    非常感谢您提出的探测 SCI 总线的建议。 这确实有助于我确定为什么 TM570LS12x 的 launchpad 无法从 PC 应用接收数据。 原因是 DTE 和 DCE 之间的电缆 RxD 和 TXD 应绞合。

    这是我预期的结果。

    此致

    Datïan μ A