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.

[参考译文] MSP430G2533:MSP430G2533

Guru**** 2489685 points
Other Parts Discussed in Thread: MSP430G2533

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1553499/msp430g2533-msp430g2533

器件型号:MSP430G2533


工具/软件:

您好:

我使用 MSP430G2533 微控制器、并尝试启用 PWM 来驱动蜂鸣器。 当我写入并闪烁正常代码片段时、蜂鸣器会发出正确的蜂鸣声。

但是、当我尝试使用 BSL 接口和 Elprotronic 提供的 DLL 功能执行此操作时、蜂鸣器不会发出蜂鸣声。 我正在使用 DLL 函数将代码写入器件并开始执行、但 PWM 似乎未启用。

我怀疑在使用 BSL DLL 函数启用 PWM 时可能需要特定的序列或初始化步骤、但我缺少该步骤。

我的问题:

  1. 通过 BSL 对 MSP430G2533 上的 PWM 代码进行编程和启动时、建议的 DLL 函数调用序列是什么?
  2. 通过 BSL 进行编程时、是否需要任何特殊步骤或配置来启用 PWM 或计时器外设?
  3. 使用 BSL DLL 函数在 MSP430G2533 上启用 PWM 时、是否存在已知限制或示例代码?
  4. 该问题是否与使用 BSL DLL 编程时不同的时钟初始化或外设启用有关?

为使用 BSL DLL 接口正确启用 PWM 和驱动蜂鸣器、我希望提供任何指导、示例代码或文档参考。

谢谢你。

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

    您的 MSP430 代码不会关心它是如何编程到器件中的。

    因此、这肯定是 BSL 使用方式的问题。 仔细检查 Elpotronic 文档可能是按顺序进行的。

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

    您好、David:

    首先、感谢您的答复。

    我有关于使用 BSL 接口和 Elprotronic DLL 函数的几个问题:

    1. 是否可以在 CLI 模式下使用 DLL 函数(由 Elprotronic 提供)通过 BSL 接口启用 MSP430G2533 上的蜂鸣器? 具体来说、我们是否可以通过直接写入外设寄存器而无需对 MSP430 闪存进行编程来实现此目的?

    2. 在初始设置期间、当我尝试配置时钟相关寄存器时、我发现对 BCSCTL2 寄存器(地址 0x0058)的写入失败 — 写入操作不会成功。 以下是我使用的命令序列(对寄存器地址进行注释)。 我是否缺少通过 BSL DLL 写入这些寄存器的任何先决条件步骤或特殊序列?

    此外、我在 Elprotronic DLL 文档中找不到与通过直接寄存器写入或 BSL 命令初始化 PWM 等外设相关的任何示例。

    以下是命令行函数调用演示:

    > F_OpenInstancesAndFPAS(“*#*“)
    1.
    > F_Initialization()
    1.
    > F_DISTER Memory_Erase (1)
    1.
    > F_SetConfig (0、1)
    1.
    > F_SetConfig (3、0)
    1.
    > F_DNS( Open_Target_Device )
    1.
    > F_0x5A80 (0x0120、Write_Word)
    1.
    > F_0x0056、Put_Byte_至缓冲器 (0x0000)
    1.
    > F_0x0056、TO_RAM (Copy_Buffer_、2)
    1.
    > F_D8B (0x0056、Write_Word)
    1.
    > F_Copy_RAM_To_Buffer (0x0056、2)
    1.
    > F_0x0056 (Get_Byte_) From_Buffer (0x0056)
    139.
    > F_Copy_RAM_To_Buffer (0x0057、2)
    1.
    > F_0x0057 从缓冲区 (Get_Byte_)
    136.
    > F_0x0058、To_Buffer (Put_Byte_、0x0016)
    1.
    > F_0x0058 至 Copy_Buffer_(2)
    1.
    > F_Copy_RAM_To_Buffer (0x0058、2)
    1.
    > F_0x0058 从缓冲区 (Get_Byte_)
    0


    寄存器地址引用:

    • 0x0056 = BCSCTL1(基本时钟系统控制 1)
    • 0x0057 = DCOCTL(数字控制振荡器控制)
    • 0x0058 = BCSCTL2(基本时钟系统控制 2)

    如您所见、对 BCSCTL1 和 DCOCTL 的写入似乎成功、但对 BCSCTL2 的写入不会持续(回读值为零)。 通过 BSL 进行写入时、该寄存器是否需要任何保护或特殊处理?

    如果您在通过 BSL DLL 接口初始化时钟和 PWM 外设方面有任何见解或示例序列、我将不胜感激。

    再次感谢您的支持。

    此致、
    Kevin

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

    1) 我从来没有听说过 Elpotronic 所以不能帮助这一点。 也许制造商可以提供帮助。

    2) 我不知道你为什么这样使用 BSL。 您编程到器件中的代码应该可以执行所有这些操作。

    当器件复位时、所有这些存入寄存器的值都将消失。 复位通常在开始运行之前发生、并且必须在运行时才能实现这些寄存器设置。