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.

[参考译文] TMS320F280049C:使用 PWM 同步 SDFM 时的问题

Guru**** 1993015 points
Other Parts Discussed in Thread: C2000WARE, LAUNCHXL-F280049C, AMC1306EVM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1008118/tms320f280049c-the-problems-when-using-pwm-to-synchronize-sdfm

器件型号:TMS320F280049C
主题中讨论的其他器件:C2000WARELAUNCHXL-F280049CAMC1306EVM

你(们)好

我已将 \\ti\c2000Ware_3_02_00_00\driverlib\f28004x\examples\sdfm 下的 sdfm_ex5_filter_sync_fifo_cpuread.c 更改为将 PWM8用于同步信号、将 PWM1用于 SDFM 时钟。
本计划有以下一些问题:
当我使用 SDFM_enableWaitForSync (第212行)让 SDFM 等待 PWM SOCA 信号时、程序无法进入 sdfmFIFO1ISR。
2.当我不使用 SDFM_enableWaitForSync 时、程序会进入 sdfmFIFO1ISR、但进入的时间不合理:
我设置不同的 FIFO_INT_NUM 值、如果 FIFO_INT_NUM 增大、我假设转换时间(PWM8.TBCTR)应更大、
但我不遵循此规则的时间、请参阅以下数据(PWM1提供10MHz 时钟):
FIFO_INT_NUM 第2次运行     
  3.              6815.     7075
  4.              6753     6593
  5.              6793     6665
  9.              6675     6493

此处列出的代码供您查看:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//###########################################################################
//
// FILE: sdfm_ex5_filter_sync_fifo_cpuread.c
//
// TITLE: SDFM Type 1 Filter FIFO Example.
//
//! \addtogroup driver_example_list
//! <h1> SDFM Type 1 Filter FIFO </h1>
//!
//! This example configures SDFM1 filter to demonstrate data read through
//! CPU in FIFO & non-FIFO mode. Data filter is configured in mode 0
//! to select SINC3 filter with OSR of 256. Filter output is configured
//! for 16-bit format and data shift of 10 is used.
//!
//! This example demonstrates the FIFO usage if enabled. FIFO length is set
//! at 16 and data ready interrupt is configured to be triggered when FIFO is
//! full. In this example, SDFM filter data is read by CPU in SDFM Data Ready
//! ISR routine.
//!
//! \b External \b Connections \n
//! Connect Sigma-Delta streams to (SD-D1, SD-C1 to SD-D4,SD-C4)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

有人能教我如何使用 PWM SOCA/B 同步 SDFM 吗?

谢谢、

