攻城狮66 2025-08-10 18:42 采纳率: 80%
浏览 11
已结题

使用基于DMX512协议的4通道led驱动ic sm16522时,发现系统一上电,所有灯会同时亮一下,而我们的控制器里并没有一上电就同时亮的代码,不知道什么原因

问题:使用基于DMX512协议的4通道led驱动ic sm16522时,发现系统一上电,所有灯会同时亮一下,而我们的控制器里并没有一上电就同时亮的代码,不知道什么原因

img


如图所示为我们的原理图,目前我们可以使用控制器(stm32)实现流水灯功能,但是目前问题关键是在系统上电瞬间,所有灯会同时亮一下才执行流水效果,软件工程师并没有写这个同时亮的控制代码。

  • 写回答

5条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2025-08-10 18:52
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    这种情况可能是由于上电瞬间LED驱动IC SM16522的输出状态未知导致的。一般来说,在上电瞬间,MCU (例如STM32)的输出端口状态是未知的,因此LED驱动IC的输出状态也是未知的,导致LED同时亮一下。 为了解决这个问题,可以在系统上电后,延迟一段时间再进行LED流水灯效果的控制,以让LED驱动IC的输出状态稳定下来。下面是一个示例代码:
    #include <stdio.h>
    #include "stm32f4xx.h"
    void Delay(__IO uint32_t nCount) {
      while(nCount--) {
      }
    }
    int main() {
      // 初始化LED驱动IC
      // ...
      // 延迟一段时间等待系统上电瞬间LED稳定
      Delay(0x7FFFFF);
      while(1) {
        // 控制LED流水灯效果代码
        // ...
      }
    }
    

    通过在系统上电后延迟一段时间再进行LED流水灯效果的控制,可以避免LED同时亮一下的问题。同时,也可以通过在初始化LED驱动IC模块时设定输出状态,避免上电瞬间LED未知状态带来的影响。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月14日
  • 已采纳回答 12月14日
  • 修改了问题 8月10日
  • 修改了问题 8月10日
  • 展开全部