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.

[参考译文] LM8330:客户遇到 LM8330 PWM 问题

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/707092/lm8330-customer-got-lm8330-pwm-issue

器件型号:LM8330

尊敬的团队:

 我们的客户使用 LM8330、但遇到 PWM 问题、如下所示

请帮帮我。

尊敬的 Thomas:

 

我们遇到了一些 PWM 问题。 在我们为 LM8330提供 ENABLE、ON 和 dutycycle 命令后、PWM 将拉高至1.8V、但始终保持在1.8V。 当我们向 LM8330提供其他 dutycycle 命令时、PWM 仍保持在1.8V。

似乎可以使用 enable 和 on 命令、但 dutycycle 命令无法控制 PWM 信号。

我们的命令中是否有错误的步骤、或者我们错过了一些值和设置?

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

    我们可以检查一下这个。 您能告诉我们用于设置 PWM 信号的寄存器配置/命令序列吗? 然后、我们可以看到是否需要任何修改。

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

    大家好、Thomas、

    您能告诉我们客户在写入寄存器0x61、0x69和0x71中的这些位的内容是什么吗?:

    您能否确认客户正在使用正确的 GPIO (16-19)?

    -Bobby

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Bobby
    我是 Wistron EE、请与 Thomos 一起查看此项调查。
    对于寄存器0x61、0x69和0x71、我们都会检查这些寄存器、它们都是正确的。
    也是正确的。
    还有其他建议可以尝试更多吗?

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

    肯特、您好、

    您能否向我们提供您要发送器件的寄存器和数据? 这可能有助于我们了解我们无法正确切换 PWM 的原因。

    谢谢、

    -Bobby

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

    您好、Bobby、

    下面显示了我们发送到器件的寄存器和数据。

    下表显示了从开始 PWM 发送到工作 PWM 的数据发送过程。

    寄存器 数据
    0x81 84 (默认值:84)
    0x84 00 (默认值:无)
    0x8B 00 (默认值:00)
    0x03 00 (默认值:22)
    0x88 00 (默认值:00)
    0xA7 11 (默认值:无)
    0x8A 04 (默认值:00)
    0x7D 27 (默认值:00)
    0x7C 12 (默认值:无)
    0x68 00 (默认值:00)
    0x69 06 (默认值:00)
    0x7A 02 (默认值:00)
    0x7B 02 (默认值:00)
    0x88 01 (默认值:00)
    0x91 04 (默认值:00)

    此外、我们还发现寄存器0xD1和0x91的默认值必须为 ff 和80、但 它们在器件中显示0f 和00。

    我们是否有任何寄存器未能向其发送数据?

    谢谢、

    Arthur

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

    你好、Bobby

    由于 Arthur 出现了一些错误、因此更新了该表:

    寄存器

    数据

    0x81

    84 (默认值:00)

    0x84

    01 (默认值:00)

    0x8B

    00 (默认值:00)

    0x03

    00 (默认值:00)

    0x88

    01 (默认值:00)

    0xA7

    11 (默认值:无)

    0x8A

    04 (默认值:00)

    0x7D

    27 (默认值:00)

    0x7C

    12 (默认值:00)

    0x68

    00 (默认值:00)

    0x69

    06 (默认值:00)

    0x7A

    02 (默认值:00)

    0x7B

    02 (默认值:00)

    0x88

    01 (默认值:00)

    0x91

    04 (默认值:00)

    请就此发表评论。

    谢谢

    肯特

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

    你好、Bobby

    下面显示了我们发送到器件的寄存器和数据。

    下表显示了从开始到工作 PWM 发送数据的过程。

    此外、我们还发现寄存器0xD1和0x91的默认数据必须为 ff 和80、但它显示0f 和00。

     

    寄存器

    数据

    0x81

    84 (默认值:84)

    0x84

    01 (默认值:无)

    0x8B

    00 (默认值:00)

    0x03

    00 (默认值:22)

    0x88

    01 (默认值:00)

    0xA7

    11 (默认值:无)

    0x8A

    04 (默认值:00)

    0x7D

    27 (默认值:00)

    0x7C

    12 (默认值:无)

    0x68

    00 (默认值:00)

    0x69

    06 (默认值:00)

    0x7A

    02 (默认值:00)

    0x7B

    02 (默认值:00)

    0x88

    01 (默认值:00)

    0x91

    04 (默认值:00)

                                                                                                                                                                                    

    是否有任何寄存器未能发送?

     

    谢谢、

    Arthur

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

    尊敬的 Arthur:

    我对延迟回复表示歉意。 与我们的其他 I2C 器件相比、该器件实际上是唯一的、因为它使用命令脚本缓冲器。 我不熟悉这种设计、因此我必须联系支持此器件的前一位工程师、以尝试了解其工作原理。 我相信我已经弄清楚了、我想我可能知道您为什么看不到所需的输出。

    根据您提供的信息、我看不到您写入 PWMCFG 寄存器(0x7E)。 我还认为您对 PWMWP 寄存器(0x7D)的写入不正确。 这两个寄存器需要一起用于写入 PWM 端口以生成占空比。 (我相信内部 PWMCFG 被预置为0x00,这意味着它们重复开始脚本....)

    我认为、通过一个示例了解如何正确执行该操作会更容易。

    我要做的示例是将 PWM1端口设置为25%的占空比。

    我们首先需要调整配置寄存器的指针来指向 PWM1脚本缓冲器的第一个地址。 PWM1的这个脚本缓冲指针从32 (十进制)开始、到63 (十进制)结束。

    1)寄存器(0x7D)->数据(0x20h 或32十进制)

    接下来、我们需要在此脚本中写入 SET_PWM_COMMAND、以生成所需的占空比。 与大多数其他寄存器不同、配置寄存器实际上是一个长度为两个字节的字。 设置25%占空比的命令由位0-7控制、其中0x00h 为0%、0xFF 为100%。 这将为我们提供8位的分辨率。 8位的分辨率为我们提供256。 因此,要计算25%,我们需要计算将占空比位设置为:(25%/100%)*256=64 (十进制)以实现25%占空比的值。 需要将高位字节设置为0x40h、以便配置寄存器知道我们要使用的命令是"Set PWM command"。 我们输入的低字节需要为64 (十进制)或0x40才能设置所需的占空比。

    2)寄存器(0x7E)->Data1 (0x40h)->Data2 (0x40h)

    此时请注意:由于我们将两个字节写入配置寄存器、PWMWP 指针现在已移动到0x21h 或十进制的33

    我怀疑该寄存器中的数据(指针指向现在为0x21h 的位置)将是0x00h、因此这将实现"转到开始"命令、该命令将跳转到 PWM1脚本中的第一个命令。

    此时、我们已成功将 PWM 设置为 PWM1的25%占空比。

    如果我们要将 PWM0设置为执行相同的操作、我们将重复此过程、但将 PWMWP 的指针指向0x00h 而不是0x20h。

    请告诉我这是否适合您、

    -Bobby

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

    您好、Bobby、

    我有疑问。 我看到 PWM 脚本命令中有一个分支命令。

    如何获取循环计数和步进数的值? 是否有任何函数可供计算、或者我只提供我喜欢的规格中定义的值?

    谢谢、

    Arthur

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

    循环计数为6位、因此如果您希望循环0次、则将位7到12写入为0、如果您想循环63次、则将位7到12设置为1。 例如、如果您需要33、则会执行100001。

    在这种情况下、步进数不是指每次迭代递增计数器的大小。 步骤编号与地址(您的地址方式)相关如果您将位6设置为零、则将使用绝对寻址模式并跳转到您指定的地址。 如果将位6设置为1、则您现在使用的是相对寻址、并将指针(对于脚本缓冲区)向后移动到指定的数量。 在这种情况下、步进数不是指每次迭代递增计数器的大小。

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

    您好、Bobby、

      当我在 pwm1中设置不同的占空比时、为什么时钟模式更改为睡眠模式?

    谢谢、

    Arthur  

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

    您能告诉我如何为 PWM1编写脚本缓冲区吗? (寄存器和数据)

    当您写入 PWM1缓冲器脚本时、时钟模式不应受到影响。

    您是否意外写入0x8B? 如果您读取该地址、什么是位0?

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

    您好、Bobby、

    我没有将任何值写入0x8B。

      在我第一次为 PWM1写入脚本缓冲器后、器件工作正常。

    当我第二次写入 PWM1的脚本缓冲区时、会发生此错误。

    第一次(dutycycle = 255 (100%))

    0x7D 0x20

    0x7E 0x00 0x00 (GO_TO_START 命令)

    0x7D 0x22

    0x7E 0x01 0x03 (斜坡命令)

    0x7D 0x24

    0x7E 0x40 0xff (设置 PWM 命令)

    0x7D 0x28

    0x7E 0xA0 0x00 (循环命令)

    0x7D 0x30

    0x7E 0xD8 0x00 (结束命令)

    0x7C 0x7E

    0x68 0x00

    0x69 0x06  

    当它完成将0x06写入0x69、 0x7A、0x7B 回读为0x02、0x02。 0x8B 的位0仍然显示0、而0x88的位0显示1。

     第二次(占空比= 127 (50%))

    0x7D 0x20

    0x7E 0x00 0x00 (GO_TO_START 命令)

    0x7D 0x22

    0x7E 0x01 0x82 (斜坡命令)

    0x7D 0x24

    0x7E 0x40 0x7f (设置 PWM 命令)

    0x7D 0x26

    0x7E 0xA0 0x00 (循环命令)

    0x7D 0x28

    0x7E 0xD8 0x00 (结束命令)

    0x7C 0x7E

    0x68 0x00

    0x69 0x06

    当它完成0x06写入0x69、0x7A、0x7B 读回0x10、0x10时、0x8B 的位0仍然显示0、但0x88的位0仍然显示0。

    0x69读回0x00而不是0x06、似乎无法在第二次写入0x69。

    谢谢、

    Arthur

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

    还有一个问题。 在规格中、0x88能够读取和写入。 但我尝试将值写入0x88、它无法正常工作。

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

    您好、Bobby、


    您能告诉我们编写脚本命令的正确步骤是什么? 换句话说,应先写入哪个脚本命令,然后再写入第二个脚本命令,然后写入第三个... 最后一个是哪一个?  

    我们是否遗漏了应写入的任何寄存器?

    谢谢、
    Arthur

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

    如果您有任何答案、请立即回复我们。

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

    您好、Bobby、

    还有另一个问题。 PWM 没有 PWM 必须具有的任何波形、波形在我们首次写入255 (100%)个占空比时获得上拉。

    谢谢、

    Arthur

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

    您好、Arthur、

    我刚才看了您第一次写入脚本缓冲区的值。

    我在这里附上了一些评论:      e2e.ti.com/.../LM8330-customers-script-buffer.txt

    " PWM 没有 PWM 必须具有的任何波形、波形仅在我们首次写入255 (100%)个占空比时获得上拉。"

    此外、请注意、100%占空比只是一个高信号。 (它不会打开和关闭、而只是保持打开状态)

    从我可以看到的内容来看、您可能会不正确地写入脚本。 我将提供一个示例、说明0%至100%程序中50%占空比应该是什么样的。

    下面是一个示例:       e2e.ti.com/.../LM8330-customers-script-buffer-bobbys-revision1.txt

    根据您提供的信息,我看不到设备进入睡眠模式的任何原因。。

    让我们首先尝试使 PWM 脚本正常工作。

    请告诉我提供的示例是否有效/有帮助。

    谢谢、

    -Bobby

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

    您好、Bobby、

    您的示例很有用、但我有一个问题。

    我们的输入电压为1.8V、但按照您的示例、电压仅为1.2V。

    此外、我尝试 仅将命令设置为以下值的测试、电压仅为0.4v。

    0x7D 0x20

    0x7E 0x40 0x7f

    0x00 0x00

    0x7C 0x7E     

    0x68 0x00     

    0x69 0x06      

    然后、我再次尝试上述命令、但仅将 dutycycle 更改为255、电压从0.4v 更改为1.8V。

    您能帮我们解决这个问题吗?

    谢谢、

    Arthur

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

    您好、Arthur、

    "我们的输入电压为1.8V、但我按照您的示例、电压仅为1.2V。"

    1.您说输入电压在变化还是 PWM1 OUT 上的输出电压为1.2V?

    2.如何测量此电压变化? (数字万用表还是示波器?)

    3.您能否提供 PWM1输出的示波器截图?

    4.您是使用内部上拉电阻器还是使用外部上拉电阻器? (是否有您可以向我们展示 LM8330器件的原理图?)

    "然后我再次尝试上述命令、但只将 dutycycle 更改为255、电压从0.4v 更改为1.8V。"

    -这是有道理的。 设置的255位占空比等于100%或始终开启、因此输出电压应等于 Vcc。

    谢谢、

    -Bobby