主题中讨论的其他器件:MOTORWARE、 C2000WARE、
您好!
我正在使用定制板(主要源自 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