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.

[参考译文] TMS320F28388D:包括 ADC/DMA/ETH/SCI/PLL/PWM 中断应用的状态机结构

Guru**** 2564410 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1260897/tms320f28388d-state-machine-structure-for-including-adc-dma-eth-sci-pll-pwm-interrupt-application

器件型号:TMS320F28388D

您好!

我想使用 F28388D 开发软件、
在本软件中、我将使用 ADC、DMA、以太网、SCI、中心对齐的死区 PWM 和 PLL。

我想使用 ADC 和 DMA 读取4个不同的传感器数据(电流和电压每20微秒一次、2个不同的温度测量每秒一次)。

我需要即时生成连续信号、因此 PWM (50kHz)将每20微秒在上升沿生成一个中断、并且在该中断函数内、我将进行三角计算、这大约需要1.5微秒。 (此计算值将是连续生成信号中的下一个 PWM 占空比值。 PWM 中断应该是优先级中断。 但这一优先级不应对 ADC、ETH、PLL、SCI 等单元的数据产生负面影响。

我想使用具有 PLL 的 PWM 钳制我产生的正弦电流和电压、并测量电流和电压之间的相位差。

PC 将通过以太网进行通信。 ADC 数据和一些错误信息将被发送到 PC。 在某些情况下、用户参数将从 PC 发送到 MCU。

我需要您对该软件的意见和支持。

如果除了状态机中的 PWM 中断外、所有器件都在轮询模式下工作、连续 PWM 中断是否会导致 ADC、ETH、SCI 读取和写入状态下的数据不正确? 系统在这里应该如何工作?

如何使用单个 CPU 构建状态机结构?

使用双 CPU 是否是有利的? 例如、如果 PWM 和 PLL 位于 CPU1中、ADC、ETH、SCI 位于 CPU2中会更好吗? (我尚未使用双 CPU 开发、开发软件需要额外的学习和理解流程)。

谢谢你。

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

    嗨、blackmatter:

    您希望对哪些外设使用中断?  使用两个 CPU 肯定会降低中断冲突的风险、但我不确定这是否必要、具体取决于每个 ISR 的长度。 我建议在单个 CPU 上开发您的系统、但要注意每个 ISR 的执行时间。 如果事实证明您的系统中有太多冲突中断、则可以将您的代码从单个 CPU  项目移植到双核项目。

    当存在许多中断时、PWM 的一个常见边沿情况是、如果一个 PWM 中断在另一个中断被处理的同时被触发、从而导致 PWM ISR 延迟。 如果您以必须在一个 PWM 周期内完成的方式设置 PWM ISR (例如、许多 PWM 设置在单个周期内更新)、延迟 PWM ISR 的开始将导致旧的和新的 PWM 设置不规则混合、 由于许多 PWM 设置都是在 PWM TBCTR=0上影子加载的。 这将导致 PWM 输出中出现不理想的行为、如果未考虑 ISR 开始的潜在延迟、则很难调试这种行为。 不是说双核绝对必要、但是 如果您尝试在单个内核上实现系统、我可以通过切换 GPIO 来观察每个 ISR 的开始和结束、并检查 PWM 中断是否在单个周期内启动和完成。