打印
[AVR单片机]

Atxmega128A3U控制灯带SK6812RGBW的注意事项

[复制链接]
383|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Liuweixing|  楼主 | 2023-2-16 15:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Atxmega128A3U控制灯带SK6812RGBW的注意事项
由于0”和“1”码都是根据信号宽度判断的,如果在单片机向灯带发送“0”码或“1”码的高电平期间,遇到系统中断,则灯带DI口接收到的高电平宽度可能超出了规格书的要求,导致显示颜色异常。
   
时序表名称
Min.
实际值
Max.
单位
T
码元时间
1.2
--
--
us
T0H
0码,高电平时间
0.2
0.32
0.4
us
T0L
0码,低电平时间
0.8
--
--
us
T1H
1码,高电平时间
0.58
0.64
1.0
us
T1L
1码,低电平时间
0.2
--
--
us
Reset
复位码,低电平时间
>80
--
--
us
1)协议采用单极性归零码,每个码元必须有低电平,本协议的每个码元起始为高电平,高电平时间宽度决定是“0”码还是“1”码;
2)书写程序时,码元周期最低要求为1.2us;
3)“0”码和“1”码的高电平时间按照上表的规定范围,“0”码和“1”码的低电平时间要求小于20us
因此,单片机程序在发送0”码或“1”码高电平前要执行
#asm(cli)
发送完成高电平后执行
#asm(sei)
测试结果,问题依旧。问题依旧的原因可能是低电平时间超过了20us,如果超过了80us,灯带会认为接收到复位信号,下次接收到的32位数据还是用于点亮第一个LED
那么,只能在发送灯带数据前执行
#asm(cli)
在整个灯带数据发送完成后执行
#asm(sei)
再次测试,问题解决。
在程序中打开中断的情况下,不要向灯带发送数据。

使用特权

评论回复
评论
Liuweixing 2023-2-16 15:48 回复TA
找了半天的问题 

相关帖子

沙发
Liuweixing|  楼主 | 2023-5-8 15:28 | 只看该作者
用户不多了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

60

帖子

0

粉丝