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.

[参考译文] CCS/TMS320F28379D:使用 GPIO 引脚上的时钟与外部 ADC 配合使用

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/793223/ccs-tms320f28379d-using-clock-on-gpio-pin-to-work-with-external-adc

器件型号:TMS320F28379D
主题中讨论的其他器件:ADS8588SC2000WARE

工具/软件:Code Composer Studio

下午好!

我较新接触嵌入式器件、我正尝试在我的高级设计项目中使用此器件。 我们将使用外部 ADC 来提供输入电压和电流。 我使用了基于计时器的中断来发送导通和关断信号、该信号足以进行控制和 LED IC。 但是、我希望外部时钟等更可靠的器件能够与 ADC 进行通信。 是否有办法将其中一个时钟信号放置在引脚上以便在类似情况下使用? 感谢您提供的任何帮助。 我确信我将在整个高级设计项目中发表一些指导文章。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您不使用片上 ADC 是否有原因?
    对于时钟、您是否了解过 XCLKOUT 引脚?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们使用 TI ADS8588S 作为外部 ADC、因为许多内置功能会减轻我们必须自己设计的一些电路的负担。 此外、专业制造的滤波器和 PGR 可能比刚开始 PCB 工作的平地机设计的滤波器要好得多。 我们正在构建用于电源变压器保护的可编程继电器。 感谢您的输入、我将查看 XCLKOUT 引脚。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否有任何使用 XCLKOUT 引脚的示例? 我正在尝试弄清楚如何设置它。 很抱歉、回复延迟、但学期结束和最终考试大部分时间都在参加。

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

    目前我们没有示例、但这是相当直接的、只需 几行代码即可实现。 (请参阅 SPRUHM8H 中的第3.7.4节)

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

    我对使用此器件非常陌生、我已经阅读了手册中的器件、了解如何完成该器件。

    "有时需要直接观察时钟以进行调试和测试。 外部时钟输出(XCLKOUT)特性通过将一个时钟连接到一个外部引脚 GPIO73来支持这个特性。 可用的时钟源有 PLLSYSCLK、PLLRAWCLK、CPU1.SYSCLK、CPU2.SYSCLK、AUXPLLRAWCLK、 INTOSC1和 INTOSC2。 要使用 XCLKOUT、首先通过 CLKSRCCTL3寄存器选择时钟源。 接下来、通过 XCLKOUTDIVSEL 寄存器选择所需的输出分频器。 最后、使用 GPIO 配置寄存器将 GPIO73连接到多路复用器通道3。"

    但是、新手不知道手册中的许多内容意味着什么。 从何处开始学习该器件? 我已经下载了车间材料并进行了介绍。 我还执行了基本程序来使用中断、并根据需要设置引脚以输出或输入。 再次感谢您提供的所有帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最好的起点是车间材料。 TI 已投入大量资源来举办研讨会。 实验示例为过程中的每个步骤提供了出色的指导。 随技术讲座提供的文档非常可靠。 完成研讨会后、请尝试 C2000ware 附带的示例。 车间和示例应为您提供坚实的基础、以便进一步巩固。 祝你好运。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我目前正在尝试设置 XCLKOUT、并且一直在尝试使用  

    ClkCfgRegs.CLKSRCCTL3用于设置时钟源、 而 ClkCfgRegs.XCLKOUTDIVSEL 用于设置时钟的分频。

    当我构建代码时、代码显示 ClkCfgRegs 未定义、因此我认为我的编译器被打乱  

    我的 include 选项可在下面找到。  

    ${COM_TI_C2000WARE_SOFTWARE_PACKAGE_INCLUDE_PATH}
    ${PROJECT_ROOT}
    ${PROJECT_ROOT}/器件
    ${C2000WARE_DLIB_ROOT}
    ${CG_TOOL_ROOT}/包含

    我尝试通过复制 blinky 工程并将代码粘贴到其中来更正此错误、以避免编译器包含问题。 但是,它没有解决问题。

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

    头文件的路径似乎有问题。 请参阅 F28379D 技术讲座、网址为:

    processors.wiki.ti.com/.../C2000_Multi-Day_Workshop

    在模块3中、您将找到有关使用外设寄存器头文件的信息、在实验5中、您将找到有关设置路径的信息(请参阅步骤3)。 请注意、这些路径使用${PROJECT_ROOT}是相对的、但也可以使用绝对路径。

    我认为、您会发现研讨会材料对于了解有关该器件的更多信息非常有用。 查看这些材料并尝试实验室练习。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ken、
    我今天在进行实验课程时实际上尝试执行实验5。 我无法使其正确运行、从而得到错误。
    第11行:错误#10263:RAMLS4内存范围已存在

    它出现在文件:lab_5_6_7.cmd 中、有几个内存位置是共享的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Johnathon、

    我很高兴听到您正在尝试实验练习。 在实验练习5中、没有对文件进行修改、只需检查即可。 如果意外更改、请将 Lab_5_6_7.cmd 文件与解决方案文件进行比较。 如果需要、请尝试加载解决方案项目。 我能够顺利完成构建。

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

    我能够废弃我的所有实验5文件、导入解决方案文件并使其正常工作。 我最终能够使标头工作起来。 我使用了实验文件中的#include "F2837xD_DEVICE.h"。 这会给项目带来很多警告。

    这是我尝试用来使 XCLKOUT 工作以进行测试的代码。

    DEVICE_initGPIO();

    //GPIO_SetupPinMux (73、GPIO_MUX_CPU1、3);// GPIO73、CPU1为主器件、 XCLKOUT 的多路复用器位置3
    GPIO_setPadConfig (73、GPIO_PIN_TYPE_STD);
    GPIO_setPinConfig (GPIO_73_XCLKOUT);
    GPIO_setDirectionMode (73、GPIO_DIR_MODE_OUT);
    GPIO_setQualificationMode (73、GPIO_QUAL_SYNC);

    EALLOW;
    ClkCfgRegs.CLKSRCCTL3.bit.XCLKOUTSEL = 0;
    ClkCfgRegs.XCLKOUTDIVSEL.bit.XCLKOUTDIV = 0;
    EDIS;

    如果我不导入 "F2837xD_DEVICE.h"、则工程中未定义、如果包含该变量、则会生成大量警告。 它也不会在 GPIO 引脚73上生成时钟信号、因此我认为它无论如何都不起作用。  

    感谢您的所有帮助、我对此表示感谢。  

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

    尝试使用实验5作为起点。 首先禁用看门狗、然后修改 GPIO.c:

    GpioCtrlRegs.GPCGMUX1.bit.GPIO73=0;
    GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 3;

    接下来、添加:

    EALLOW;
    ClkCfgRegs.CLKSRCCTL3.bit.XCLKOUTSEL = 0;
    ClkCfgRegs.XCLKOUTDIVSEL.bit.XCLKOUTDIV = 0;
    EDIS;

    请告诉我这是否能解决您的问题。 此外、如果您的代码正在工作、请使用绿色的"验证答案"按钮。

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

    早上好、Ken

    我修改了 GPIO.c 文件以包含这些行

    GpioCtrlRegs.GPCGMUX1.bit.GPIO73=0;
    GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 3;

    然后、我添加了行

    EALLOW;
    ClkCfgRegs.CLKSRCCTL3.bit.XCLKOUTSEL = 0;
    ClkCfgRegs.XCLKOUTDIVSEL.bit.XCLKOUTDIV = 0;
    EDIS;

    我希望 EALLOW 行位于相同的 GPIO.c 中、还是要在 Main_5.c 文件中添加这些行?

    当我运行代码时、我从引脚73获得一个高电平信号、但不是我所期望的时钟信号。  

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

    请注意、GPIO.c 在文件的顶部和底部已经有 EALLOW/EDIS。 尝试将 XCLKOUTDIV 更改为/8。

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

    此外、请注意、您仅限于 GPIO 引脚的最大切换速率。 请查看数据表、它应该大约为25MHz。

    请告诉我这是否能解决您的问题。 此外、如果您的代码正在工作、请使用绿色的"验证答案"按钮。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Ken 的帮助、我已经找到了一种不同的方法来在器件和外部 ADC 之间建立我自己的通信。 我只是在所需的时间内使用计时器中断切换 GPIO 引脚。 我遇到一个奇数行为、其中 ADC 以一半的速度进行采样。 即使在代码中使用计时器之后、频率也应正确。 我已经对发送到 ADC 的信号进行了范围界定、它们看起来是正确的。 外部 ADC 是 ADS8588S
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Johnathon、

    如您所知、使用片上 ADC 是理想的选择、因为它具有许多触发源。 根据您所描述的内容、C2000看起来像预期的那样工作、我建议您将有关 ADS8588S 的问题发布到数据转换器 E2E 论坛。

    - Ken