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.

[参考译文] MSPM0C1104:我想将 SWD 引脚用作 PWM

Guru**** 2538950 points
Other Parts Discussed in Thread: UNIFLASH, MSPM0C1104, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1552392/mspm0c1104-i-want-to-use-swd-pins-as-a-pwm

器件型号:MSPM0C1104
主题中讨论的其他部分:UNIFLASHSYSCONFIG

工具/软件:

大家好!

   我 使用 MSPM0C1104SDDFR SOT23-8 8 引脚微控制器。 在 参考 MSPMC1104 IC 的参考手册时 ,我了解我可以 在软件中禁用 SWD 引脚并作为 GPIO 引脚访问它们,并且只能通过 POR(上电复位)启用它们。  

在我的代码中,我使用 API “  DL_SYSCTL_disableSWD ();“禁用了 SWD 引脚   ,延迟周期 为 10000000 “delay_cycles (10000000 );“,假设它为 10 秒。 之后、通过以下 API 将这些引脚配置为 PWM 引脚  

 “   DL_GPIO_initPeripheralOutputFunction (IOMUX_PINCM21、IOMUX_PINCM21_PF_TIMA0_CCP0);
 DL_GPIO_enableOutput (GPIOA、DL_GPIO_PIN_20);
 DL_GPIO_initPeripheralOutputFunction (IOMUX_PINCM20、IOMUX_PINCM20_PF_TIMA0_CCP2);
 DL_GPIO_enableOutput (GPIOA、DL_GPIO_PIN_19);
  
 DL_GPIO_setDigitalInternalResistor (IOMUX_PINCM21、 (IOMUX_PINCM_PIPU_DISABLE | IOMUX_PINCM_PIPD_DISABLE);
 DL_GPIO_setDigitalInternalResistor (IOMUX_PINCM20、 (IOMUX_PINCM_PIPU_DISABLE | IOMUX_PINCM_PIPD_DISABLE);
  DL_TimerA_setCCPDirection (TIMA0、DL_TIMER_CC0_OUTPUT | DL_TIMER_CC2_OUTPUT ); “
我 在我的定制板上刷新了 8 引脚微控制器,我等待了 10 秒没有脉冲产生从 PWM 引脚(以前的 SWD 引脚). 我已经 使用 MSPMC11041 LaunchPad 检查了这个 PWM 程序(除了 SWD 引脚更改为 GPIO)。
因为没有从我的 8 引脚微控制器产生的脉冲. 我通过继续 执行 POR 尝试再次刷写它(方法是从使复位保持超过   5 秒的 3.3V 电源移除并插入微控制器的 4 引脚)、但 从那时起我无法刷写微控制器。 请指出我的错误并帮助我。
我的要求 是, 我想 禁用 SWD 引脚并将该引脚用作 PWM 引脚。 执行 POR 后、我希望启用 SWD 5 到 10 秒。
 

 

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

    尊敬的 Yuvaraj:

    我认为您的问题是您在禁用 SWD 引脚之前等待的时间不够长。

    我检查了您的计算。 10,000,000 不提供 10s 延迟。 根据 24MHz 的总线时钟、如果使用了 delay_cycles (24000000)、则该值等于 1 秒。 因此、如果需要 10 秒、您需要执行如下操作-> delay_cycles (24000000 * 10)

    这可能是您的问题的一部分。  您需要为编程人员留出足够的时间来连接到目标。  通常需要 2-3 秒、但您可能需要更多时间、因此您可能必须进行一些实验、以确定哪种延迟最适合您的设置。

    您还可以考虑将其中一个计时器设置为“一次性“并启用中断。 这样、您就可以在等待计时器中断发生的同时将 CPU 置于睡眠模式。

    如果您的应用需要此计时器、您可以在运行时对其进行重新配置。

    现在、要让 M0 再次发言、您需要运行“Factory Erase“脚本以清除器件。  最简单的方法是使用 Uniflash、连接到目标、点击“Settings and Utilities“、然后向下滚动以显示所有选项。  您在 DSSM 恢复出厂设置组下查找“自动恢复出厂设置“按钮。

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

    感谢您的答复 Dennis Lehman ,

         下面有两个问题。

    1.  如前所述、    为什么 PWM 引脚(以前的 SWD 引脚)产生了 I 无脉冲。
    2. 我无法恢复出厂设置 MCU。  我尝试了程序 根据你的建议“delay_cycles (24000000 * 10 )“这一次在我的发射台本身. 不幸的是、同样的问题仍然存在。 现在、我 无法在 LaunchPad 中复位 MCU。     

    我认为 MCU 变得无法检测到。

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

    尊敬的 Yuvaraj:

    尝试以下-> 移除电源、然后保持 NRST 在低电平、在继续将 NRST 保持在低电平的同时施加电源> 1 秒、然后释放 NRST。  查看您是否可以让 Uniflash 连接到器件、以及是否成功运行“Factory Reset Auto“脚本。

    在 POR(下电上电)期间使 NRST 保持在低电平超过 1 秒然后释放的原因会阻止器件运行应用、而是在引导例程中保持在无限循环中。  这允许编程器进行连接。  请参阅随附的。  为了方便起见、这里是一个片段。

    e2e.ti.com/.../MSPM0-how-to-re_2D00_purpose-nrst-swd-instructions_5F00_v1.pdf

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

    嗨、 Dennis Lehman 

      我尝试了这个 POR 过程之前自己. 这对我来说不起作用。 我又尝试了一次,希望有一些好的东西,但它不.  Uniflash 连接到 Launchpad、但恢复出厂设置自动功能对我来说不起作用。  

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

    尊敬的 Yuvaraj:

    除 SWD 引脚之外、编程器是否可以访问 NRST 引脚?  恢复出厂设置脚本需要访问 NRST。

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

    嗨、 Dennis Lehman 

         是的、由于我在 LaunchPad 中测试了此过程、因此它当然有复位按钮

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

    好的。 根据您的初始描述、我假设我使用了定制 PCB

    我 使用 MSPM0C1104SDDFR SOT23-8 引脚微控制器[/报价]

    但我看到你后来说了以下的话,所以我为误解道歉。

    Uniflash 连接到 Launchpad、但恢复出厂设置自动功能对我来说无法正常工作。  [/报价]

    好的、让我咨询我们的工具团队。  我应该在接下来的几个小时内得到他们的回复、否则他们将直接回复此帖子。

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

    我现在的情况是  MSPM0C1104SDDFR SOT23-8 4 nos 得到了 砖和一个 Launchpad。

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

    嗨、 Dennis Lehman 

         最后,我找到了一种方法,使 MSPM0C1104 在 laugpad 交谈. 我遵循了 以下论坛的指示  

    MSPM0C1103:关于将 SWIO/CLK 和 IO 引脚结合使用 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

    我犯了错误,只按住重置按钮几秒钟,然后释放按钮 . 释放重置后,我尝试 我按下了 uniflash 中的出厂重置按钮。   

    实际程序应如所示

    上电后按 nRST 按钮。

    2. 在 UNIFlash 中连接启动板 ,启动恢复出厂设置自动  

    等待、直到看到 “CS_DAP_0:GEL 输出:命令执行完成“。  

    4.现在释放 nRST 按钮 。 然后、 控制台显示如下所示的输出  “CORTEX_M0P:GEL Output:Factory Reset executed “。 请终止调试会话、下电上电并重新启动调试会话。

    好的,现在我知道如何让我的控制器说话,一旦它得到砖。 现在我想知道为什么我无法生成 PWM 后,我禁用了 SWD 引脚.

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

    让我看看是否可以重现问题。

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

    尊敬的 Yuvaraj:

    我能够禁用 SWD 引脚功能并重新分配为 GPIO 并切换引脚、但出于某种原因、与您一样、我似乎无法在这些引脚上获得 PWM 输出。  让我联系我们的设计团队、看看是否缺少一个步骤。

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

    尊敬的 Yuvaraj S:

    解决方法:

    1. 在 sysconfig 中禁用 SWD 引脚。

    2.在 TIMER-PWM 中配置 IOMUX

    请参阅 (+)***** )? -基于 Arm 的微控制器 — 内部论坛-基于 Arm 的微控制器 — 内部- TI E2E 支持论坛 、了解更多详细信息。

    此致、

    Zoey

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

    你好、 Wei 

         我无法访问您提供的链接。

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

    尊敬的 Yuvaraj:

    噢... 但您可以使用我提到的方法来尝试吗?

    此致、

    Zoey

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

    你好、 Wei 

         我尝试了您提到的方法  

    1.  我禁用了 SWD 引脚
    2. 在 TIMER-PWM 中配置 IOMUX  

      仍然不会从 这些引脚生成 PWM

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

    尊敬的 Yuvaraj:

    在 DL_GPIO_setDigitalInternalResistor (IOMUX_PINCM20、  (IOMUX_PINCM_PIPU_DISABLE | IOMUX_PINCM_PIPD_DISABLE) 之后;

    请添加功能:

        DL_GPIO_initPeripheralOutputFunction
    这是因为、一旦您调用  DL_GPIO_setDigitalInternalResistor 函数、IOMUX 将被更改回正常的 GPIO 函数、因此您需要调用  DL_GPIO_initPeripheralOutputFunction 、并将 IOMUX PF 寄存器更改回 TIMER 函数。
    此致、
    Zoey
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    魏佐伊 

      您提到的函数已在“SYSCFG_DL_init ()“中  

    不同之处是我在 “SYSCFG_DL_init ()“之后再次调用这些函数。

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

    但在您的应用代码中。   再次调用 DL_GPIO_setDigitalInternalResistor 函数。

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

    请尝试下面我已经测试过的项目、确认它可以正常工作。

    e2e.ti.com/.../E2E_5F00_PWM_5F00_PA19.zip

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

    你好、 Wei 

          谢谢。 它生成 47.56Hz PWM。