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.

[参考译文] CCS/TMS320F28377S:TMS320F28377S 处理器中的串行通信-波特率设置问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/595110/ccs-tms320f28377s-serial-communication-in-tms320f28377s-processor-baud-rate-setting-probleum

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

工具/软件:Code Composer Studio

我正在使用 TMS320F28377S 微控制器。 我尝试使用串行通信。 我使用控制套件 "sci_echoback"中提供的示例代码。 微控制器在 TX 上生成输出,但我认为波特率不匹配(我在 PuTTy 上对此进行测试)。 我使用此代码。这会在 PuTTY 上提供垃圾值。 (PuTTY 设置是正确的、我检查一下、然后通过短接 TX、Rx 引脚 RS232、max3232 用于 TTL 到 RS232转换器)。 波特率 I set 为2400、日期位= 8、奇偶校验=无、停止位= 1、硬件控制=无。我使用 C2000 Launchpad XL、晶振频率= 10MHz、时钟为200MHz。

void main (void)

 InitSysCtrl();

InitGpio();

     GPIO_SetupPinMux (15、GPIO_MUX_CPU1、2);
     GPIO_SetupPinOptions (15、GPIO_INPUT、GPIO_PushPull);
     GPIO_SetupPinMux (14、GPIO_MUX_CPU1、2);
     GPIO_SetupPinOptions (14、GPIO_OUTPUT、GPIO_异 步);


     Dint;

 InitPieCtrl();

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

      InitPieVectTable();

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

 while (1)

 scia_xmit ('s');  us (100);

MS (10);

void scia_fifo_init (void)

   //
   //注意:SCIA 外设的时钟被打开
   //在 InitSysCtrl()函数中
   //
   EALLOW;
 
   SciaRegs.SCIFFTX.ALL = 0xE040;
   SciaRegs.SCIFFRX.ALL = 0x2044;
   SciaRegs.SCIFFCT.all = 0x0;

   返回;


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

   while (ScibRegs.SCIFFTX.bit.TXFFST!= 0){}
   ScibRegs.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_echoback_init (void)

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

   ScibRegs.SCICCR.all = 0x0007;  // 1停止位, 无环回
                                   //无奇偶校验,8个字符位,
                                   //异步模式,空闲线协议
   ScibRegs.SCICTL1.all = 0x0003; //启用 TX、RX、内部 SCICLK、

   //禁用 RX ERR、睡眠、TXWAKE
   //ScibRegs.SCICTL2.all = 0x0003;
   //ScibRegs.SCICTL2.bit.TXINTENA=1;
   //ScibRegs.SCICTL2.bit.RXBKINTENA=1;

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

   ScibRegs.SCICTL1.ALL = 0x0023; //从复位中撤回 SCI



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

    Sam、

    我首先从系统的一端开始、确保一切正常工作。

    您能否验证 GPIO 上的 SCI 输出是否正确? 您可以通过逻辑分析仪或示波器查看信号。

    请告诉我您的调查结果、

    Vince Rodriguez

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    逻辑电平是正确的、我在 DSO 上交叉检查这一点。 我还检查串行电缆和其他事项。 微控制器生成垃圾值,我认为这是由于波特率错误造成的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sam、

    感谢您提供信息。 我只是想澄清一下你说了什么。 逻辑电平是正确的、这意味着您可以看到数字数据脉冲上拉至正确的电压电平。

    微控制器发送的数据在示波器上是否合理?

    如果您认为它只是波特率、您能告诉我您的微控制器时钟速度是多少? (SYSCLK)

    谢谢、

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

    当我使用 C2000 Launchpad XL 进行大厦设计时、晶振频率=10MHz、时钟频率为200MHz。 上面的代码是控制套件中提供的示例代码。

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

    Sam、

    您能否为我提供您的数字信号的示波器快照? 请包含 CLK。

    谢谢、

    Vince Rodriguez

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

    我更改了"e2e.ti.com/.../1947860后给出的编译器设置 、它开始正常工作。

    再次感谢您的重播