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.

[参考译文] TMS320F28069M:UART 未正确发送字符

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/586306/tms320f28069m-uart-not-sending-characters-properly

器件型号:TMS320F28069M

您好!

从 F28069M Launchpad 通过 UART 向我的 PC 发送任何内容时出现问题。 当我用我的代码发送它时、终端上会出现随机字符、这似乎表明波特率是错误的(当我在另一个终端中查看时、我还可以看到我的计算机接收到的数字完全错误)。 但是、当我运行示例 UART 程序(example_2806xSci_Echoback.c)(其 SCI 配置设置与我的配置设置完全相同)时、它可以完美地工作。  

我已经尝试将示例中的所有函数复制到我的代码中、并注释掉了我的所有其他代码、以便它基本上与示例相同、但仍然不起作用。 当我在加载 TX 缓冲器时暂停它时、我可以看到加载了正确的字符、但在另一端接收到的字符完全错误。

两者之间的唯一区别是 CLA 是在我的代码中设置的(不是初始化 CLA 或执行任何操作、而是在程序中存在 CLA 代码、并且已为 CLA 分配了程序空间)

它可能无法正常工作的原因是什么? 我可能错过了哪些构建设置? 下面是主程序循环,其中 inituart()与示例中的初始化函数相同,且 SEND 函数也相同

谢谢、

Peter

void main (void)

InitSysCtrl();
InitSciaGpio();

//初始化和复位外设中断向量
Dint;
InitPieCtrl();
IER = 0x00000000;
IFR = 0x00000000;
InitPieVectTable();

InitUART();
while (1)

MSG ="\r\n\n\nHello World!\0";
scia_msg (msg);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    字符可能是"错误"的、因为它们是 ASCII 字符、而不是代码可能使用的十六进制或十进制整数值。

    您可以确认这一点吗? 您可以尝试发送'a'或'b'等字符吗?

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

    我之前曾尝试发送字符'c'、我可以看到 txbuffer 加载了正确的 ASCII 码(99)、但我在另一端收到的值大约为250。 然后,我还尝试直接使用 scia_xmit()函数,使用65作为参数(字符'a'),结果是一样的

    谢谢、
    Peter
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否设置了一个振荡器来查看线路上的数据是什么?

    我想这与波特率有关。 您是否曾尝试过使用自动波特特性来锁定波特率?

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为我无法访问 Launchpad 上的这些引脚、我可以吗?

    我想知道波特率略有不同、但 SCIHBAUD 和 SCILBAUD 寄存器中的 BRR 值完全相同、可以在示例程序中工作(在同一个终端上看到)。 不过、我将为自动波特率指定一个 GO

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

    这一切都很顺利、并向我揭示了我的错误。 事实上、在某个时候、我必须更改 PLL 的 DSP28_DIVSEL 值、因此我的 SYSCLKOUT (以及我的 LPSCLK)比我所实现的速度更快。

    感谢您的帮助、
    Peter
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的更新。 很高兴你成功了!
    SAL