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/TMS320C6748:C6748计时器时钟模式不工作

Guru**** 2614265 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/659335/ccs-tms320c6748-c6748-timer-clock-mode-not-working

器件型号:TMS320C6748

工具/软件:Code Composer Studio

我正在尝试使用 timer2生成时钟。 但是、我在 TM64P2_out12引脚上没有获得任何输出。 我在以下代码中缺少什么?

#define TMR_PERIOD_LSB32 (0x000000FF)
#define TMR_PERIOD_MSB32 (0x0)

#define TMR_GPDATGPDIR_GPDIRO12 (0x00020000u)

#define TMR_GPDATGPDIR_GPDIRO12_SHIFT (0x00000011u)

#define TMR_GPINTGPEN_GPENO12 (0x00020000u)
#define TMR_GPINTGPEN_GPIENO12_SHIFT (0x00000011u)

main (空)

PSCModuleControl (SOC_PSC_1_regs、HW_PSC_GPIO、PSC_POWERDOMAIN_AYST_ON、PSC_MDCTL_NEW_ENABLE);
HWREG (SOC_SYSCFG_0_regs + SYSCFG0_PINMUX (4)= 0x00008844;

TimerClockModeSet (SOC_TMR_2_regs、TMR_TIMER_Both);

TimerPeriodSet (SOC_TMR_2_regs、TMR_TIMER12、TMR_PERIOD_LSB32);
TimerPeriodSet (SOC_TMR_2_regs、TMR_TIMER34、TMR_PERIOD_MSB32);

HWREG (SOC_TMR_2_regs + TMR_GPDATGPDIR)= TMR_GPDATGPDIR_GPDIRO12;
HWREG (SOC_TMR_2_regs + TMR_GPINTGPEN)= TMR_GPINTGPEN_GPENO12;

TimerEnable (SOC_TMR_2_regs、TMR_TIMER_Both、TMR_ENABLE_CONT);

 while (1);

在研究寄存器的值时、我发现在 GPINTGPEN 中发生了一些奇怪的事情。
必须设置 GPINTGPEN 中的 GPEN012、但实际上没有设置。 它始终坚持逻辑0、我不明白为什么。  

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

    您好!

    您是否了解过 StarterWare 软件包中的计时器示例? 请参阅:

    此致、

    Sahin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的代码的目的是什么? 您是否尝试使用计时器对外部引脚进行脉冲? 您是否正在尝试使用计时器 GPIO 功能来控制引脚? 如果是、为什么不使用 GPIO 外设?

    PINMUX 将外部引脚连接到 GPIO 外设而不是计时器。

    PINMUX4 = 0x00008844
    GP1[4]、GP1[5]、GP1[6]、GP1[7]

    将计时器连接到外部引脚、引脚复用设置应为

    PINMUX4 = 0x00008444
    GP1[4]、TM64P2_OUT12、GP1[6]、GP1[7]

    不确定为什么 GPINTGPEN 不能正确读回。 也许它没有计时。 手册建议将计时器连接到 SCR F8。 您可能必须启用该部件的时钟。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Norman。 目标是在 TM64P2_OUT12引脚上输出 timer2事件、但我看不到该引脚中的任何一个。
    是的,你是对的。 PINMUX 设置错误。 因此、我按照您的建议修复了这一问题、但它仍然是相同的。
    对于器件的时钟输入、正如我在手册中所研究的那样、我发现 timer2不受 PSC 控制、直接从 PLL1馈送、就像您提到的那样(计时器连接到 SCR F8)。 当我使用 Starterware 计时器示例代码进行测试时、它实际上起作用了。
    我现在要了解的是、TIM12RS 在 TGCR 中的值是逻辑零。 在手册中、有人说"当 GPIO 模式被启用时、不能使用正常定时器计数模式-当 GPINTGPEN 中的 GPIO12或 GPIENI12被置为有效时、定时器全局控制寄存器(TGCR)中的 TIM12RS 不能复位"。 那么、什么是正常的计时器计数模式? 您是否碰巧知道这意味着什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我从未以这种方式使用过计时器模块。 文档看起来非常清晰。 请参阅
    29.1.10 TM64P_OUT 事件支持
    您对保护 GPIO 模式的文档评估可能正确。 我要说避免 GPIO 模式。 我建议使用 StarterWare 示例作为基础。 复位值为

    TCR.CP = 0
    脉冲模式。 TM64P_OUT12在定时器计数器达到该周期后变为有效状态。 脉冲
    宽度由 PWID12决定。

    TCR.PWID12 = 0
    当定时器计数器达到一个定时器时钟周期时、TSTAT12保持有效。

    StarterWare 示例每秒打印9个字符的字符。 您应该每秒在 TM64P_OUT12上看到一个脉冲。 假设已为 TM64P2_OUT12设置 PINMUX4。 我看不到获取信号所需的任何其他配置。

    如果您使用的是 LCDK、Timer64P2_OUT12将用作 I2C0 SCL 并连接到多个芯片。 它由 R86上拉。 使用计时器对这条线路进行脉冲可能会使所有连接的 I2C 器件混淆。 在理论上不应造成损害。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我同意你的想法。 我最好避免使用 GPIO 模式。