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:如何使 SCI FIFO 的传输速度更快?

Guru**** 2553260 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1393929/tms320f28335-how-sci-fifo-to-transmit-faster

器件型号:TMS320F28335

工具与软件:

尊敬的专家:

目前 我们正尝试使用 C2000 F28335控制卡来实施低成本 HIL 方案。 主要思路是使用 ADC 测量外部信号、然后计算一些值、最后使用串行通信发送结果。 我们的问题是、当我们尝试使用 SCI 发送数据时、因为使用 for 周期在 TX 缓冲区中加载数据很慢、导致程序丢失一些 ADC 读数、从而使计算的值失真。 我们如何能够更快地将数据加载到缓冲区中?

已经将波特率调整到接近所包含的 FTDI 芯片的限值、但问题不是那么严重。 问题是 ADC 中断由100kHz PWM 信号触发、提供大约10us 的时间将数据移动到 SCI 缓冲器。 在这么长的时间内做到这一点? 或者最好尝试另一块电路板?

谢谢你。

此致、
阿奇·A·.

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

    您好、Archie:

    对于此类应用、 我建议在 ISR 中对 ADC 数据进行采样、然后 将其写入一个临时缓冲区、由 SCI 在后台循环中发送出去。 这样、您的 ADC ISR 就不会在等待 SCI FIFO 有足够空间时被拖延。 您可以测试临时缓冲区的一些不同大小、以了解它需要多大才能防止溢出(这会因波特率和每次写入的字符数而异)。  

    为了获得更简化的方法、您还可以使临时缓冲区的长度仅为16个字符(与 SCI FIFO 的大小相同)、并且如果 SCI 仍在处理前一个 ADC ISR 中的数据发送、则简单地跳过 ADC 的读数发送。 如果您可以只传输每几个读数、那么该实现会更简单、并且仍然允许正确读取 ADC ISR。

    如果在后台循环中运行了其他时间敏感代码、则也可以使用 SCI TX 中断来代替从临时缓冲区传输数据。 如有任何问题、请告诉我。

    此致、

    Delaney