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:F280049 SDFM 程序

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1006872/tms320f280049c-f280049-sdfm-program

器件型号:TMS320F280049C
主题中讨论的其他器件:AMC1306EVMC2000WARE

你(们)好

我尝试使用 AMC1306EVM 来测试 SDFM 程序。 我对文件 sdfm_ex4_pwm_sync_cpuread.c 进行了一些更改

在文件夹//ti/c2000/C2000Ware_3_02_00_00/drivelib/f28004x/examples/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_ex4_pwm_sync_cpuread.c
//
// TITLE: SDFM PWM Sync Example
//
//! \addtogroup driver_example_list
//! <h1> SDFM PWM Sync </h1>
//!
//! In this example, SDFM filter data is read by CPU in SDFM ISR routine. The
//! SDFM configuration is shown below:
//! - SDFM1 is used in this example.
//! - MODE0 Input control mode selected
//! - Comparator settings
//! - Sinc3 filter selected
//! - OSR = 32
//! - hlt = 0x7FFF (Higher threshold setting)
//! - llt = 0x0000(Lower threshold setting)
//! - Data filter settings
//! - All the 4 filter modules enabled
//! - Sinc3 filter selected
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

主要更改如下(代码中标记为"JAIKAI"):

1、 将 Sdfm1.CH1 GPIO 更改为 GPIO16和 GPIO17。

2.更改 PWM1以生成2MHz 50/50占空比(PWM1A 为 Sdfm1.CH1和 AMC1306EVM 提供时钟)。

我运行代码、但程序永远不会进入中断例程 sdfmDR1ISR 和 sdfm1ErrorISR。

如果 PWM1未连接到 GPIO17、程序进入 sdfmErrorISR、但仍然不进入  sdfmDR1ISR。

谢谢、

Jiakai

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

    您好、Jaikai、

    您设置的 PWM 周期小于寄存器中的计数器比较值、因为该值导致器件未正确计时。 请您在使用为 SDFM 模块计时时检查 ePWM 输出。

    此外、如果值未发生更改、我建议不要再次调用函数、例如。 设置预分频器被调用两次是您的代码。

    谢谢、

    Aditya

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

    您好、Aditya、

    我再次检查代码、发现 CPU 不会在中断例程 sdfmDR1ISR 中的断点处中断、

    程序进入下面的循环、无法从循环中退出。

      while ((HWREG (SDFM1_base + SDFM_O_SDIFLG)& 0xF000U)!= 0xF000U)
      {
      }

    我已按如下方式更改程序、现在代码正常工作:

    while ((HWREG (SDFM1_base + SDFM_O_SDIFLG)& 0xF000U)!= 0x1000U)

    您能告诉我如何在此代码中添加 FIFO 操作吗?

    谢谢、

    Jiakai

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

    您好、Jaikai、

    很高兴您找到了该问题。 不过、您能否说明您是否更新了 PWM 配置? 我想知道。

    有关启用 FIFO 的信息、请参阅 。  您可以在代码中直接使用一段代码。

    Aditya

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

    您好、Aditya、

    我更改了 PWM 配置、因为我需要 PWM1为 AMC1306EVM 和 SDFM1.C1提供时钟。

    我已经合并了 ex4和 ex5、因此该程序现在可以在按下后使用 PWM8.SOCA 来启动 SDFM 数据转换

    足够的数据进入 FIFO、SDFM 会引起中断。

    非常感谢你的帮助。

    Jiakai