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.

[参考译文] LP55231:发动机仅在下电上电后生效

Guru**** 2460850 points
Other Parts Discussed in Thread: LP55231, LP5812

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1547007/lp55231-engine-only-takes-effect-after-power-cycle

部件号:LP55231
主题: LP5812 中讨论的其他器件

工具/软件:

我使用 LP55231 驱动 LED 序列。 我注意到的是、我写入 LP55231 的程序仅在下电上电后生效。 我认为这不是常见的行为、但我也不确定可能导致这种情况的原因。

以下是我的寄存器写入:

//启用芯片、发动机关闭
WRITE_REGISTER (LP55231_REG_CNTRL10x40);
DELAY_ms (1);
//启用内部时钟和电荷泵并写入自动递增
WRITE_REGISTER (LP55231_REG_MISC0x53);

//发动机 1 加载程序
WRITE_REGISTER (LP55231_REG_CNTRL20x10);
//程序
静态 uint8_t 缓冲器[]=
0x50
0x9C0x10、// 00 映射开始
0x9C0x91// 01 映射结束
0x460x0F、// 02 斜升
0x020x00// 03 等待
0x470x0F、// 04 斜降
0x9d0x80// 05 映射
0xA00x02、// 06 环路至 2
};
WRITE_REGISTER (0x4F0x01);
静态 uint8_t buffer_two[]=
0x50
0x000x43// D2、D1 和 D7
0x000x8C、// D4、D3 和 D8
};
//将引擎 1 起始地址设置为 0
WRITE_REGISTER (0x4C0x00);
//将引擎 1 的程序计数器设置为 0
WRITE_REGISTER (0x370x00);

//引擎 1 运行程序
WRITE_REGISTER (LP55231_REG_CNTRL20x20);
//发动机 1 自由运行
WRITE_REGISTER (LP55231_REG_CNTRL10x60);

我保留了缓冲区的写入周期以提高可读性。

因此、当我运行一次这个代码时、没有明显的情况发生。 当我复位 MCU 时、LED 驱动器会显示上述编程的序列。

代码中是否有问题? 还是这种预期行为?

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

    尊敬的先生:

    我们的专家本周正出差、他将在下周初回复您。 感谢您的耐心!

    BRS

    卢西亚

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

    尊敬的 Laura:

    您能帮助共享您的硬件连接吗?  

    MCU 复位后、EN 信号将如何、代码将再次写入 LP55231?

    谢谢、此致、

    Felix

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

    您好 Felix、

    感谢您的答复。

    驱动器的使能引脚通过内部上拉电阻直接连接到 MCU。 此使能引脚在我的代码中从不驱动为低电平。 切换 ENABLE 引脚是否是使 LP55231 内的程序生效所必需的?

    现在、每次启动时、程序都会写入 LP55231。

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

    尊敬的 Laura:

    我认为没有必要切换 EN 引脚。

    您能否尝试将“发动机 1 运行程序“的步骤移到“发动机 1 自由运行“的步骤后面?

    此致、

    Felix

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

    无论我对 MCU 进行多少次软复位、都会执行“上一个“程序、这都没有所需的效果。 只有在下电上电后、程序才会更新。

    我尝试从映射中移除 D7 和 D8、以更改输出。 这仅在下电上电后有效(这还包括 MCU 复位)。

    我还尝试了将程序写入 LP55231、短暂地下拉使能引脚、并写入以下内容(无效):

    //将引擎 1 起始地址设置为 0
    WRITE_REGISTER (0x4C0x00);
    //将引擎 1 的程序计数器设置为 0
    WRITE_REGISTER (0x370x00);

    //发动机 1 自由运行
    WRITE_REGISTER (LP55231_REG_CNTRL10x60);
    //引擎 1 运行程序
    WRITE_REGISTER (LP55231_REG_CNTRL20x20);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Laura:  

    好的、根据我的理解、问题不是动画在最后两步后没有运行、而是运行模式不是最新存储的程序?

    谢谢、此致、

    Felix

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

    正确:

    下电上电
    MCU 写入程序 A、包括运行(不确定 LP55231 存储器是否为空)
    编程一个可见的
    将新固件加载到 MCU 中(不禁用 LP55231)
    MCU 写入程序 B、包括 RUN(A 可能仍在内存中?)
    编程一个可见的

    下电上电
    MCU 写入程序 B、包括 RUN
    程序 B 可见

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

    编辑:

    这次我分别测试了几件事情...

    关闭电源后、在我的原始 POST 中写入所有内容将按预期工作。 因此、如果我在下电上电后最初写入程序 A、则可以看到程序 A。 问题在于第二次写作。 LP55231 似乎处于使用相同寄存器写入程序 B 不生效的状态。

    我也尝试过:
    下电上电
    写入引擎运行(上述 4 条 WRITE_REGISTER 行)
    不可见(内存为空)
    将程序写入 LP55231(来自原始 POST 的所有调用)
    看不到任何内容

    因此、它似乎处于这 4 次调用中。 有一些东西使驱动程序处于这样一种状态:我最初尝试的编程不起作用。

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

    找到了它! 如果我完全禁用引擎之前做的事情在原来的帖子,它的工作!

    //禁用引擎
    WRITE_REGISTER (LP55231_REG_CNTRL20x00);

    //启用芯片、发动机关闭
    WRITE_REGISTER (LP55231_REG_CNTRL10x40);
    DELAY_ms (1);
    //启用内部时钟和电荷泵并写入自动递增
    WRITE_REGISTER (LP55231_REG_MISC0x53);

    //发动机 1 加载程序
    WRITE_REGISTER (LP55231_REG_CNTRL20x10);

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

    尊敬的 Laura:

    您是否可以在 MISC 寄存器设置后尝试添加步骤 1、在将引擎模式设置为编程模式后尝试添加步骤 2。

    步骤 1:将引擎模式设置为禁用模式 — WRITE_REGISTER (LP55231_REG_CNTRL20x00);//将引擎设置为禁用模式;

    步骤 2:检查引擎繁忙位 — 读取寄存器 0x3A 并检查第 4 位 ENGINE_BUSY、直到为 0、然后延迟 1ms 以执行以下编程。

    谢谢、此致、

    Felix

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

    啊、我想我读过。 使用引擎已经是一个陡峭的学习曲线。

    您的建议也有效、在将发动机设置为加载之前禁用发动机。 将其设置为 LOAD 后、状态/中断寄存器读回 0x58 (START-UP_BUSY、ENGINE_BUSY、EXT_CLK_USED、ENG2_INT)。

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

    尊敬的 Laura:

    好的。 如有任何其他问题、请告知我。

    顺便说一下、我是否可以知道客户是谁以及终端设备是什么?

    我们还发布了全新器件 LP5812、这是一款具有自主动画控制 功能的 12 通道 RGB LED 驱动器、几乎可以涵盖 LP55231 具有的所有功能。

    建议向客户推荐新器件 LP5812。

    此致、

    Felix