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:将 SCI 与 Instaspin 集成

Guru**** 2391095 points
Other Parts Discussed in Thread: MOTORWARE, C2000WARE, TMS320F28069M

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1181508/tms320f28069m-integrate-sci-with-instaspin

器件型号:TMS320F28069M
主题中讨论的其他器件:MOTORWAREC2000WARE

您好!

我正在使用定制板(主要源自 DRV8301-HC-EVM 评估板)来实现用于电机控制的 InstaSpin FOC。 我有一个 LCD 模块向电机控制板(MCB)发送消息。 有2种类型的消息:1种是"获取"、从 MCB 请求数据;另一种是"设置"、它向 MCB 发送各种参数的新值、以响应用户输入。 我现在成功地控制了电机、并且希望能够使用转差协议以上述方式与控制板通信。 如果从 LCD 发出的消息中没有替换(有时需要这样控制字符才能不被误认为是数据)、则 Get 消息为12字节、Set 消息为33字节。

 这些来自 LCD 的消息每500ms 以115.2kBAUD 的频率进行一次传输。 假设消息为12字节(较小的字节)-这需要833us 才能完成。 当您考虑开始位和停止位等时、它实际上更接近1ms。。。 我将使用 InstaSpin Labs 的实验05b 作为电机控制模板。 我已添加 MotorWare 本机的例程来处理串行通信。 我使用的电机具有相对较低的电感(60uH)、因此我一直使用45kHz 作为 PWM 频率。 我可以将其降低到30kHz、而不会立即产生明显的不利影响、但将其降低到20kHz 会导致一些可怕的齿槽和尖叫声。 我将其抽取因子3以得出 ISR 频率。 这意味着 主中断在15kHz 时触发。 这允许在中断之间保持66us、以便通过 InstaSpin 控制电机。 这甚至不允许有时间拾取单个字节。 即使如此、也不能保证连续字节能够在中断之间到达微控制器的 Rx 输入。

  如果中断不存在、我可以成功接收消息。 因此、我有两个部分可以独立工作、但到目前为止、它们不能协同工作。 我已经研究了使用 DMA 来使通信与控制分离、但显然没有从 SCI 到 DMA 的路径、即使 TMS320技术参考文档(第720页)中的"多通道缓冲串行端口发送和接收"被列为"外设中断触发源"之一。 如果中断不断中断、并且我无法使用 DMA、我如何成功地实现与 LCD 模块的串行通信?

下面是示波器的屏幕截图、其中显示了正在发生的情况。 我在主 ISR 的开头和末尾放置一条"toggle GPIO"语句。 这是黄色迹线。 蓝色轨迹线是来自 LCD 模块的串行消息。

此致、

Dave Reagan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="294039" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1181508/tms320f28069m-integrate-sci-with-instaspin "]如果中断不断中断,并且我无法使用 DMA?

    否 DMA 不支持 SCI。 如果帧数据长度小于16字节、则可以尝试使用 SCI FIFO。

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

    您好、Yanming、

    接收数据帧可能假定的最大符号数约为47字节。

    是否有某种技术可以在这些中断每66us 触发一次时在串行端口上收集数据?

    有 McBSP,但这需要6个引脚,看起来像 SPI,有自己的 CLK 来门控数据输入和输出。 这将需要另一个开发板、我认为管理层正在开始失去与我在这方面的耐心。 我们还必须让编写 LCD 固件的分包商更改其代码(以及可能电路板布局),以便适应新方案。 为他们编写代码的人已转移到另一家公司、这使事情更加复杂。

    如果不使用 DMA (因此不使用 McBSP)、我可以将 ISR 重复率降低到10kHz (30kHz PWM)。 这样,如果我想至少偶尔从 LCD 上拾取一条消息,我就必须能够将40字节的数据放入100us 中。 这是3.2兆波特。 LSPCLK/16是 TMS320的最大波特率–为5.6兆波特。 我想只要 LCD 模块中的微控制器也能够做到这一点、就可以完成。 一个看似合理的值是3.686MegaBAUD。

    但我讨厌这种情况会成为一种统计机会游戏。 我应该能够 通过串行端口以可预测的方式接收和发送消息。 否则、使用这种称为 InstaSpin 的技术有什么意义? 您唯一可以使用它的东西似乎是恒定速度、用户无法可靠地更改。 当然、除非您事先知道串行通信不起作用;否则您必须使用 McBSP 和 DMA。 在用户手册的开头、用粗体、亮红色显示警告、告知我们只有一种与系统进行串行通信的方法、那就是通过 McBSP。 从技术上讲、我想 JTAG 也可以使用、但我们无法为每种产品提供 XDS110和笔记本电脑。

    不过、现在我一直在使用 UART。 您是否了解可靠使用它的某种技术?

    谢谢、

    Dave

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

    是否可以将 SPI 用于此通信? SPI 可以支持 DMA。

    或者、您可以参考 C2000Ware 中的示例以使用嵌套中断方法。 您可以启用 SCI RX 和 TX 中断以嵌套用于电机控制的中断、但尝试缩短 RX 和 TX ISR 执行时间。

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

    您好、Yanming、

    在此阶段、我无法使用 SPI。 这将需要我和开发 LCD 模块的分包商进行另一个开发板。

    我将介绍嵌套中断、但我认为 TMS320F28069M 无法实现这一点?

    谢谢、

    Dave

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

    包括 F28069在内的所有 C2000器件都可以支持嵌套中断。 您应该尝试通过仅接收/传输这些 ISR 中的数据来缩短 SCI ISR 预期时间。