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.

[参考译文] TMS320F28377S:SCI ISN#39;T 正常工作

Guru**** 2482155 points
Other Parts Discussed in Thread: C2000WARE, TMS320F28377S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/597068/tms320f28377s-sci-isn-t-properly-working

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

你好!

  我面临的问题是 SCI GPIO 输出中有数字信号,但在 LCD 中监控我需要的任何数字和值。  每个人都能帮助我 吗?   以下是 SCI 寄存器:

DELAY_US (10); // DELAY_US (1000);
   SciaRegs.SCICCR.all                = 0x0007;  // 1停止位、 无环回、无奇偶校验、8个字符位、异步模式、空闲线协议
   SciaRegs.SCICTL1.all               = 0x0003; //启用 TX、RX、内部 SCICLK、禁用 RX ERR、 睡眠、TXWAKE
   SciaRegs.SCICTL2.all               = 0x0003;//禁用 RxErr、睡眠、TX 唤醒、禁用 Rx 中断、 TX 中断

   SciaRegs.SCIHBAUD.bit.baud = 0x0000; // 19200 baud @LSPCLK = 22.5MHz。
   SciaRegs.SCILBAUD.bit.baud = 0x0092; // BRR =(LSPCLK/(SCI 异步波特率* 8))-1、 SCI 异步波特率=(LSPCLK/(BRR+1)*8)
   SciaRegs.SCICTL1.all                = 0x0023;    //从复位中撤回 SCI