Jiakai

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

    您好、Jaikai、

    ePWM TBPRD (周期寄存器)的值应该高于 ePWM 计数器比较寄存器、这在代码中不是这样。 这不会生成所需的 ePWM 信号边沿、因此将无法为模块生成 SOC 信号。 请更新这些值。

    您可以在您的案例中更新时钟预分频器的值以调整这些值。

    谢谢、

    Aditya

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

    您好、Aditya、

    EPWM8.CMPA 为0xC80000、我认为没关系、这意味着 EPWM8.CMPA=0xC8和 EPWM8.CMPAHR=0。

    谢谢、

    Jiakai

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

    Jaikai、

    我也同意。 我要强调的一点是、TBPRD 值应高于 CMPA 值、在您的情况下不是如此->(TBPRD = 4)和(CMPA = 200)。 您可以尝试将 CMPA 寄存器更改为2以进行验证。

    如果您有示波器或任何其他方法来检查 ePWM 输出、我建议检查一次。

    谢谢、

    Aditya

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

    您好、Aditya、

    在代码中、PWM8用于同步 SDFM、其对应的注册表值如下:

    您可能会使 PWM1和 PWM8混乱、因为我使用 PWM1来提供10MHz 时钟、因此 PWM1.TBPRD=4。

    谢谢、

    Jiakai

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

    您好、Jaikai、

    很抱歉我错过了该部件。 感谢您的突出显示。 我目前正在对此进行研究。

    此外、我在示例代码中执行初始化之后提供的等待函数、该函数在您的示例代码中缺失。 您能否添加并在我返回给您时进行检查?

    Fullscreen
    1
    while((HWREGH(pwmInstance + EPWM_O_TBCTR)) < 550);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Aditya

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

    您好、Aditya、

    我已将其添加到 main()函数中,如下所示:

    SDFM_DisableInterrupt (SDFM1_base、SDFM_FILTER_1、
    (SDFM_HIGH_LEVEL_THRESHOLD_INTERRUPT |
    SDFM_LOW_LEVEL_THRESHOLD_INTERRUPT));

    while (((HWREGH (EPWM8_BASE + EPWM_O_TBCTR))< 550);

    //
    //启用主中断,以便可以触发任何过滤器中断
    //通过 SDFM 中断到 CPU
    //
    SDFM_enableMasterInterrupt (SDFM1_base);

    多次运行代码、未找到差异。

    谢谢、

    Jiakai

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

    Jaikai、

    请给我一些时间来思考这个问题。

    谢谢、

    Aditya

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

    Aditya、  

    别着急,慢慢来。

    谢谢、

    Jiakai

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

    您好、Jaikai、

    很抱歉耽误你的答复。 我看到您已禁用负责在代码中生成 SDSYNC 信号的 ePWM SOCA。 请参阅参考手册中的方框图、了解来自 PWM 的 SDSYNC 信号的路径。

    这可能是您的 EPWM SDSYNC 信号未到达 SDFM 模块的原因之一。 您可以更新您的代码吗?

    谢谢、

    Aditya

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

    您好、Aditya、

    我想您刚才谈到的是、我在第212行中评论了函数调用。

    如前所述、当我使用 SDFM_enableWaitForSync 启用时

    SYNC 信号、程序不会进入中断例程 sdfmFIFO1ISR。

    谢谢、

    Jiakai

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="111331" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1008118/tms320f280049c-the-problems-when-using-pwm-to-synchronize-sdfm/3725689 #3725689"] PWM8用于同步 SDFM,其相应的注册表值如下所示:

    Jiakai、您好!

    TBPRD 0xFFFF 导致 TB 子模块设置 CTR_max 标志。  奇怪的是、TRM 不会说标志如何影响 TB 计数。 似乎 TBPRD 应加载0xFFFE (-1)以停止 CTR_max 计数溢出标志。  

    CTR_max 时基计数器等于最大值。 (TBCTR = 0xFFFF)
    当 TBCTR 值达到其最大值时生成的事件。 该信号仅用作状态位????

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

    您好、GI、

    PWM8.TBPRD 用于提供 SOCA 信号来同步 SDFM 转换、其他事件将被忽略(我认为)。

    我将  PWM8.TBPRD 设置为0XFFF0、但程序仍然无法进入中断。

    谢谢、

    Jiakai

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

    您好!

    我的意思是在定义 JAIKAI 宏后启用当前不属于代码一部分的 ADC SOC 信号。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    #ifndef JIAKAI
    //
    // Configure SOCA signal
    //
    //
    EPWM_setADCTriggerSource(EPWM1_BASE, EPWM_SOC_A, EPWM_SOC_TBCTR_U_CMPA);
    EPWM_setADCTriggerEventPrescale(EPWM1_BASE, EPWM_SOC_A, 1);
    #endif
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    您可以取消注释这些行吗?

    谢谢、

    Aditya

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

    您好、Aditya、

    我未对代码进行注释(从 PWM1更改为 PWM8)、如下所示:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    //#ifndef JIAKAI
    //
    // Configure SOCA signal
    //
    //
    EPWM_setADCTriggerSource(epwmInstance, EPWM_SOC_A, EPWM_SOC_TBCTR_U_CMPA);
    EPWM_setADCTriggerEventPrescale(epwmInstance, EPWM_SOC_A, 1);
    //#endif
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    但程序仍然无法进入中断例程 sdfmFIFO1ISR。

    谢谢、

    Jiakai

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

    Jiakai、您好!

    也许 INT CLEAR 应该放置在引导程序入口附近以停止重新进入。 建议在 INT 环路中进行 LED 切换、以便您可以查看它是否已打开/关闭。

    //
    //确认此中断以接收来自组5的更多中断
    //
    INTERRUPT_clearACKGROUP (INTERRUPT_ACK_group5);

    //
    //切换状态 LED
    //
    counterLED++;

    if (counterLED >(uint32_t)(USER_ISR_FREQ_Hz / LED_BLINK FREQ_Hz)

    HAL_TOGLELED (halHandle、HAL_GPIO_LED2);
    counterLED = 0;

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

    BTW:在 ePWM 配置中、我没有看到启用 ADC 触发源的调用。 首先禁用 SOC_A 中断、以便在配置 SOC_A 时不会触发错误触发

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

    您好、GI、

    在中断例程中、以下代码用于避免重新进入:

    关于启用 SOCA 事件代码、如下所示(Aditya 也提到了它):

    源代码如下所示供您查看:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //###########################################################################
    //
    // FILE: sdfm_ex5_filter_sync_fifo_cpuread.c
    //
    // TITLE: SDFM Type 1 Filter FIFO Example.
    //
    //! \addtogroup driver_example_list
    //! <h1> SDFM Type 1 Filter FIFO </h1>
    //!
    //! This example configures SDFM1 filter to demonstrate data read through
    //! CPU in FIFO & non-FIFO mode. Data filter is configured in mode 0
    //! to select SINC3 filter with OSR of 256. Filter output is configured
    //! for 16-bit format and data shift of 10 is used.
    //!
    //! This example demonstrates the FIFO usage if enabled. FIFO length is set
    //! at 16 and data ready interrupt is configured to be triggered when FIFO is
    //! full. In this example, SDFM filter data is read by CPU in SDFM Data Ready
    //! ISR routine.
    //!
    //! \b External \b Connections \n
    //! Connect Sigma-Delta streams to (SD-D1, SD-C1 to SD-D4,SD-C4)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    谢谢、

    Jiakai

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

    这是中断{__interrupt void sdfmFIFO1ISR (void)}将 ACK 上移至顶部,在进行多次调用后 ACK 位于底部。 我仍然不容易找到您在哪里或如果您启用了 SOC-A 触发器、只能看到您配置了触发源事件。

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

    您好、GI、

    正确、代码未启用 SOCA、我在下面添加了它、但在 CCS 上运行代码时仍然没有区别:

    //#ifndef JIAKAI
    //
    //配置 SOCA 信号
    //
    //
    ePWM_setADCTriggerSource (epwmInstance、ePWM_SOC_A、ePWM_SOC_TBCTR_U_CMPA);
    ePWM_setADCTriggerEventPrescale (epwmInstance、ePWM_SOC_A、1);
    ePWM_enableADCtrigger (epwmInstance、ePWM_SOC_A);
    //#endif

    在中断例程 sdfmFIFO1ISR 中、 Interrupt_clearACKGroup (interrupt_ACK_group5)

    函数调用是最后一条语句。 我认为可以、调用此函数是为了允许以下 SDFM 中断。

    将其移到 ISR 顶部是可以的、但可能没有帮助(CPU 永远不会进入此 ISR)。  

    非常感谢!

    Jiakai

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

    您好、Jaikai、

    我们能否验证一下、首先时钟输入是否正常? 如果您可以访问任何示波器、您是否可以将 PWM 输出连接到任何 GPIO 并验证预期的 PWM 是否出现?  

    此外、您的 SDFM 模块是否正确接收到来自 ePWM 模块的时钟信号? 您能否检查一次连接?

    Aditya

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="111331" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1008118/tms320f280049c-the-problems-when-using-pwm-to-synchronize-sdfm/3736974 #3736974">将其移至 ISR 顶部是可以的、但可能没有帮助(CPU 从未进入此 ISR)。  [/报价]

    如果没有 LED 切换、您可能永远不知道。 单步 CCS 调试我的不会触发 ADC 中断、具体取决于调试设置等 建议始终发出中断清除第一个调用来停止回绕、重新进入甚至可能导致 CPU 停止。

    [引用 userid="111331" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1008118/tms320f280049c-the-problems-when-using-pwm-to-synchronize-sdfm/3736974 #3736974"](epwmInstance、ePWM_SOC_A、ePWM_SOC_TBCTR_U_CMPA);[/引用]

    是否为 CMPA 匹配计数配置/启用了动作限定符?

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

    您好、Aditya、

    我已经检查了 PWM1输出、它是一个10MHz 信号、如果 Sdfm 输入时钟未连接到、也是如此

    时钟源 SDFM 将导致错误中断。

    谢谢、

    Jiakai

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

    您好、GI、

    我没有使用 LED 开/关来检查程序是否进入 ISR、但我确实使用 tmBuf 来保存 PWM8.TBCTR

    当程序进入 ISR (在288行上)、但 tmBuf 保持全部为0。 我甚至把 tmBuf 移到 ISR 的开头

    但内容不变。

    谢谢、

    Jiakai

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

    Jaikai、

    我在我的设置中重新创建了问题、并找到了 GI 突出显示的问题。 问题在于 EPWM8 SOCA 事件未生成、最终将停止 SDSYNC 事件生成。 因此、我们不会看到 CPU 进入 ISR。

    在 EPWM 初始化内部、当进入时、您需要禁用 EPWM ADC 触发器、并在离开 EPWM 初始化块时将其重新启用。 只要我们需要使用来自 ePWM 模块的 ADC SOC 信号、就必须保持此流程。

    连接初始化代码、这有助于我使代码正常工作。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //
    // initEPWM - Initialize specified EPWM settings
    //
    void initEPWM(uint32_t epwmInstance)
    {
    //
    // Disable sync(Freeze clock to PWM as well)
    //
    SysCtl_disablePeripheral(SYSCTL_PERIPH_CLK_TBCLKSYNC);
    EPWM_disableADCTrigger(EPWM8_BASE, EPWM_SOC_A);
    //
    // Setup TBCLK: Configure timer period = 801 TBCLKs, phase = 0 &
    // clear counter
    //
    EPWM_setTimeBasePeriod(epwmInstance, 0xFFF0);
    EPWM_setPhaseShift(epwmInstance, 0U);
    EPWM_setTimeBaseCounter(epwmInstance, 0U);
    //
    // Set CMPA value
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    希望这对您有所帮助。

    Aditya

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

    您好、Aditya、

    我在 函数 initEPWM 的开头(放置代码的位置)添加了 ePWM_disableADCTrigger、但仍然没有更改。

    我已经检查了 PWM8.ETSEL.SOCAEN、在调用  ePWM_DisableADCTrigger 之前它是0。

    我还认为在初始化 SDFM 之前、以下3个函数调用(启用 SDFM 中断)不是很好、

    我将它们移动到所有器件都已初始化的位置、但结果仍然相同。

    更改代码如下所示:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //###########################################################################
    //
    // FILE: sdfm_ex5_filter_sync_fifo_cpuread.c
    //
    // TITLE: SDFM Type 1 Filter FIFO Example.
    //
    //! \addtogroup driver_example_list
    //! <h1> SDFM Type 1 Filter FIFO </h1>
    //!
    //! This example configures SDFM1 filter to demonstrate data read through
    //! CPU in FIFO & non-FIFO mode. Data filter is configured in mode 0
    //! to select SINC3 filter with OSR of 256. Filter output is configured
    //! for 16-bit format and data shift of 10 is used.
    //!
    //! This example demonstrates the FIFO usage if enabled. FIFO length is set
    //! at 16 and data ready interrupt is configured to be triggered when FIFO is
    //! full. In this example, SDFM filter data is read by CPU in SDFM Data Ready
    //! ISR routine.
    //!
    //! \b External \b Connections \n
    //! Connect Sigma-Delta streams to (SD-D1, SD-C1 to SD-D4,SD-C4)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    谢谢、

    Jiakai

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

    Jaikai、

    使用您发送的代码、我能够看到 CPU 进入 sdfmFIFO1ISR、 并且 EPwm8Regs.ETFlG.SOCA 变为高电平。 您能否在结束时再次检查一次?

    如果无法解决、您能否共享压缩的项目? 我可以检查任何链接文件中的差异。

    Aditya

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

    您好、Aditya、

    我没有创建项目、只需更改 C2000ware 项目中的 sdfm_ex5_filter_sync_fifo_cpuread.c 文件、路径如下:

    C:\ti\c2000Ware_3_02_00_00\driverlib\f28004x\examples\sdfm\sdfm_ex5_filter_sync_fifo_cpuread.c

    谢谢、

    Jiakai

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

    您好、Jaikai、

    您能否安装最新的 C2000Ware 并尝试运行您的项目? 某些错误修复可能会帮助您的最终代码正常工作。 我在 C2000Ware_3_04版本上运行了示例代码。

    下载 C2000Ware 的链接: C2000WARE 软件开发套件(SDK)|德州仪器 TI.com

    谢谢、

    Aditya

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

    您好、Aditya、

    我有 C2000Ware_3_04、因为我的 CCS 是 v9、它无法打开 C2000Ware_3_04项目、

    因此我使用 C2000Ware_3_02项目。

    我已经在 两个版本中比较了 sdfm_ex5_filter_sync_fifo_cpuread.c、没有区别

    在 CPU 器件初始化代码中、唯一的区别是 2000Ware_3_04 更改了 SDFM 引脚配置

    名称。

    我将安装最新的 CCS 以进行确认。

    谢谢、

    Jiakai  

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

    您好、Jaikai、  

    很抱歉您遇到问题。 更改不仅仅是针对源代码。 我认为、辅助驾驶员可能会导致一些问题。 您共享的源代码在我的末尾运行得非常好

    Aditya

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

    如果将更新的 driverlib 导入到现有工程中是根本原因、则看起来会更容易。 导入高级选项"仅创建源链接"而不是导入整个库文件似乎是一个很好的解决方法。  

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

    Jaikai、

    我尝试在 C2000Ware_3_02版本上运行该代码、它也可以在那里运行。 我可以看到代码在 sdfmFIFO1ISR 内部停止。

    您是否能够在最终取得任何成功?

    Aditya

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

    您好、Aditya 和 GI、

    由于 GI 的建议对我来说很容易、因此我将项目更改为将 C2000Ware 转换为 v3.4。

    当我运行项目时、程序仅输入 sdfm1ErrorISR、从未输入 sdfmFIFO1ISR。

    我很匆忙地解决了问题、因此我安装了 CCS v10.3.1和最新的 C200Ware。

    我在 CCS v10.3.1上运行该程序、但仍然存在与在另一台计算机上相同的问题。

    我设置2个计数器:cntErr 和 cntDat、cntErr 用于计算进入  sdfm1ErrorISR 的次数、

    cntDat 用于对进入 sdfmFIFO1ISR 的时间进行计数。 运行几秒钟后、2个计数器值如下所示:

    源代码如下:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //###########################################################################
    //
    // FILE: sdfm.h
    //
    // TITLE: C28x SDFM Driver
    //
    //###########################################################################
    // $TI Release: F28004x Support Library v1.12.00.00 $
    // $Release Date: Fri Feb 12 18:57:27 IST 2021 $
    // $Copyright:
    // Copyright (C) 2021 Texas Instruments Incorporated - http://www.ti.com/
    //
    // Redistribution and use in source and binary forms, with or without
    // modification, are permitted provided that the following conditions
    // are met:
    //
    // Redistributions of source code must retain the above copyright
    // notice, this list of conditions and the following disclaimer.
    //
    // Redistributions in binary form must reproduce the above copyright
    // notice, this list of conditions and the following disclaimer in the
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    谢谢、

    Jiakai

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

    Jaikai、

    您发布的代码是 SDFM 驱动器。 您能否以压缩格式共享示例项目、以便我重新创建问题?

    谢谢、

    Aditya

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

    您好、Aditya、

    该项目如下:

    http://www.powersimtech2.com/temp_public/sdfm_ex5_filter_sync_fifo_cpuread.zip

    我将在 F280049 LaunchPad 上测试项目、因此配置文件适用于 XDS110。

    谢谢、

    Jiakai

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

    Jaikai、

    网站在我们的末尾被封锁 这里有一个用于直接上传压缩项目的工具。 您可以单击"Insert"->"Image/video/file"并上传压缩的项目。

    很抱歉出现问题。

    谢谢、

    Aditya

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

    您好、Aditya、

    请尝试上述操作。

    谢谢、

    Jiakai

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

    您好、Jaikai、

    链接在我们的末尾将不起作用 您只需要上传压缩的项目。

    Aditya

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

    很抱歉、请尝试这个。

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

    Jaikai、

    此代码在我的末尾同样有效! 我现在可以想到的问题是与硬件相关的。 能否验证从 GPIO 17到 GPIO 0的外部时钟连接? 您可以查看 LaunchPad 原理图上的硬件连接、该原理图随 C2000Ware Inside boards/LaunchPad/LAUNCHXL-F280049C/MCU025 (A/B)/documentation/* Schematic 一起提供

    我尝试从 PWM 上断开外部时钟连接、可能会重复进入错误 ISR 而不是 FIFO ISR 的问题。  

    谢谢、

    Aditya

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

    如果您有示波器、则还可以在连接到 GPIO 17作为时钟之前检查 GPIO 0上的 PWM 输出。

    Aditya

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

    您好、Aditya、

    您是对的、PWM1没有输出。 我认为 F280049 LaunchPad 上存在损坏。

    我切换到 F280049 controlCARD、程序可以根据需要进入中断。

    顺便说一下、我不知道我是否获得了正确的转换结果、您能告诉我吗  

    如何在 J1上设置 AMC1306EVM 输入?

    谢谢、

    Jiakai

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

    您好、Jaikai、

    很高兴您找到了该问题。 请您将相关答案标记为"已解决"。

    有关 AMC1306EVM 的查询、我建议您参阅 AMC1306参考指南。 第4.3节介绍了用作时钟输入和数据输出的引脚详细信息。

    谢谢、

    Aditya

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

    您好、Aditya 和 GI、

    非常感谢!

    Jiakai

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

    您可能也给了您的帮助者一点绿色。 也许还可以查看器件勘误表 PDF 以验证和/或更改为 LauchXL49c 上的其他 PWM 端口、检查 PWM1端口是否实际损坏。

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

    您好、GI、

    我之前使用示波器测试了 PWM1输出、并确认其输出信号正确。

    我还使用了之前确认的另一个程序来测试 PWM1输出、但仍然没有找到 PWM 输出。

    然后、我在 F280049 controlCARD 上运行该程序、PWM1输出信号正确。

    我认为损坏是由测试中的一些意外短路造成的。  

    我将购买新的 F280049 LauchPad 进行进一步测试。

    谢谢、

    Jiakai

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

    何家开

    您还忘记了启用 ADC 触发器是问题的一部分。 为什么在购买另一个 LaunchPad 之前不在 J6上测试 EPWM-4A/4B? BTW:J6/J8的插头编号与引脚映射卡上的对应、但 PCB 上的 Silk 正确。