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.

[参考译文] LAUNCHXL-F28379D:通用伺服驱动器 F28p65 至 F28379D 转换->ADC 配置不触发中断

Guru**** 2447250 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1526812/launchxl-f28379d-universal-servo-drive-f28p65-to-f28379d-conversion---adc-configuration-not-triggering-interrupt

器件型号:LAUNCHXL-F28379D
主题:SysConfig 中讨论的其他器件

工具/软件:

我使用一键迁移来转换要在 F28379D LaunchPad 上使用的 F28p65 Universal_Servo_Drive 代码。 我的代码编译没有错误、但当我运行调试器时:

程序卡在 motor1_drive.c 中的第 627 行 这是线路

while (ADC_getInterruptStatus (MTR1_ADC_INT_BASE、MTR1_ADC_INT_NUM)== false);因为 getInterruptStatus 函数不会由于操作的值无效而产生布尔值。

步进到 ADC.h 中的函数
ADC_getInterruptStatus (uint32_t base、ADC_IntNumber adcIntNum)

//
//检查参数。
//
断言 (ADC_isBaseValid (base));
//
//获得指定的 ADC 中断状态。
//
return ((HWREGH (BASE + ADC_O_INTFLG)&(1U <<(uint16_t) adcIntNum))!= 0U);
}

包含值 ADC_0_INTFLG、点击时显示“无法在索引中找到符号“ADC_O_INTFLG"。“。 在 adc.h 文件中的后续函数(如 ADC_clearInterruptStatus、ADC_getInterruptOverflowStatus、ADC_clearInterruptOverflowStatus)中、找不到类似的宏、例如 ADC_O_INTFLGCLR 和 ADC_O_INTOVF。

为什么找不到这些值? ADC 是在 SysConfig 中设置的方式吗? 或者设备支持文件是否需要手动编辑?  

我认为这可能是由 ADC 未触发或 ADC 触发 ISR 未正确设置引起的、所以回到 SysConfig 进行调查。 首先、我确认两个文件之间正确启用了中断并且相似。 F28379D SysConfig 位于左侧、F28P65 SysConfig 位于右侧。  

ADCA:

ADCB:


挑战

这些似乎配置正确。  

然后、我检查了两块电路板的 SOC 配置。 根据我对 本转换文档的理解 (F28p65 采用 ADCIN7)、F28379D 应改用 ADCIN2。 这是正确的吗? 在 universal_servo_drive 中、SOC 通道设置为“单端、ADCIN7“。  

但是、这仍然没有意义。 即使上述情况不正确、错误通道也不会导致不会触发中断。  

可能会出现什么问题、我应该继续查看哪些方面?  

请参阅此处随附的工程: e2e.ti.com/.../1460.universal_5F00_servo_5F00_drive_5F00_f28p65x_5F00_convertedto_5F00_f28379D.zip

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

    我已解决问题。 我没有正确地将 ePWM 与 SOC 触发器对齐。 在 F28p65 中、ADC 由 EPWM5 触发、但需要根据您使用的任何新电路板对此进行纠正。 在我的示例中、MTR1_PWM_U 使用 EPWM1。 我的代码中的所有 7 个 SOC 触发器都需要设置为