提前感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    GPIO 包括:
    GpioCtrlRegs.GPCPUD.bit.GPIO84 = 0;//启用 GPIO84上的上拉
    GpioCtrlRegs.GPCGMUX2.bit.GPIO84 = 1;// GPIO84 =外设输出
    GpioCtrlRegs.GPCMUX2.bit.GPIO84 = 1;// GPIO84 = SCI TXDA
    GpioCtrlRegs.GPCDIR.bit.GPIO84 = 1;// GPIO84 =输出

    GpioCtrlRegs.GPCPUD.bit.GPIO85 = 0;//启用 GPIO85上的上拉
    GpioCtrlRegs.GPCGMUX2.bit.GPIO85 = 1;// GPIO85 = SCI RXDA
    GpioCtrlRegs.GPCMUX2.bit.GPIO85 = 1;// GPIO84 = SCI RXDA
    GpioCtrlRegs.GPCDIR.bit.GPIO85 = 0;// GPIO85 =输入
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有人可以如何帮助我?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请考虑在 C2000Ware 中运行 sci 示例以获得帮助和正确的 SCI 初始化。

    您能否在 TX 引脚上放置一个示波器来确认是否正在发送数据?

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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它是监控器上的 SCI-A TXDA 信号...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否成功构建并运行了 sci echoback 示例?

    此数据是原始数据位还是 ASCII 字符? 数据是否符合您的期望? 它是否正常工作?

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

     你好!  感谢 你的回复 Sal Pezzino!

    我已经在2.1s 和2.0,1.91版本的28377s 中成功构建了 sci echoback 示例,但 TXDA OUT 上没有数据流。  

     下面的数据视图 具有 ASCII 字符。  我只想在 LCD 监视器上使用 SCI 数据格式的 ADC 结果(电压传感器值)。数据不是我所期望的。

    所以,这就是我一直关注的原因。   

    提前感谢    您!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    来自 ADC 的原始数据不会从 SCI 输出、并以这种方式显示为 ASCII 值。 或许 SCI 输出的内容是正确的、但作为一个 ASCII 值、它看起来是不正确的。 您可以确认吗?

    您期望什么值?您收到什么? 十六进制值和 ASCII 字符是什么?

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

    我所期望的值只是传感器值,ADCRESULT 值..... 代码如下:

     void out_Display (void)
          {
       开关(LCD_MODE)
      //   while (1)
       {案例0:
          LCD_LINE_COUNT=0;
          GLCD_TEXT_LOC (0、LCD_LINE_COUNT);
          GLcd_out ("AD0:"、6);
          ValuetoAsii ((long) ad_result_a[0]、4、0、cValue、0);
          GLcd_out (cValue、4);

          GLcd_out (" ad1:"、6);
          ValuetoAsii ((long) ad_result_a[1]、4、0、cValue、0);
          GLcd_out (cValue、4);

          GLcd_out (" ad2:"、6);
          ValuetoAsii ((long) ad_result_a[2]、4、0、cValue、0);
          GLcd_out (cValue、4);

          GLcd_out (" ad3:"、6);
          ValuetoAsii ((long) ad_result_a[3]、4、0、cValue、0);
          GLcd_out (cValue、4);

              //行2显示
          LCD_LINE_COUNT++;
          GLCD_TEXT_LOC (0、LCD_LINE_COUNT);
          GLcd_out ("AD4:"、6);
          ValuetoAsii ((long) ad_result_a[4]、4、0、cValue、0);
          GLcd_out (cValue、4);

          GLcd_out (" ad5:"、6);
          ValuetoAsii ((long) ad_result_a[5]、4、0、cValue、0);
          GLcd_out (cValue、4);

          GLcd_out (" ad6:"、6);
          ValuetoAsii ((long) ad_result_a[6]、4、0、cValue、0);
          GLcd_out (cValue、4);

          GLcd_out (" ad7:"、6);
          ValuetoAsii ((long) ad_result_a[7]、4、0、cValue、0);
          GLcd_out (cValue、4);

          //行3显示
          LCD_LINE_COUNT++;
          GLCD_TEXT_LOC (0、LCD_LINE_COUNT);
          GLcd_out ("AD8:"、5);
          ValuetoAsii ((long) ad_result_a[8]、4、0、cValue、0);
          GLcd_out (cValue、4);

          GLcd_out (" ad9:"、6);
          ValuetoAsii ((long) ad_result_a[9]、4、0、cValue、0);
          GLcd_out (cValue、4);

          GLcd_out (" AD10:"、6);
          ValuetoAsii ((long) ad_result_a[10]、4、0、cValue、0);
          GLcd_out (cValue、4);

          GLcd_out (" AD11:"、6);
          ValuetoAsii ((long) ad_result_a[11]、4、0、cValue、0);
          GLcd_out (cValue、4);
          中断;
     }}

    void ad_a1_sensing (void)
       {
       AD_RESULT_A[0]= AdcaResultRegs.ADCRESULT0; // CPU 内部 TEMP。 感应值
       AD_RESULT_A[1]= AdcaResultRegs.ADCRESULT1; //  
        AD_RESULT_A[2]= AdcaResultRegs.ADCRESULT2; //  
        AD_RESULT_A[3]= AdcaResultRegs.ADCRESULT3; //  
        AD_RESULT_A[4]= AdcaResultRegs.ADCRESULT4; //  
        AD_RESULT_A[5]= AdcaResultRegs.ADCRESULT5; //

       AD_RESULT_B[0]= AdcbResultRegs.ADCRESULT0; //  
        AD_RESULSE_B[1]= AdcbResultRegs.ADCRESULT1; //  
        AD_RESULSE_B[2]= AdcbResultRegs.ADCRESULT2; //  
        AD_RESULSE_B[3]= AdcbResultRegs.ADCRESULT3; //

     AD_RESULSE_C[2]= AdcResultRegs.ADCRESULT2;//  
        AD_RESULSE_C[3]= AdcResultRegs.ADCRESULT3;//  
        AD_RESULT_C[4]= AdccResultRegs.ADCRESULT4;//

       AD_RESULT_D[0]= AdcdResultRegs.ADCRESULT0;//  
        AD_RESULT_D[1]= AdcdResultRegs.ADCRESULT1;//  
        AD_RESULT_D[2]= AdcdResultRegs.ADCRESULT2;//
        AD_RESULT_D[3]= AdcdResultRegs.ADCRESULT3;//

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想知道只有一个男人回答我的问题。 没有一位 TI 员工未给予任何关注。
    这是正常的吗? 或者所有 TI 员工都很忙?

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

    许多工程师会监控论坛帖子。 但它们会分配给特定的人员。 我们尽最大努力快速做出响应。 我们似乎能够在每篇帖子发布后的24小时内回复。 这很好。

    我仍然不清楚你的问题是什么。 MCU 和 SCI 的运行方式似乎符合预期。 如果您对 MCU 或提供的软件有具体问题、请向他们咨询。 如果您对 MCU 的运行有具体问题、请向他们提问。 但是、我们无法调试您的代码、尤其是很少有信息。

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

    e2e.ti.com/.../LCD_5F00_monitor.zipThe问题是:SCI 连接不能正常工作,简单地说。 我想通过 SCI 连接在 LCD 监视器上查看 ADC 传感器值(十进制格式)。 为此,我使用 ASCII 格式更改。 我使用了许多示例,包括 sci_echoback、sci_loopback_interrupts,但任何示例源代码都无法正常工作。 但是在28335和28069 DSP 的情况下,SCI 连接也可以正常工作,没有问题。 我已简要阅读 TMS320F28377S 技术手册参考指南中的 SCI 部件。 我执行的所有编程都与本指南相同,但做了任何更改。

    下图是28027 DSP 的 LCD 显示器视图。 因此,我希望视图来自28377s DSP。 有可能吗?
    TMS320F28377S 是什么芯片?

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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    下面是 zip。 通过28027 DSP 像往常一样对 LCD 显示器进行设置的文件。 请注意,当您看到时,我希望看到的所有值都将正常显示。 …

    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可能会对 SCI 的波特率产生问题。 F28337x 可在200MHz 下运行。

    您可以配置 XCLKOUT 来查看器件的 SYSCLK 频率是多少。 F2802x 的运行频率与 F28337不同、因此您的 HBAUD 和 LBAUD 寄存器将需要不同。

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

    是的,我知道大多数 DSP 都有不同的 SYSCLK,例如28335有150 MHz,28069有90 MHz,28027有60 MHz。 在我的示例中,所有三种类型的 DSP 都运行良好,在 LCD 监视器中有很好的视图。
    今天我已经调节了波特率,但液晶显示器上仍然有未知的画面。 但我想知道当我们说波特率是9600时,我们的意思是发射频率,对吧? 换句话说,在示波器中,我们必须查看具有9600 Hz 频率的 TXDA 信号。 如果是这样,在我的示例中,当我使用波特率= 9600时,有许多频率从低频率到4.8kHz。 我认为这是不正确的。 哪种波特率是传输数据的最佳值? 技术手册中、参考 指南有5个值,表示所有值都是理想值... 如果是这样,为什么我的源代码中的速率不起作用?


    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    9600是一个常见的波特率。 115200。

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    所以,您的意思是错误 TXDA 信号的主要原因是波特率错误,对吧? 我应该使用9600或115200?

    谢谢!